개발

MySQL 미러링 (REPLICATION)

에드몽단테스 2016. 6. 8. 12:39

1. Master DB와 Slave DB에 Mysql 을 설치


2. Master DB와 Slave DB의 Mysql 의 데이터를 일치시킴. (mysqldump 등을 이용)


3. Master DB와 Slave DB의 my.cnf(보통 /etc/my.cnf에 존재) 수정


<<<Master DB>>>

[mysqld]

log-bin

server-id=1


<<<Slave DB>>>

[mysqld]

server-id=2



서버자체가 로컬로스트에서만 접속이 가능하다도록 설정되어 있다면 외부에서도 접속할 수 있도록 아래와 같이 옵션을 변경한다. (우부투의 경우)

#bind-address           = 127.0.0.1
bind-address            = 0.0.0.0



4. Create a User for Replication


Slave들이 Master에 접근하기위해서 Master의 User계정이 필요하다.
어떤 계정이든 상관없고 REPLICATION SLAVE 권한이 필요하다.
Slave마다 다른 계정을 줄 수도 있고 같은 계정을 줄 수도 있다.
어떤 계정을 따로 만들 필요없지만
master.info에 평문으로 User name과 password가 저장된다는 것을 알고 있어야 한다.
그러므로 Replication 작업만을 위한 계정을 따로 생성할 필요가 있다.


마스터에서 등록한다.


mysql> CREATE USER 'repl'@'IP주소 or 호스트이름' IDENTIFIED BY 'slavepass';

mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%.mydomain.com';



슬레이브에서 등록한다.


mysql > CHANGE MASTER TO MASTER_HOST='192.168.146.134',MASTER_USER='repl',MASTER_PASSWORD='passwd', MASTER_PORT=3306, MASTER_CONNECT_RETRY=30;
mysql > start slave;


5. 기타


덤프
$ mysqldump -uroot -p -A > all.sql

복원
$ mysql -uroot -p < all.sql

반응형