>데이터 베이스 >MySQL 튜토리얼 >MySQL 마스터-마스터 복제를 설정하는 방법

MySQL 마스터-마스터 복제를 설정하는 방법

不言
不言원래의
2019-03-05 11:12:253138검색

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 *.*&#39;&#39;repl_user&#39;@&#39;%&#39;IDENTIFIED BY&#39;secretpassword&#39;; 
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 =&#39;192.168.1.15&#39;,
    - > MASTER_USER =&#39;repl_user&#39;,
    - > MASTER_PASSWORD =&#39;secretpassword&#39;,
    - > MASTER_LOG_FILE =&#39;mysql-bin.000003&#39;,
    - > MASTER_LOG_POS = 332;

3단계: MySQL 마스터-마스터 복제를 설정하는 방법 Master-1 설치 완료

MySQL 마스터-마스터 복제를 설정하는 방법 Master-1 서버에 로그인하고 다음 명령을 실행합니다.

mysql> CHANGE MASTER TO MASTER_HOST =&#39;192.168.1.16&#39;,
     MASTER_USER =&#39;repl_user&#39;,
     MASTER_PASSWORD =&#39;secretpassword&#39;,
     MASTER_LOG_FILE =&#39;mysql-bin.000001&#39;,
     MASTER_LOG_POS = 847;


4단계: 두 서버 모두에서 SLAVE 시작

두 서버 모두에서 다음 명령을 실행하여 복제 슬레이브 프로세스를 시작합니다.

mysql> SLAVE START;

MySQL 마스터-마스터 복제를 설정하는 방법 마스터-마스터 복제가 시스템 및 작업 모드에서 성공적으로 구성되었습니다. 복제가 제대로 작동하는지 테스트하려면 두 서버 중 하나를 변경하고 변경 사항이 다른 서버에 반영되는지 확인하세요.

위 내용은 MySQL 마스터-마스터 복제를 설정하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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