환경:
두 서버 A와 B에는 각각 mysql-5.7.18 서버가 설치되어 있으며 서로의 마스터와 슬레이브를 동기화하도록 구성되어 있습니다.
리눅스 시스템 버전은 CentOS7입니다
A 서버 ip: 192.168.1.7 호스트 이름: test1
B 서버 ip: 192.168.1.8 호스트 이름: test2
(동일 LAN 하)
1. 준비
1 . 호스트 이름 수정 命 명령: HostnameCTL SET-Hostname xxx
(호스트 이름 보기 명령: 호스트 이름)
2. 방화벽 끄기
1) 방화벽 상태 보기
2) 방화벽이 실행 중입니다. 먼저 종료하세요. 방화벽 서비스 다운 명령: systemctl 마스크 방화벽d 3) 방화벽 끄기 명령: systemctl stop Firewalld 4) 방화벽 상태 확인 명령: Firewall-cmd --state
결과: 실행되지 않음 3. selinux 정책 끄기 1) selinux 실행 상태 확인 명령어: getenforce ductcredlegum selinux 파일vi /etc/sysconfig/selinux 수정 SELINUX=disabled
3) 폐쇄상태로
2. 마스터 서버(master) 슬레이브 서버(slave) 구성
1. 서버 A vi /etc/my.cnf의 my.cnf 파일을 열고 파일의 [mysqld] 아래에 다음 내용을 추가합니다
server-id=1 #반드시 다른 서버와 달라야 하며, 1~232 사이의 양의 정수 값이어야 합니다. server-id 값만 변경하세요.log-bin=mysql-bin log-bin-index=mysql-bin
생성 명령:
server-id=2 log-bin=mysql-bin log-bin-index=mysql-bin
백업 명령:
touch /var/lib/mysql/all.sql
복구를 위해 all.sql 파일을 서버 B의 특정 경로(예: /var/lib/mysql 경로)에 복사합니다.
복원 명령:
[root@test1 mysql]# mysqldump -uroot -p123 --all-databases > /var/lib/mysql/all.sql
3. 서버 A와 B의 mysql에 동기화를 위한 사용자를 생성합니다.
사용자 생성:[root@test2 /]# mysql -uroot -p123 < /var/lib/mysql/all.sql
mysql> create user 'tongbu'@'%' identified by 'tongbu';
mysql> grant all on *.* to 'tongbu'@'%';
mysql> drop user '用户名'@'%';
[root@test1 /]# mysql -utongbu -ptongbu -h192.168.1.8 [root@test2 /]# mysql -utongbu -ptongbu -h192.168.1.7
5. B를 마스터 서버로, A를 슬레이브 서버로 설정합니다.
1) 서버 B의 mysql에서 바이너리 로그 이름 및 오프셋 보기
명령: mysql> show master statusG
2) 서버 A에 연결 서버를 구성합니다.
mysql> stop slave; mysql> change master to -> master_host='192.168.1.7', -> master_user='tongbu', -> master_password='tongbu', -> master_log_file='mysql-bin.000024', -> master_log_pos=154; mysql> start slave;
이 시점에서 두 개의 mysql 데이터베이스는 마스터-슬레이브로 구성되어 서로 동기화됩니다.
오류 문제 해결:
1. Slave_IO_Running 상태 오류 MySQL> showslave statusG;를 확인할 때 Slave_IO_Running 상태는 연결 오류입니다. 구성을 확인해야 합니다. 1) 네트워크 접속 불가 2) 잘못된 비밀번호, 잘못된 계좌번호, 잘못된 주소 등 잘못된 계정 권한 구성3) 바이너리 파일의 잘못된 위치
2. 1차 데이터와 2차 데이터의 충돌이나 차이로 인한 이상
主键冲突、表已存在等错误代码如1062,1032,1060等,可以在mysql配置文件指定略过此类异常并继续下条sql同步,这样可以避免很多主从同步的异常中断。打开/etc/ mysql下的my.cnf文件,在[mysqld]后添加如下代码:
slave-skip-errors = 1062,1032,1060
3. 跳过异常恢复同步
mysql >slave stop; mysql >SET GLOBAL sql_slave_skip_counter = 1; mysql >slave start;
위 내용은 MYSQL 듀얼 마스터 전체 데이터베이스 동기 복제의 자세한 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!