在公司工作之餘看了MySQL的Master-Slave設置,大致的意思和流程已然懂了,但從未實踐過。今天有時間實踐一下,手頭有兩臺Win7機器,就湊合着用吧!!
首先設定是關係A爲Master,B爲Slave.(兩臺機器的Mysql都是5.0+,但不同)
設置A 的my.ini
server-id = 1
log-bin=mysql-bin
binlog_do_db=test1
binlog_ignore_db=mysql
innodb_flush_log_at_trx_commit=1
sync_binlog=1
binlog_checksum=none
說明:
server-id = 1 #機器ID
log-bin=mysql-bin #開啓二進制日誌
binlog_do_db=test1 #要同步的數據庫
binlog_ignore_db=mysql #忽略mysql數據庫
sync_binlog=1 #及時刷新寫入二進制日誌
binlog_checksum=none #版本不同且A大於5.6所以要設置一下
在A上創建test1數據庫 和tab表
在Master上創建slave用戶
grant all privileges on *.* to slave@'%' identified by 'slave';
這是個超級用戶啊,哈哈
A即Master基本配置完畢
開始配置B-Slave
設置B的my.ini
log-bin=mysql-bin
binlog_do_db=test1
binlog_ignore_db=mysql
說明同上
並在B上創建和A完全相同的test1數據庫 和tab表
至此配置都已完成,下面開始尋找要同步的二進制日誌的同步點
在A輸入
mysql>show master status\G;
*************************** 1. row ***************************
File: mysql-bin.000053
Position: 606
Binlog_Do_DB: test1
Binlog_Ignore_DB: mysql
Executed_Gtid_Set:
即test1數據庫的二進制日誌是mysql-bin.000053 位置是606
在B上輸入
change master to master_host='A的ip',master_user='slave',master_password='slave',master_log_file='mysql-bin.000053',master_log_pos=606;
mysql> show slave status\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 10.209.78.13
Master_User: slave
Master_Port: 3306
Connect_Retry: 30
Master_Log_File: mysql-bin.000053
Read_Master_Log_Pos: 333
Relay_Log_File: Lee-PC-relay-bin.000002
Relay_Log_Pos: 492
Relay_Master_Log_File: mysql-bin.000053
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB: test1
Replicate_Ignore_DB: mysql
Replicate_Do_Table:
如果看到了
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
說明你成功了。
那就趕緊測試一下吧。
在A上insert一條數據,看看B上傳過來了沒
教程至此完畢
說明:若在B上show slave status\G;時出現connecting to master時 原因可能是
- 密碼錯誤
- A的3306端口不通
- 等一切B機器連不上A機器的問題