前言
創(chuàng)新互聯(lián)公司,是成都地區(qū)的互聯(lián)網(wǎng)解決方案提供商,用心服務(wù)為企業(yè)提供網(wǎng)站建設(shè)、重慶APP開發(fā)、成都微信小程序、系統(tǒng)按需定制和微信代運營服務(wù)。經(jīng)過數(shù)十余年的沉淀與積累,沉淀的是技術(shù)和服務(wù),讓客戶少走彎路,踏實做事,誠實做人,用情服務(wù),致力做一個負責任、受尊敬的企業(yè)。對客戶負責,就是對自己負責,對企業(yè)負責。數(shù)據(jù)庫實時備份的需求很常見,MySQL本身提供了 Replication 機制,摘譯官方介紹如下:
MySQL Replication 可以將一個主數(shù)據(jù)庫中的數(shù)據(jù)同步到一個或多個從數(shù)據(jù)庫中。并且這個同步過程默認以異步方式工作,不需要保持主從數(shù)據(jù)庫的實時連接(即允許連接中斷)。同時允許自定義配置需同步的數(shù)據(jù)庫及數(shù)據(jù)表。
MySQL Replication 的優(yōu)點及應(yīng)用場景如下:
1、通過 MySQL Replication 實現(xiàn)負載均衡與讀寫分離(主數(shù)據(jù)庫僅更新,從數(shù)據(jù)庫僅讀取),提升數(shù)據(jù)庫性能。
2、通過 MySQL Replication 實現(xiàn)數(shù)據(jù)的實時備份,保證數(shù)據(jù)安全。
3、通過 MySQL Replication 實現(xiàn)數(shù)據(jù)的離線分析(主數(shù)據(jù)庫生成數(shù)據(jù),從數(shù)據(jù)庫分析計算不影響主數(shù)據(jù)庫性能)。
4、數(shù)據(jù)分發(fā)。
MySQL Replication完整的官方文檔請參閱:https://dev.mysql.com/doc/refman/5.7/en/replication.html
工作原理
1111
1、Master中的所有數(shù)據(jù)庫變更事件寫入Binary Log文件
2、當在Slave中執(zhí)行“SLAVE START”命令時,開啟Slave I/O Thread,并連接Master
3、Master偵測到Slave I/O Thread的連接,開啟Log Jump Thread進行響應(yīng)
4、Master Binary Log經(jīng)Master Log Jump Thread和Slave I/O Thread傳輸至Slave Relay Log
5、Slave SQL Thread將Relay Log還原至數(shù)據(jù),同步完成
注:可使用“SHOW PROCESSLIST”命令在Master和Slave中查看對應(yīng)線程的運行情況
配置Master
開啟Binary Log并設(shè)置ServerID,ServerID必須唯一,取值范圍1至232-1
[mysqld] # 開啟Binary Log log-bin=mysql-bin # 設(shè)置全局ID server-id=1 # 指定需同步的數(shù)據(jù)庫(因為數(shù)據(jù)庫名稱可能包含逗號,因此多個數(shù)據(jù)庫必須重復(fù)配置多次而不能以逗號分隔) binlog-do-db=database_name # 指定禁止同步的數(shù)據(jù)庫 binlog-ignore-db=database_name # 指定Binary Log格式 binlog_format=MIXED