一般在線增加從庫有兩種方式,一種是通過mysqldump備份主庫,恢復(fù)到從庫,mysqldump是邏輯備份,數(shù)據(jù)量大時,備份速度會很慢,鎖表的時間也會很長。另一種是通過xtrabackup工具備份主庫,恢復(fù)到從庫,xtrabackup是物理備份,備份速度快,不鎖表。為什么不鎖表?因為自身會監(jiān)控主庫日志,如果有更新的數(shù)據(jù),就會先寫到一個文件中,然后再回歸到備份文件中,從而保持?jǐn)?shù)據(jù)一致性。
現(xiàn)在生產(chǎn)環(huán)境MySQL數(shù)據(jù)庫是一主一從,由于業(yè)務(wù)量訪問不斷增大,故再增加一臺從庫。前提是不能影響線上業(yè)務(wù)使用,也就是說不能重啟MySQL服務(wù),為了避免出現(xiàn)其他情況,選擇在網(wǎng)站訪問量低峰期時間段操作。
服務(wù)器信息:
主庫:192.168.18.212(原有)
從庫1:192.168.18.213(原有)
從庫2:192.168.18.214(新增)
數(shù)據(jù)庫版本:MySQL5.5
存儲引擎:Innodb
測試庫名:weibo
一、mysqldump方式
MySQL主從是基于binlog日志,所以在安裝好數(shù)據(jù)庫后就要開啟binlog。這樣好處是,一方面可以用binlog恢復(fù)數(shù)據(jù)庫,另一方面可以為主從做準(zhǔn)備。
原有主庫配置參數(shù)如下:
# vi my.cnf
server-id = 1 #id要唯一
log-bin = mysql-bin #開啟binlog日志
auto-increment-increment = 1 #在Ubuntu系統(tǒng)中MySQL5.5以后已經(jīng)默認(rèn)是1
auto-increment-offset = 1
slave-skip-errors = all #跳過主從復(fù)制出現(xiàn)的錯誤
1. 主庫創(chuàng)建同步賬號
mysql> grant all on *.* to 'sync'@'192.168.18.%' identified by 'sync';
2. 從庫配置MySQL
# vi my.cnf
server-id = 3 #這個設(shè)置3
log-bin = mysql-bin #開啟binlog日志
auto-increment-increment = 1 #這兩個參數(shù)在Ubuntu系統(tǒng)中MySQL5.5以后都已經(jīng)默認(rèn)是1
auto-increment-offset = 1
slave-skip-errors = all #跳過主從復(fù)制出現(xiàn)的錯誤
3. 備份主庫
# mysqldump -uroot -p123 --routines --single_transaction --master-data=2 --databases weibo > weibo.sql
參數(shù)說明:
--routines:導(dǎo)出存儲過程和函數(shù)
--single_transaction:導(dǎo)出開始時設(shè)置事務(wù)隔離狀態(tài),并使用一致性快照開始事務(wù),然后unlock tables;而lock-tables是鎖住一張表不能寫操作,直到dump完畢。
--master-data:默認(rèn)等于1,將dump起始(change master to)binlog點和pos值寫到結(jié)果中,等于2是將change master to寫到結(jié)果中并注釋。
4. 把備份庫拷貝到從庫
# scp weibo.sql root@192.168.18.214:/home/root
5. 在主庫創(chuàng)建test_tb表,模擬數(shù)據(jù)庫新增數(shù)據(jù),weibo.sql是沒有的
新聞熱點
疑難解答
圖片精選