Mysql Replication && Dual Master Replication

Replication 설정

 

master server 192.168.56.101
slave server 192.168.56.102

replication 설정할 db는 master에 미리 생성되어 있어야 함.

 

master 서버에서 작업 –>

1. master server 설정

/etc/my.cnf
————————
log-bin=mysql-bin
server-id = 1
binlog_do_db = db_name
replicate_do_db = db_name
————————
2. slave 서버에서 master 서버로 접속할수 있는 replication user를 생성

mysql> grant replication slave on *.* to ‘db_user’@’%’ identified by ‘db_pass’;
mysql> grant replication slave on *.* to ‘db_user’@’192.168.56.102’ identified by ‘db_pass’;

user table에서 File_priv, Repl_slave_priv, Repl_client_priv 권한 Y로 설정 확인

#mysql stop
3. replication 구성할 db slave로 복사

#mysql start

mysql> show master status;
+——————+———-+————–+——————+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+——————+———-+————–+——————+
| mysql-bin.000003 |     1024 | db_name      |                  |
+——————+———-+————–+——————+
1 row in set (0.00 sec)

mysql>
slave 서버에서 작업 –>
4. slave server 설정

db, db user 및 권한설정 master와 동기화

/etc/my.cnf
————————
#log-bin=mysql-bin    —> 생략가능
server-id = 2
————————

#mysql restart

mysql> stop slave;

master 서버의 status 에서 log_file, log_pos값 확인

mysql> change master to master_host=’192.168.56.101′, master_user=’db_user’, master_password=’db_pass’, master_log_file=’mysql-bin.000003′, master_log_pos=1024;

mysql> show slave status;
+———————————-+—————-+————-+————-+—————+——————+———————+————————–+—————+———————–+——————+——————-+—————–+———————+——————–+————————+————————-+—————————–+————+————+————–+———————+—————–+—————–+—————-+—————+——————–+——————–+——————–+—————–+——————-+—————-+———————–+——————————-+—————+—————+—————-+—————-+—————————–+——————+
| Slave_IO_State                   | Master_Host    | Master_User | Master_Port | Connect_Retry | Master_Log_File  | Read_Master_Log_Pos | Relay_Log_File           | Relay_Log_Pos | Relay_Master_Log_File | Slave_IO_Running | Slave_SQL_Running | Replicate_Do_DB | Replicate_Ignore_DB | Replicate_Do_Table | Replicate_Ignore_Table | Replicate_Wild_Do_Table | Replicate_Wild_Ignore_Table | Last_Errno | Last_Error | Skip_Counter | Exec_Master_Log_Pos | Relay_Log_Space | Until_Condition | Until_Log_File | Until_Log_Pos | Master_SSL_Allowed | Master_SSL_CA_File | Master_SSL_CA_Path | Master_SSL_Cert | Master_SSL_Cipher | Master_SSL_Key | Seconds_Behind_Master | Master_SSL_Verify_Server_Cert | Last_IO_Errno | Last_IO_Error | Last_SQL_Errno | Last_SQL_Error | Replicate_Ignore_Server_Ids | Master_Server_Id |
+———————————-+—————-+————-+————-+—————+——————+———————+————————–+—————+———————–+——————+——————-+—————–+———————+——————–+————————+————————-+—————————–+————+————+————–+———————+—————–+—————–+—————-+—————+——————–+——————–+——————–+—————–+——————-+—————-+———————–+——————————-+—————+—————+—————-+—————-+—————————–+——————+
| Waiting for master to send event | 192.168.56.101 | db_user     |        3306 |            60 | mysql-bin.000003 |                1024 | cent5_2-relay-bin.000009 |           375 | mysql-bin.000003      | Yes              | Yes               |                 |                     |                    |                        |                         |                             |          0 |            |            0 |                1024 |             533 | None            |                |             0 | No                 |                    |                    |                 |                   |                |                     0 | No                            |             0 |               |              0 |                |                             |                1 |
+———————————-+—————-+————-+————-+—————+——————+———————+————————–+—————+———————–+——————+——————-+—————–+———————+——————–+————————+————————-+—————————–+————+————+————–+———————+—————–+—————–+—————-+—————+——————–+——————–+——————–+—————–+——————-+—————-+———————–+——————————-+—————+—————+—————-+—————-+—————————–+——————+
1 row in set (0.00 sec)

