程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL 復制介紹及搭建,mysql復制搭建

MySQL 復制介紹及搭建,mysql復制搭建

編輯:MySQL綜合教程

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)將在第一時間處理,謝謝!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved