2. DBMS이야기/02. MySQL

Downtime 없이 MySQL Replication을 설정하기

OSSW(Open Source System SoftWare 2014. 11. 19. 16:30

MySQL 데이터베이스를위한 마스터 - 슬레이브 복제의 이점에 상세히 설명 할 필요가 없을 만큼, 그것은 단순히 좋은 생각입니다;

앞으로 이야기 할 내용은 데이터베이스의 성능에 영향을주지 않고 슬레이브에서 백업을 실행할 수있는 기능입니다.


마스터 - 슬레이브 복제에 대부분의 튜토리얼은 초기 설정시 일관된 사본을 달성하기 위해 읽기 잠금을 사용합니다.

우리의 사용자가 밤의 모든 시간에 카드와 선물의 수천을 보내고, 다운 타임없이 마이그레이션을 수행 할 수있는 방법을 찾고 싶었습니다.


먼저, [mysqld를] 섹션에 다음 행을 추가하여 마스터의 /etc/mysql/my.cnf를 구성해야합니다 :


server-id=1 binlog-format = mixed log-bin=mysql-bin datadir=/var/lib/mysql innodb_flush_log_at_trx_commit=1 sync_binlog=1


마스터 MySQL 서버를 다시 시작하고 슬레이브 서버가 마스터에 연결하는 데 사용할 복제 사용자를 생성 :


CREATE USER replicant@<<slave-server-ip>>; GRANT REPLICATION SLAVE ON *.* TO replicant@<<slave-server-ip>> IDENTIFIED BY '<<choose-a-good-password>>';


다음으로, 바이너리 로그 위치와 백업 파일을 만들 수 있습니다. 그것은 당신의 데이터베이스 서버의 성능에 영향을 미칠 것입니다,하지만 테이블을 잠글 것입니다 :


mysqldump --skip-lock-tables --single-transaction --flush-logs --hex-blob --master-data=2 -A > ~/dump.sql


이제, MASTER_LOG_FILE 과 MASTER_LOG_POS파일의 헤드 검사 값을 적어야합니다. 나중에 필요합니다.


head dump.sql -n80 | grep "MASTER_LOG_POS"


파일의 크기가 크기 때문에 slave로 파일을 전송하기 전에 gzip으로 압축을 할 것입니다. 선택사항 입니다.


gzip ~/dump.sql


이제 우리는 (당신이 먼저 gzip을 gz 인 비트를 제거하지 않은 경우) 우리의 슬레이브 서버에 덤프 파일을 전송해야합니다 :


scp ~/dump.sql.gz mysql-user@<<slave-server-ip>>:~/


그 실행 중에, 당신은 당신의 노예 서버에 로그인하고 다음 줄을 추가하도록 /etc/mysql/my.cnf 파일을 편집해야합니다 :


server-id = 101 binlog-format = mixed log_bin = mysql-bin relay-log = mysql-relay-bin log-slave-updates = 1 read-only = 1


MySQL의 슬래 이브를 다시 시작한 다음 덤프 파일을 가져옵니다


gunzip ~/dump.sql.gz mysql -u root -p < ~/dump.sql


당신의 슬레이브 서버에 MySQL의 콘솔에 로그인하고 설정하고 복제를 시작하려면 다음 명령을 실행합니다.


CHANGE MASTER TO MASTER_HOST='<<master-server-ip>>',MASTER_USER='replicant',MASTER_PASSWORD='<<slave-server-password>>', MASTER_LOG_FILE='<<value from above>>', MASTER_LOG_POS=<<value from above>>; START SLAVE;


당신의 슬래 이브의 진행 상황을 확인하려면 :


SHOW SLAVE STATUS \G


모든 것이 잘된 경우, Last_Error가 비어있을 것이고, Slave_IO_State는 "이벤트를 보낼 수있는 마스터를 기다리는 중"을 보고합니다. 그 뒤에 나타나는 Seconds_Behind_Master를 찾습니다. 위의 모든 작업을 수행하는 나에게 몇 시간이 걸렸지 만 슬레이브는 몇 분 만에 실행되었습니다.


그리고 지금 당신은 다운 타임을 경험하지 않고 새로 생성한 MySQL을 슬래 이브 서버를 사용할 수 있습니다



by 윤성용