>  기사  >  데이터 베이스  >  두 대의 mysql 서버가 이중 머신 상호 백업 구성 및 테스트 데이터 동기화를 실현합니다.

두 대의 mysql 서버가 이중 머신 상호 백업 구성 및 테스트 데이터 동기화를 실현합니다.

php是最好的语言
php是最好的语言원래의
2018-08-02 17:17:503211검색

이 글에서는 두 머신의 상호 백업 구성에 대해 자세히 소개합니다. 테스트 데이터가 동기화된 후 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.44

10.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 데이터베이스의 해당 테이블에서 데이터를 확인합니다.

두 대의 mysql 서버가 이중 머신 상호 백업 구성 및 테스트 데이터 동기화를 실현합니다.

동기화되었습니다.

두 대의 mysql 서버가 이중 머신 상호 백업 구성 및 테스트 데이터 동기화를 실현합니다. 반대로 10.168.0.126의 데이터를 수정하면 10.168.1.44 데이터베이스에서도 해당 테이블 데이터의 변경 사항을 확인할 수 있습니다.

이 시점에서 10.168.0.126과 10.168.1.44 사이의 상호 마스터-슬레이브 데이터베이스 관계

두 대의 mysql 서버가 이중 머신 상호 백업 구성 및 테스트 데이터 동기화를 실현합니다.

이 있을 수 있습니다. 문제#🎜🎜 #

슬레이브 상태를 확인하면 Slave_IO_Running: Connecting이 표시됩니다. #🎜🎜 #이 문제에는 세 가지 주요 이유가 있습니다.

  1. # 🎜🎜#네트워크를 사용할 수 없습니다(서로 핑) 다음을 시도하여 핑이 가능한지 확인하세요. 슬레이브 구성 시 실행한 명령어의 비밀번호가 정확합니다#🎜 🎜#

위치가 올바르지 않음: 슬레이브 구성 시 해당 위치가 맞지 않습니다. 올바른 위치에 채워넣었습니다. (슬레이브 서버 데이터베이스에 해당하는 마스터 상태를 확인하면 show master status를 찾을 수 있습니다)

이 문제가 발생하는 이유는 데이터 동기화에 사용되는 'copyuser'라는 사용자가 한 서버에서만 생성되고, 다른 서버의 데이터베이스에는 해당 사용자가 생성되지 않기 때문입니다. 생성 후에는 괜찮습니다.

4. 슬레이브 상태를 확인하면 Slave_SQL_Running: No

이 현상이 나타나는 주된 이유는 두 데이터베이스의 데이터에 차이가 있기 때문입니다. mysql 로그를 보면 이상합니다

Mysql 로그는 일반적으로 /var/log/mysqld.log

슬레이브 데이터베이스만 마스터 데이터베이스 데이터와 동기화하도록 구성하고 각각 동기화하도록 설정하지 않는 경우 주의해야 합니다. 그렇지 않으면 슬레이브 데이터베이스 데이터를 수정하면 동기화가 실패할 수 있습니다.

관련 기사:

Mysql 데이터베이스 이중 머신 핫 백업 구성_MySQL

Mysql 실시간 동기화 - 이중 머신 상호 백업(이중 마스터)

관련 동영상:

MySQL 데이터 관리 백업 및 복구 사례 분석 영상 튜토리얼

위 내용은 두 대의 mysql 서버가 이중 머신 상호 백업 구성 및 테스트 데이터 동기화를 실현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.