
MySQL 마스터-슬레이브 복제를 설정하는 방법
2022-10-18 last update
7 minutes reading MySQL mysql replication master-slave replication replication이 기사는 MySQL 서버 간의 마스터-슬레이브 복제를 설정하는 데 도움이 될 것입니다. CentOS 6.3에서 MySQL 5.5를 사용하고 있습니다. 복제 설정에 도움이 되기를 바랍니다. 설정 세부 정보: 복제 클라이언트가 마스터에 연결할 REPLICATION SLAVE 권한이 있는 마스터 서버에 mysql 계정을 생성합니다. 모든 테이블에서 쓰기 문을 차단하므로 백업 후 변경 사항이 없습니다. MySQL 구성 파일을 편집하고 [mysqld] 섹션 아래에 다음 줄을 추가합니다. 마스터 mysql 서버를 다시 시작하여 변경 사항을 적용하십시오. 다음 명령어를 사용하여 현재 바이너리 로그 파일명(File)과 현재 오프셋(Position) 값을 확인한다. 데이터베이스를 백업하여 슬레이브 mysql 서버에 복사합니다. 백업 완료 후 테이블에서 READ LOCK을 제거하면 변경이 가능합니다. salve mysql 구성 파일을 편집하고 [mysqld] 섹션 아래에 다음 값을 추가합니다. mysql 슬레이브 서버를 다시 시작합니다. 복제를 이미 구성한 경우 시작에서 –skip-slave-start를 사용하여 마스터 서버에 즉시 연결하지 않도록 합니다. 마스터 서버에서 가져온 데이터베이스 백업을 복원합니다. 다음 명령을 사용하여 슬레이브 서버에서 옵션 값을 설정합니다. 마지막으로 슬레이브 스레드를 시작하십시오. 슬레이브 서버의 상태를 확인하십시오.
Master Server: 192.168.1.10 Slave Server: 192.168.1.20 Database: mydb마스터 및 슬레이브에서 서로 다른 버전의 MySQL을 사용하는 경우 호환성을 확인하기 위해 this link을 사용합니다.
1. 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;
# 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
# service mysqld restart
mysql > SHOW MASTER STATUS; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000002 | 107 | mydb | | +------------------+----------+--------------+------------------+위의 출력은 현재 바이너리 파일이 mysql-bin.000002를 사용하고 있고 오프셋 값이 107임을 보여줍니다. 슬레이브 서버에서 사용하려면 이 값을 기록해 둡니다.
# mysqldump -u root -p mydb > mydb.sql # scp mydb.sql 192.168.1.20:/opt/
mysql> UNLOCK TABLES;
2. MySQL 슬레이브 서버 설정
# vim /etc/my.cnf
[mysqld] server-id=2 replicate-do-db=mydbserver-id는 항상 0이 아닌 숫자 값입니다. 이 값은 다른 마스터 및 슬레이브 서버와 결코 유사하지 않습니다.
# /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 마스터-슬레이브 복제가 시스템 및 작업 모드에서 성공적으로 구성되었습니다. 이 튜토리얼을 사용해 주셔서 감사합니다. 친구들과 공유하는 것을 잊지 마세요.