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