《Mysql必讀簡單講解MySQL中的多源復制》要點:
本文介紹了Mysql必讀簡單講解MySQL中的多源復制,希望對您有用。如果有疑問,可以聯系我們。
MYSQL入門?近日ORACLE發布幾個新的功能在最新的Mysql5.7.2的版本上,由此有了此篇文章.大多數的改善是在數據庫性能和復制相關的功能上,這個新版本會帶給我們不可思議的效果.
MYSQL入門在這篇文章里,我將要用一些簡單的步奏來嘗試了解這新的多源復制工作原理以及我們怎樣進行自己的測試.需要說明的是,這還是一個開發版本,不是給生產環境準備的.因此這篇文章是打算給那些想了解此新功能的人,看看它是如何在應用中工作的,都是在臨時環境中進行相關操作.
MYSQL入門什么是多源復制?
MYSQL入門首先,我們需要清楚 multi-master 與multi-source 復制不是一樣的. Multi-Master 復制通常是環形復制,你可以在任意主機上將數據復制給其他主機.
MYSQL入門
MYSQL入門Multi-source 是不同的. MySQL在這個新版本中修復了一個復制限制 , 這限制是一個從站只能有一個主站. 這是一個在我們設計復制環境中的限制因素,也有一些極客使它正常工作了.但是現在有一個官方的解決辦法了.所以.簡單的說, Multi-Source 意味著一個從站能有一個以上主站. 現在, 像下圖一樣的復制環境是可能的:?
MYSQL入門
MYSQL入門?這將幫助我們創建一些復制的層次結構,這在過去是不可能的. 舉個例子,你可以 將一個從站放在你的辦公室里.在辦公室里從所有主站中復制數據傳播到世界各地.
?
它是怎么工作的呢?
MYSQL入門現在我們有了通信渠道的概念,每一個通信渠道都是一個從服務器從主服務器獲得2進制日志的鏈接.這意味著每個通信渠道都得有一個IO_THREAD .我們需要運行不同的 “CHANGE MASTER” 命令, 對于每一個主服務器.我們需要用到 “FOR CHANNEL”這個參數來提供通信鏈接的名字.
?
MYSQL入門
CHANGE MASTER MASTER_HOST='something', MASTER_USER=... FOR CHANNEL="name_of_channel";
MYSQL入門很容易. 有一個單一的先決條件.從服務器需要在mysql5.6上配置安全功能,這意味著信息通常包含在主服務器上.信息或日志應該在一個表中,讓我們開始配置吧
MYSQL入門來個例子!
MYSQL入門首先你需要下載測試版的mysql.點這個鏈接:下載.
MYSQL入門我們需要有一個從服務器和兩個主服務器的沙箱環境. 我不會細節的說明怎樣配置server_id, binary logs 和 replication users.我假設已經配置好了. 如果你不知道怎么做.你可以看這個鏈接
MYSQL入門首先,我們在從服務器上實現事故安全功能.
MYSQL入門?
MYSQL入門
master_info_repository=TABLE;
relay_log_info_repository=TABLE;
MYSQL入門讓后重啟從服務器.我們可以開始創建通信渠道,用 “master1″ 和 “master2″這兩個名字:
?
MYSQL入門
slave > change master to master_host="127.0.0.1", master_port=12047, master_user="msandbox",master_password="msandbox" for channel="master1";
slave > change master to master_host="127.0.0.1", master_port=12048, master_user="msandbox",master_password="msandbox" for channel="master2";
MYSQL入門按照所設定的通信名字啟動從服務器.
?
MYSQL入門
slave > start slave for channel="master1";
slave > start slave for channel="master2";
MYSQL入門現在我們檢查一下從服務器狀態:
?
MYSQL入門
slave > show slave status\G
Empty set (0.00 sec)
MYSQL入門啊.是空的.我們需要寫上通信名字.重新檢查下從服務器狀態:
?
MYSQL入門
slave > SHOW SLAVE STATUS FOR CHANNEL="master1"\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 127.0.0.1
Master_User: msandbox
Master_Port: 12047
Connect_Retry: 60
Master_Log_File: mysql-bin.000002
Read_Master_Log_Pos: 232
Relay_Log_File: squeeze-relay-bin-master1.000003
Relay_Log_Pos: 395
Relay_Master_Log_File: mysql-bin.000002
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
[...]
MYSQL入門我們也可以檢查正在運行的? IO_THREAD 和 SQL_THREADS :
?
MYSQL入門
slave > SHOW PROCESSLIST;
+----+-------------+-----------------------------------------------------------------------------+
| Id | User | State |
+----+-------------+-----------------------------------------------------------------------------+
| 2 | system user | Waiting for master to send event |
| 3 | system user | Slave has read all relay log; waiting for the slave I/O thread to update it |
| 4 | system user | Waiting for master to send event |
| 5 | system user | Slave has read all relay log; waiting for the slave I/O thread to update it |
+----+-------------+-----------------------------------------------------------------------------+
MYSQL入門測試看一下:
?
MYSQL入門
master1 > create database master1;
master2 > create database master2;
slave > show databases like 'master%';
+--------------------+
| Database (master%) |
+--------------------+
| master1 |
| master2 |
+--------------------+
MYSQL入門正常工作了.看起來很簡單!
MYSQL入門結論
MYSQL入門這個新的multi-source功能使在過去需要一些復雜操作創建的復制環境變得簡單了.當然,你應用程序可以考慮這個新的特性設計和開發,使用? multi-master, multi-source都需要特別注意,不要把你的數據都弄亂了.
MYSQL入門在每一個新的版本中,mysql的復制功能給我們更多的配置,性能和設計的可能性.所有這些新功能都可以結合起來.在你新(老)的功能中增加復制功能,你的復制環境會更加出色.舉個例子:你可以配置 GTID 可以用 multi-threaded slave per schema或intra-database.
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/2093.html