mysql>

 

5. replication test

 

 

######################################################################################################################################################
Dual Master 설정
slave 서버에서 작업 –>
1. slave 서버를 master로 설정추가

slave 서버에 bin-log가 생성되어 있으면 삭제
my.cnf 파일에 log-bin=mysql-bin 이 설정되어 있지 않으면, 설정추가

#mysql restart
2. master서버에서 slave 서버로 접속할수 있는 replication user를 생성

mysql> grant replication slave on *.* to ‘db_user’@’192.168.56.101’ identified by ‘db_pass’;

mysql> show master status;
+——————+———-+————–+——————+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+——————+———-+————–+——————+
| mysql-bin.000001 |      712 |              |                  |
+——————+———-+————–+——————+
1 row in set (0.00 sec)

mysql>

 

master 서버에서 작업 –>
3. master에서 slave 서버를 master로 설정 추가

mysql> change master to master_host=’192.168.56.102′, master_user=’db_user’, master_password=’db_pass’, master_log_file=’mysql-bin.000001′, master_log_pos=712;

mysql> show slave status;
+———————————-+—————-+————-+————-+—————+——————+———————+————————–+—————+———————–+——————+——————-+—————–+———————+——————–+————————+————————-+—————————–+————+————+————–+———————+—————–+—————–+—————-+—————+——————–+——————–+——————–+—————–+——————-+—————-+———————–+——————————-+—————+—————+—————-+—————-+—————————–+——————+
| Slave_IO_State                   | Master_Host    | Master_User | Master_Port | Connect_Retry | Master_Log_File  | Read_Master_Log_Pos | Relay_Log_File           | Relay_Log_Pos | Relay_Master_Log_File | Slave_IO_Running | Slave_SQL_Running | Replicate_Do_DB | Replicate_Ignore_DB | Replicate_Do_Table | Replicate_Ignore_Table | Replicate_Wild_Do_Table | Replicate_Wild_Ignore_Table | Last_Errno | Last_Error | Skip_Counter | Exec_Master_Log_Pos | Relay_Log_Space | Until_Condition | Until_Log_File | Until_Log_Pos | Master_SSL_Allowed | Master_SSL_CA_File | Master_SSL_CA_Path | Master_SSL_Cert | Master_SSL_Cipher | Master_SSL_Key | Seconds_Behind_Master | Master_SSL_Verify_Server_Cert | Last_IO_Errno | Last_IO_Error | Last_SQL_Errno | Last_SQL_Error | Replicate_Ignore_Server_Ids | Master_Server_Id |
+———————————-+—————-+————-+————-+—————+——————+———————+————————–+—————+———————–+——————+——————-+—————–+———————+——————–+————————+————————-+—————————–+————+————+————–+———————+—————–+—————–+—————-+—————+——————–+——————–+——————–+—————–+——————-+—————-+———————–+——————————-+—————+—————+—————-+—————-+—————————–+——————+
| Waiting for master to send event | 192.168.56.102 | db_user     |        3306 |            60 | mysql-bin.000001 |                 712 | cent5_1-relay-bin.000004 |           369 | mysql-bin.000001      | Yes              | Yes               | db_name         |                     |                    |                        |                         |                             |          0 |            |            0 |                 712 |             527 | None            |                |             0 | No                 |                    |                    |                 |                   |                |                     0 | No                            |             0 |               |              0 |                |                             |                2 |
+———————————-+—————-+————-+————-+—————+——————+———————+————————–+—————+———————–+——————+——————-+—————–+———————+——————–+————————+————————-+—————————–+————+————+————–+———————+—————–+—————–+—————-+—————+——————–+——————–+——————–+—————–+——————-+—————-+———————–+——————————-+—————+—————+—————-+—————-+—————————–+——————+
1 row in set (0.00 sec)

mysql>
4. replication test