집 >데이터 베이스 >MySQL 튜토리얼 >MySQL 마스터-마스터 복제를 설정하는 방법
MySQL 마스터-마스터 복제를 설정하는 방법 마스터-슬레이브 복제는 마스터 서버가 변경을 완료하는 즉시 슬레이브 서버가 업데이트되도록 설정하는 것입니다. 그러나 슬레이브 서버가 변경되면 마스터가 업데이트되지 않습니다. 이 기사에서는 MySQL 마스터-마스터 복제를 설정하는 방법 서버 간의 마스터-마스터 복제 설정을 소개합니다.
이 설정에서는 한 서버에서 변경된 내용이 다른 서버에서도 업데이트됩니다.
설정 세부 정보:
Master-1: 192.168.1.15 Master-2: 192.168.1.16 Database: mydb
1단계: MySQL 마스터-마스터 복제를 설정하는 방법 Master-1 서버 설정
MySQL 마스터-마스터 복제를 설정하는 방법 구성 파일을 편집하고 [mysqld] 섹션 아래에 다음 코드를 추가합니다.
# vim /etc/my.cnf
[mysqld] log-bin=mysql-bin binlog-do-db=mydb server-id=1
변경 사항을 적용하려면 MySQL 마스터-마스터 복제를 설정하는 방법 서버를 다시 시작하세요.
# service mysqld restart
Master-1 서버에 REPLICATION SLAVE 권한이 있는 mysql 계정을 생성하면 복제 클라이언트가 마스터에 연결됩니다.
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%' IDENTIFIED BY 'secretpassword'; mysql> FLUSH PRIVILEGES;
모든 테이블에 block write 문이 있어 백업 이후에는 변경이 불가능합니다.
mysql> use mydb; mysql> FLUSH TABLES WITH READ LOCK;
현재 바이너리 로그 파일명(File)과 현재 오프셋(Position) 값을 확인하려면 다음 명령어를 사용하세요.
mysql> SHOW MASTER STATUS; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000003 | 332 | mydb | | +------------------+----------+--------------+------------------+ 1 row in set (0.00 sec)
위 출력은 현재 바이너리가 오프셋 332와 함께 mysql-bin.000003을 사용하고 있음을 보여줍니다. 다음 단계에서 master-2 서버에 사용할 수 있도록 이러한 값을 기록해 두세요.
데이터베이스를 백업하고 다른 mysql 서버에 복사하세요.
# mysqldump -u root -p mydb > mydb.sql # scp mydb.sql 192.168.1.16:/opt/
백업 완료 후 변경이 가능하도록 테이블에서 READ LOCK을 제거하세요.
mysql> UNLOCK TABLES;
2단계: MySQL 마스터-마스터 복제를 설정하는 방법 Master-2 서버 설정
mysql Master-2 구성 파일을 편집하고 [mysqld] 섹션 아래에 다음 값을 추가합니다.
#vim /etc/my.cnf [mysqld] log-bin = mysql-bin binlog-do-db = mydb server-id = 1
server-id는 항상 0이 아닌 값입니다. 이러한 값은 다른 마스터나 슬레이브와 결코 유사하지 않습니다.
MySQL 마스터-마스터 복제를 설정하는 방법 서버를 다시 시작하세요. 복제가 구성된 경우 시작 시 -skip-slave-start를 사용하세요. 마스터 서버에 즉시 연결하지 마세요.
#service mysqld restart
마스터 서버에서 가져온 데이터베이스 백업을 복원합니다.
#mysql -u root -p mydb </opt/mydb.sql
Master-1 서버에 REPLICATION SLAVE 권한이 있는 mysql 계정을 생성하면 복제 클라이언트가 마스터에 연결됩니다.
mysql> GRANT REPLICATION SLAVE ON *.*''repl_user'@'%'IDENTIFIED BY'secretpassword'; mysql> FLUSH PRIVILEGES;
현재 바이너리 로그 파일명(File)과 현재 오프셋(Position) 값을 확인하려면 다음 명령어를 사용하세요.
mysql > SHOW MASTER STATUS; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000001 | 847 | mydb | | +------------------+----------+--------------+------------------+ 1 row in set (0.00 sec)
위 출력은 현재 바이너리가 오프셋 847의 mysql-bin.000001을 사용하고 있음을 보여줍니다. 3단계에서 사용할 수 있도록 이 값을 기록해 두세요.
슬레이브 서버의 옵션 값을 설정하려면 다음 명령을 사용하세요.
mysql> CHANGE MASTER TO MASTER_HOST ='192.168.1.15', - > MASTER_USER ='repl_user', - > MASTER_PASSWORD ='secretpassword', - > MASTER_LOG_FILE ='mysql-bin.000003', - > MASTER_LOG_POS = 332;
3단계: MySQL 마스터-마스터 복제를 설정하는 방법 Master-1 설치 완료
MySQL 마스터-마스터 복제를 설정하는 방법 Master-1 서버에 로그인하고 다음 명령을 실행합니다.
mysql> CHANGE MASTER TO MASTER_HOST ='192.168.1.16', MASTER_USER ='repl_user', MASTER_PASSWORD ='secretpassword', MASTER_LOG_FILE ='mysql-bin.000001', MASTER_LOG_POS = 847;
4단계: 두 서버 모두에서 SLAVE 시작
두 서버 모두에서 다음 명령을 실행하여 복제 슬레이브 프로세스를 시작합니다.
mysql> SLAVE START;
MySQL 마스터-마스터 복제를 설정하는 방법 마스터-마스터 복제가 시스템 및 작업 모드에서 성공적으로 구성되었습니다. 복제가 제대로 작동하는지 테스트하려면 두 서버 중 하나를 변경하고 변경 사항이 다른 서버에 반영되는지 확인하세요.
위 내용은 MySQL 마스터-마스터 복제를 설정하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!