2. DBMS이야기/02. MySQL

MySQL에서 Master-Master Replication 셋팅 방법①

OSSW(Open Source System SoftWare 2014. 11. 19. 15:56

MySQL의 복제는 MySQL 데이터베이스에 저장 한 데이터 세트가 두 번째 서버로 라이브 복사되는 과정입니다.

"마스터 - 슬레이브"복제라고하는이 구성은 일반적인 설정입니다.

마스터 마스터 복제는 데이터가 다른 하나에 두 서버에서 복사 할 수 있기 때문에 우리의 설정은,보다 더 좋을 것입니다.

이 미묘하지만 중요한 차이는 우리가 MySQL을 읽거나 하나를 서버에서 쓰기를 수행 할 수 있습니다.

이 구성은 리던던시를 추가하고, 데이터 액세스를 처리 할 때 효율을 증가시킵니다.


이 문서의 예는, 두 VPS를 기반으로 서버 C 및 서버 D에 지정됩니다.


Server C: 3.3.3.3

Server D: 4.4.4.4

Step 1 - Install and Configure MySQL on Server C

우리가해야 할 첫 번째 일은 우리의 서버에 MySQL의 서버와 MySQL 클라이언트 패키지를 설치하는 것입니다. 우리는 다음을 입력하여 해당 작업을 수행 할 수 있습니다 :
sudo apt-get install mysql-server mysql-client
기본적으로 MySQL의 프로세스는 로컬 호스트 (127.0.0.1)에 연결을 허용합니다.
  이 기본 동작을 변경하고 복제가 제대로 작동하는 데 필요한 몇 가지 다른 설정을 변경하려면, 우리는 서버 C.에 /etc/mysql/my.cnf 편집해야 현재 다음으로 설정됩니다. 우리가 변경해야 할 네 가지 라인 :
#server-id              = 1
#log_bin                = /var/log/mysql/mysql-bin.log
#binlog_do_db           = include_database_name
bind-address            = 127.0.0.1

그 라인의 첫 번째 고유 우리 복제 구성에서, 우리의 특정 서버를 식별하는 것입니다.

우리는 이전에 "#"을 제거하여, 그 행의 주석을 해제해야합니다. 두 번째 줄은 MySQL 데이터베이스를 변경하거나 테이블이 로그인 할 수있는 파일을 나타냅니다.


세 번째 라인은 우리가 우리의 서버간에 복제 할 데이터베이스를 나타냅니다.

당신이 원하는만큼이 라인에 많은 데이터베이스를 추가 할 수 있습니다.

이 기사는 단순성의 목적을 위해 "예"라는 이름의 단일 데이터베이스를 사용합니다.

그리고 마지막 줄 (127.0.0.1에서 수신하지 않음으로써) 인터넷 연결을 허용하기 위해 서버를 알려줍니다.

server-id               = 1
log_bin                 = /var/log/mysql/mysql-bin.log
binlog_do_db            = example
# bind-address            = 127.0.0.1

이제 우리는 MySQL의를 다시 시작해야합니다 :

sudo service mysql restart
우리는 다음 우리의 MySQL 인스턴스 내에서 일부 명령 줄 설정을 변경해야합니다. 돌아 가기 우리의 쉘에서, 우리는 다음을 입력하여 우리의 루트 MySQL 사용자를 얻을 수 있습니다 :
mysql -u root -p 
이 명령은 그 루트 MySQL 사용자를 묻는 메시지를 표시하니, 암호를 주의하시기 바랍니다.
당신은 MySQL의 쉘에 로그인되어 있는지 확인하기위해 프롬프트는 mysql> 과 같아야합니다.
mysql> 
우리가 로그인하면, 우리는 몇 가지 명령을 실행해야합니다.
우리는 우리의 두 VPS 사이에 데이터를 복제에 사용되는 가상 사용자를 작성해야합니다.
이 문서의 예제에서는이 사용자 "복제"를 이름을 가정합니다.
복제를 위해 사용하고자하는 암호로 "password"를 교체합니다.
create user 'replicator'@'%' identified by 'password'; 
다음으로, 우리는 우리의 MySQL의 데이터를 복제하려면이 사용자 권한을 부여해야합니다

grant replication slave on *.* to 'replicator'@'%'; 
복제에 대한 권한은, 불행하게도, 데이터베이스 당 기준으로 부여 할 수 없습니다. 우리 사용자는 우리가 설정 파일에 지시하는 데이터베이스들을 복제합니다.
초기 서버 C 구성의 최종 단계를 들어, 우리는 현재의 MySQL의 인스턴스에 대한 정보를 얻을 필요로 우리가 나중에 서버 D.에 제공 할 것입니다 
다음 명령 출력됩니다 우리가 주목해야 할 중요한 정보가됩니다, :
show master status; 
출력은 다음과 비슷하게 보는 것, 중요한 두 가지 정보를해야합니다 :
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |      107 | example      |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
우리는 다음 단계에서 사용되는 파일과 위치의 설명을 작성해야합니다.








by 윤성용