MySQL 마스터-슬레이브 복제를 설정하는 방법

MySQL 마스터-슬레이브 복제를 설정하는 방법

2022-10-18 last update

7 minutes reading MySQL mysql replication master-slave replication replication
이 기사는 MySQL 서버 간의 마스터-슬레이브 복제를 설정하는 데 도움이 될 것입니다. CentOS 6.3에서 MySQL 5.5를 사용하고 있습니다. 복제 설정에 도움이 되기를 바랍니다. 설정 세부 정보:
Master Server: 192.168.1.10
Slave  Server: 192.168.1.20
Database: mydb
마스터 및 슬레이브에서 서로 다른 버전의 MySQL을 사용하는 경우 호환성을 확인하기 위해 this link을 사용합니다.

1. MySQL 마스터 서버 설정

  • 복제 클라이언트가 마스터에 연결할 REPLICATION SLAVE 권한이 있는 마스터 서버에 mysql 계정을 생성합니다.
  • mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'192.168.1.20' IDENTIFIED BY 'secretpassword';
    mysql> FLUSH PRIVILEGES;
    
  • 모든 테이블에서 쓰기 문을 차단하므로 백업 후 변경 사항이 없습니다.
  • mysql> use mydb;
    mysql> FLUSH TABLES WITH READ LOCK;
    mysql> exit;
    
  • MySQL 구성 파일을 편집하고 [mysqld] 섹션 아래에 다음 줄을 추가합니다.
  • # vim /etc/my.cnf
    
    [mysqld]
    log-bin=mysql-bin
    binlog-do-db=mydb
    server-id=1
    innodb_flush_log_at_trx_commit=1
    sync_binlog=1
    
    
  • 마스터 mysql 서버를 다시 시작하여 변경 사항을 적용하십시오.
  • # service mysqld restart
    
  • 다음 명령어를 사용하여 현재 바이너리 로그 파일명(File)과 현재 오프셋(Position) 값을 확인한다.
  • mysql > SHOW MASTER STATUS;
    +------------------+----------+--------------+------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +------------------+----------+--------------+------------------+
    | mysql-bin.000002 |      107 | mydb         |                  |
    +------------------+----------+--------------+------------------+
    
    위의 출력은 현재 바이너리 파일이 mysql-bin.000002를 사용하고 있고 오프셋 값이 107임을 보여줍니다. 슬레이브 서버에서 사용하려면 이 값을 기록해 둡니다.
  • 데이터베이스를 백업하여 슬레이브 mysql 서버에 복사합니다.
  • # mysqldump -u root -p mydb > mydb.sql
    # scp mydb.sql 192.168.1.20:/opt/
    
  • 백업 완료 후 테이블에서 READ LOCK을 제거하면 변경이 가능합니다.
  • mysql> UNLOCK TABLES;
    

    2. MySQL 슬레이브 서버 설정

  • salve mysql 구성 파일을 편집하고 [mysqld] 섹션 아래에 다음 값을 추가합니다.
  • # vim /etc/my.cnf
    
    [mysqld]
    server-id=2
    replicate-do-db=mydb
    
    server-id는 항상 0이 아닌 숫자 값입니다. 이 값은 다른 마스터 및 슬레이브 서버와 결코 유사하지 않습니다.
  • mysql 슬레이브 서버를 다시 시작합니다. 복제를 이미 구성한 경우 시작에서 –skip-slave-start를 사용하여 마스터 서버에 즉시 연결하지 않도록 합니다.
  • # /etc/init.d/mysqld restart
    
  • 마스터 서버에서 가져온 데이터베이스 백업을 복원합니다.
  • # mysql -u root -p mydb < mydb.sql
    
  • 다음 명령을 사용하여 슬레이브 서버에서 옵션 값을 설정합니다.
  • mysql>  CHANGE MASTER TO MASTER_HOST='192.168.1.10',
        -> MASTER_USER='repl_user',
        -> MASTER_PASSWORD='secretpassword',
        -> MASTER_LOG_FILE='mysql-bin.000002',
        -> MASTER_LOG_POS=107;
    
  • 마지막으로 슬레이브 스레드를 시작하십시오.
  • mysql> SLAVE START;
    
  • 슬레이브 서버의 상태를 확인하십시오.
  • mysql> show slave status G
    
    *************************** 1. row ***************************
                   Slave_IO_State:
                      Master_Host: 192.168.1.15
                      Master_User: repl_user
                      Master_Port: 3306
                    Connect_Retry: 60
                  Master_Log_File: mysql-bin.000002
              Read_Master_Log_Pos: 107
                   Relay_Log_File: mysqld-relay-bin.000001
                    Relay_Log_Pos: 4
            Relay_Master_Log_File: mysql-bin.000002
                 Slave_IO_Running: No
                Slave_SQL_Running: No
                  Replicate_Do_DB: mydb
              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: 107
                  Relay_Log_Space: 107
                  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: NULL
    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: 1
    1 row in set (0.00 sec)
    mysql>
    
    MySQL 마스터-슬레이브 복제가 시스템 및 작업 모드에서 성공적으로 구성되었습니다. 이 튜토리얼을 사용해 주셔서 감사합니다. 친구들과 공유하는 것을 잊지 마세요.