HOME | 資料庫 | Mysql 同步資料庫

Mysql 同步資料庫

2014/06/18/10:29 , Post in 資料庫 , 評論(0) , 引用(0) , 閱讀(4435) , Via 本站原創
首先,因為Mysql的同步機制完全是基於在主資料庫上執行的增量SQL要被送到副資料庫上,並且被成功執行。

這就勢必要求:開啟同步機制前,主副數據庫中數據是相同的;但是在運行中仍然可能遇到不一致的產生,

這會導致通信無法正常繼續下去。因此一旦同步出現問題,首先應該確認是否某些SQL的語法在副資料庫無法執行

具體的主從mysql設定方式如下

================================================Master設定

首先在my.cnf中加入

server-id = 1
log-bin=mysql-bin
binlog_do_db = 資料庫名稱

重新啟動mysql後檢查是否開始運作

mysql> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |      335 | dbname         |                  |
+------------------+----------+--------------+------------------+

================================================Slave設定

一樣找到my.cnf中加入

server-id = 2
master-host = master ip
master-user = username
master-password = passwd
master-port = port
master-connect-retry = 多久同步一次
replicate-do-db = 資料庫名稱

重啟mysql後檢查

mysql> show slave status

如果再last error的欄位有錯誤,一般是資料不同步導致主資料庫的某些語法無法在副資料庫執行。

因此如果很不幸的因為某些原因同步失敗了,解決的方式一種就是重新mysqldump主資料庫的資料倒到副資料庫在重啟同步機制

另一種則是忽略此錯誤(最好用show slave status檢查無法執行的SQL語法,以及是否可以有稍微的主從不相同)

mysql>slave stop
mysql>set global sql_slave_skip_counter =1
mysql>start slave

若是狀態一直停留在

Waiting to reconnect after a failed master event read

表示這個使用者並沒有足夠的權限,解決方式在Master新增該使用者的權限即可

GRANT REPLICATION SLAVE ON dbname.* TO 'user'@'slavesDnsHostname' IDENTIFIED BY 'passwd';

#===========20160714後記=====================

今天想要修改設定檔的時候,發現修改後不管怎麼restart

show slave status \G;的結果都不變,(mysql 5.5版以後很像取消這種設定方式)

最後找到的解法是用client直接改,修改設定檔似乎沒有用,語法如下

CHANGE MASTER TO MASTER_HOST='host ip', MASTER_PORT=3306, MASTER_USER='同步的帳號',  MASTER_PASSWORD='密碼';

那如果碰到binlog出問題導致slave start一直出錯,可以嘗試

slave stop;

reset slave;

slave start;


發表評論

暱稱

網址

電郵

開啟HTML 開啟UBB 開啟表情 隱藏 記住我 [登入] [註冊]