이 글에서는 MySQL 서버 간 마스터-슬레이브 복제 설정에 대해 소개합니다. 구체적인 내용을 살펴보겠습니다.
설정 내용:
마스터 서버: 192.168.1.10
슬레이브 서버: 192.168.1.20
데이터베이스: mydb
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 | | +------------------+----------+--------------+------------------+
위 출력은 현재 바이너리가 오프셋 107과 함께 mysql-bin.000002를 사용하고 있음을 보여줍니다. 슬레이브 서버에서 사용하려면 이 값을 기록해 두세요.
데이터베이스를 백업하고 슬레이브 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> 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 마스터-슬레이브 복제가 시스템 및 작업 모드에서 성공적으로 구성되었습니다.
위 내용은 MySQL 마스터-슬레이브 복제를 설정하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!