집 >데이터 베이스 >MySQL 튜토리얼 >두 대의 mysql 서버가 이중 머신 상호 백업 구성 및 테스트 데이터 동기화를 실현합니다.
이 글에서는 두 머신의 상호 백업 구성에 대해 자세히 소개합니다. 테스트 데이터가 동기화된 후 10.168.1.44 서버 데이터베이스에서 데이터 일부가 수정되고, 이미 동기화된 데이터를 볼 수 있습니다. 반대로 10.168.0.126의 데이터를 수정하면 10.168.1.44 데이터베이스에서도 해당 테이블 데이터의 변경 사항을 확인할 수 있습니다. 이 시점에서 10.168.0.126과 10.168.1.44는 서로 마스터-슬레이브 데이터베이스 관계를 갖습니다.
추천 관련 mysql 비디오 튜토리얼: "mysql tutorial"
apache php mysql
# 🎜🎜#사전 준비
서버 2개: 10.168.1.4410.168.0.126 # 🎜🎜 #실행환경 : Linux system (Centos6.5)
Mysql 버전 : 5.7.22
수정 구성 두 서버의 /etc/my.conf 구성 파일 정보를 다음과 같이 수정합니다. 10.168 .1.44에서
server/etc/my.conf 구성 파일에 추가합니다:
server_id=10
log-bin=master_01 //바이너리 로그를 활성화하여 다른 서버가 이를 사용할 수 있도록 합니다. 실행 작업 결정을 위한 로그
binlog-do-db=test_db //동기화 테이블
binlog-do-db=my_test //동기화 테이블#🎜🎜 ##🎜 🎜#10.168.0.126 server/etc/my.conf 구성 파일에 추가:
server_id=20
log-bin=master_02 //바이너리 로그 활성화, 기능 로그
binlog-do-db=test_db //동기화된 테이블
binlog-do-db=my_test / /Synchronized table을 통해 다른 서버가 실행 작업을 결정할 수 있다는 것입니다.
추가한 후 service mysqld restart 명령을 실행하여 데이터베이스를 다시 시작하여 수정 사항을 적용하세요
mysql 계정 추가# 🎜🎜 #mysql 계정을 추가하고 승인된 사용자에게 권한을 부여하여 데이터 동기화를 수행합니다. 10.168.1.44 명령 실행:
GRANT FILE ON *.* TO 'copyuser'@'10.168.0.126' IDENTIFIED BY 'Admin@123'; GRANT REPLICATION SLAVE ON *.* TO 'copyuser'@'10.168.0.126' IDENTIFIED BY 'Admin@123'; flush privileges;#🎜 🎜#10.168.0.126 명령 실행:
GRANT FILE ON *.* TO 'copyuser'@'10.168.1.44' IDENTIFIED BY 'Admin@123'; GRANT REPLICATION SLAVE ON *.* TO 'copyuser'@'10.168.1.44' IDENTIFIED BY 'Admin@123'; flush privileges;슬레이브 데이터베이스 구성
#🎜 🎜 ##🎜 🎜#10.168.1.44 구성: 현재 마스터 데이터베이스 상태 보기: mysql> show master status;현재 기록 파일 및 위치 값
기본 데이터베이스 상태를 보려면 데이터베이스에 액세스하려면 10.168.0.126을 입력하세요.
10.168.1.44에서 실행
mysql>CHANGE MASTER TO MASTER_HOST='10.168.0.126', MASTER_USER='copyuser', MASTER_PASSWORD='Admin@123', MASTER_PORT=3306, MASTER_LOG_FILE='master_02.000002', MASTER_LOG_POS=1771, MASTER_CONNECT_RETRY=10; 在10.168.0.126执行: mysql>CHANGE MASTER TO MASTER_HOST='10.168.1.44', MASTER_USER='copyuser', MASTER_PASSWORD='Admin@123', MASTER_PORT=3306, MASTER_LOG_FILE='master_01.000008', MASTER_LOG_POS=154, MASTER_CONNECT_RETRY=10; 注:若slave开启状态无法执行以上命令,需要首先执行 stop slave;关闭slave,执行完上述命令后执行start slave;命令开启slave。 上述命令执行完后,查看从服务状态: 执行命令: mysql> show slave status\G; *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 10.168.1.44 Master_User: copyuser Master_Port: 3306 Connect_Retry: 10 Master_Log_File: master_01.000008 Read_Master_Log_Pos: 154 Relay_Log_File: cdh-2-relay-bin.000004 Relay_Log_Pos: 367 Relay_Master_Log_File: master_01.000008 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 154 Relay_Log_Space: 740 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: No Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 0 Master_SSL_Verify_Server_Cert: No Last_IO_Errno: 0 Last_IO_Error: Last_SQL_Errno: 0 Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id: 10 Master_UUID: 778beb1e-8f0f-11e8-a815-00505695cd8c Master_Info_File: /var/lib/mysql/master.info SQL_Delay: 0 SQL_Remaining_Delay: NULL Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates Master_Retry_Count: 86400 Master_Bind: Last_IO_Error_Timestamp: Last_SQL_Error_Timestamp: Master_SSL_Crl: Master_SSL_Crlpath: Retrieved_Gtid_Set: Executed_Gtid_Set: Auto_Position: 0 Replicate_Rewrite_DB: Channel_Name: Master_TLS_Version: 1 row in set (0.00 sec)
Slave_IO_Running: Yes 및 Slave_SQL_Running: Yes
, 둘 다 yes인 경우에만 구성이 성공합니다.
테스트 데이터 동기화
데이터 수정: 수정 전:
수정 후: #🎜 🎜# 10.168.0.126 데이터베이스의 해당 테이블에서 데이터를 확인합니다. 동기화되었습니다.반대로 10.168.0.126의 데이터를 수정하면 10.168.1.44 데이터베이스에서도 해당 테이블 데이터의 변경 사항을 확인할 수 있습니다.
이 시점에서 10.168.0.126과 10.168.1.44 사이의 상호 마스터-슬레이브 데이터베이스 관계
이 있을 수 있습니다. 문제#🎜🎜 #
슬레이브 상태를 확인하면 Slave_IO_Running: Connecting이 표시됩니다. #🎜🎜 #이 문제에는 세 가지 주요 이유가 있습니다.
# 🎜🎜#네트워크를 사용할 수 없습니다(서로 핑) 다음을 시도하여 핑이 가능한지 확인하세요. 슬레이브 구성 시 실행한 명령어의 비밀번호가 정확합니다#🎜 🎜#
위치가 올바르지 않음: 슬레이브 구성 시 해당 위치가 맞지 않습니다. 올바른 위치에 채워넣었습니다. (슬레이브 서버 데이터베이스에 해당하는 마스터 상태를 확인하면 show master status를 찾을 수 있습니다)
이 문제가 발생하는 이유는 데이터 동기화에 사용되는 'copyuser'라는 사용자가 한 서버에서만 생성되고, 다른 서버의 데이터베이스에는 해당 사용자가 생성되지 않기 때문입니다. 생성 후에는 괜찮습니다.
4. 슬레이브 상태를 확인하면 Slave_SQL_Running: No
이 현상이 나타나는 주된 이유는 두 데이터베이스의 데이터에 차이가 있기 때문입니다. mysql 로그를 보면 이상합니다
Mysql 로그는 일반적으로 /var/log/mysqld.log
슬레이브 데이터베이스만 마스터 데이터베이스 데이터와 동기화하도록 구성하고 각각 동기화하도록 설정하지 않는 경우 주의해야 합니다. 그렇지 않으면 슬레이브 데이터베이스 데이터를 수정하면 동기화가 실패할 수 있습니다.
관련 기사:
Mysql 데이터베이스 이중 머신 핫 백업 구성_MySQL
Mysql 실시간 동기화 - 이중 머신 상호 백업(이중 마스터)
관련 동영상:
MySQL 데이터 관리 백업 및 복구 사례 분석 영상 튜토리얼
위 내용은 두 대의 mysql 서버가 이중 머신 상호 백업 구성 및 테스트 데이터 동기화를 실현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!