MySQL複製介紹 MySQL複製就是一臺MySQL伺服器(slave)從另一臺MySQL伺服器(master)進行日誌的複製然後再解析日誌並應用到自身,類似Oracle中的Data Guard。 MySQL複製有那些好處: 第一是解決宕機帶來的數據不一致,因為MySQL複製可以實時備份數據; 第二 ...
MySQL複製介紹
MySQL複製就是一臺MySQL伺服器(slave)從另一臺MySQL伺服器(master)進行日誌的複製然後再解析日誌並應用到自身,類似Oracle中的Data Guard。
MySQL複製有那些好處:
-
第一是解決宕機帶來的數據不一致,因為MySQL複製可以實時備份數據;
-
第二點是減輕資料庫伺服器的壓力,多台伺服器的性能一般比單台要好。但是MySQL複製不適合大數據量,大數據量推薦使用集群。
MySQL複製過程分成三步:
-
master將改變記錄到二進位日誌(binary log)。這些記錄過程叫做二進位日誌事件,binary log events;
-
slave將master的binary log events拷貝到它的中繼日誌(relay log);
-
slave重做中繼日誌中的事件,將改變應用到自己的資料庫中。MySQL複製是非同步的且串列化的
MySQL複製搭建
環境準備
master 192.168.1.5
slave 192.168.1.6
OS:Oracle Linux 6.1
MySQL:5.5.37
Master配置
1)分配複製許可權
主庫和從庫均需要執行
2)清空日誌文件
主從庫都是預設開啟二進位日誌文件
需要註意的是,如果不想清空日誌文件的話,需要記錄當前master的log_file和log_pos,併在下麵啟用複製操作時指定這兩個參數或者在slave的配置文件指定。
Slave設置
1) 修改從伺服器server-id
修改完以後需要重啟資料庫
2)清空日誌文件,同Master
3)啟用複製
讓slave連接master並開始重做master二進位日誌中的事件
master_log_pos的值為0,因為它是日誌的開始位置;master_log_file是初始日誌文件。如果master日誌沒有被清空,這裡就是當前master的日誌信息
需要註意的是,預設情況下,會同步該用戶下所有的DB,如果想限定哪些DB,有3種思路
-
在master上的/etc/my.inf中通過參數binlog-do-db、binlog-ignore-db設置需要同步的資料庫
-
在執行grant分配許可權操作的時候,限定資料庫
-
在slave上限定資料庫使用replicate-do-db=dbname
4)開啟slave
5)確認Slave是否和Mater成功通信。如果 Slave_IO_Running和Slave_SQL_Running都是yes,則證明配置成功
測試
Master創建資料庫
Slave查看資料庫已同步
Master創建表插入數據
Slave查看
通過以上驗證,可以看到主伺服器上的修改能夠正常同步到從伺服器。
補充說明
1)做了MySQL主從複製以後,使用mysqldump對數據備份時,一定要註意按照如下方式:
這樣就可以保留file和position的信息,在新搭建一個slave的時候,還原完資料庫,file和position的信息也隨之更新,接著再start slave 就可以很迅速的完成增量同步。
其他複製方式
主主複製
master-slave只能進行單向操作,像網路中的半雙工。master-master可以實現伺服器之間互相同步,且主主複製可以避免出現單點故障後整個系統宕機。主主複製最大的問題就是數據插入或更新衝突。配置方法同主從複製,反過來讓slave同步master。註意master_log_file和master_log_pos參數要與master上對應。具體可以參考這裡
單一master和多slave
由一個master和多個slave組成的複製系統比較簡單。slave之間並不互相通信,只能與master通信。如果寫操作較少,讀操作很多,可以採用。可以將讀操作分佈到其他slave,從而減輕master的壓力。但slave增加到一定數量時,slave對master的負載以及網路帶寬都會成為問題。
主從多級複製
讀操作很多可以採用單一maste和多slave,但增大到一定slave後連到master的slaveIO線程太多會造成master壓力增大,從而造成數據複製延時。多級複製就是為瞭解決這個問題。如果想實現主-從(主)-從多級複製,需要設置log-slave-updates參數。同時二進位日誌也必須啟用。
當然,增加複製的級聯層次,同一個變更傳到最底層的Slave所需要經過的MySQL也會更多,同樣可能造成延時較長的風險。如果條件允許,傾向於通過拆分成多個Replication集群來解決。
版權聲明:來源:bestvivi,鏈接:http://bestvivi.com/2015/09/06/MySQL複製介紹及搭建/,感謝原作者的辛苦創作,如轉載涉及版權等問題,請作者與我們聯繫(公眾號:數通暢聯,QQ群:299719834)將在第一時間處理,謝謝!