본 포스트에서 나오는 경로는 우분투 리눅스 기준으로 작성하였습니다.
#1. Master Server
/etc/mysql/my.cnf 에서
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = DB명
#사용 되는 옵션(do: 해당 DB(table)만 | ignore: 해당 DB(table) 제외하고)
#binlog-do-db(table)
#binlog-ignore-db(table)
#replicate-do-db(table)
#replicate-ignore-db(table)
#여러개의 DB(table)을 입력 시에는 ","로 구분하는 것이 아니고 하나하나 작성 해야함
#ex)
binlog_do_db = DB1
binlog_do_db = DB2.table
위와 같이 작성 후 mysql를 재 시작한다.
sudo /etc/init.d/mysql
재 시작 후 mysql에 접속한 후 다음을 확인한다. 이때 File 을 기억한다. 처음 설정을 할 시에는 000001이지만, 혹시 모르니 작성해 두었다.
mysql>grant replication slave on *.* to '계정'@'slave server ip' identified by '비밀번호'; //slave server를 위한 계정 생성
mysql> show master status;//실행 상태 확인
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000006 | 921 | wpmu2 | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
mysql> show master logs;//로그 확인
+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| mysql-bin.000001 | 117 |
| mysql-bin.000002 | 117 |
| mysql-bin.000003 | 125 |
| mysql-bin.000004 | 29542 |
| mysql-bin.000005 | 370734 |
| mysql-bin.000006 | 1084 |
+------------------+-----------+
master server 설정은 끝났다.
#2. Slave Server
/etc/mysql/my.cnf 에서
server-id = 2(master server 와 다르게)
위와 같이 작성 후 mysql를 재 시작한다.
mysql 접속 후
mysql>stop slave;
mysql>change master to master_host = 'master IP', master_port = 3306, master_user = ' master에서 생성한 계정', master_password = '비밀번호', master_log_file = 'mysql-bin.000001'; //master_log_file 명은 앞에서 확인한 master 상태에서의 File(Log_file)명이 된다.
mysql>start slave;
이제 모든 설정이 끝났다.
slave 의 동작 상태는
mysql>show slave statusG;
를 통하여 확인 할 수 있으며
Slave_IO_State : Wating for master to send event
Slave_IO_Running : YES
로 나오면 정상 동작하는 것이다.
Leave a Reply