1、理論部分
1.1、One Master-Muti Slave
<a href="http://s3.51cto.com/wyfs02/M01/73/8A/wKiom1YAyYCQQ0rTAABasKYdIsY078.jpg" target="_blank"></a>
工作原理:
一台到多台Slave
缺陷:
I/O壓力集中在Master上
1.2、M-S-S
<a href="http://s3.51cto.com/wyfs02/M00/73/88/wKioL1YAy9TxQ_1vAABeaXaEcfo680.jpg" target="_blank"></a>
1)使用一台Slave作為中繼,分擔Master的壓力。
2)中繼SLave上需要開啟二級制日志,并配置log-slave-updates。
1.3、M-M
<a href="http://s3.51cto.com/wyfs02/M02/73/88/wKioL1YAzKrSLqiJAAAjc0cwfX8374.jpg" target="_blank"></a>
互相負載均衡
缺點:
破壞了事物的隔離性何資料一緻性(不建議使用)
1.4、M-M-M
<a href="http://s3.51cto.com/wyfs02/M02/73/88/wKioL1YAzfvRWCllAABmNDeK2_0193.jpg" target="_blank"></a>
通過Monitor監控其他三台機器運作
DML發送到其中一台機器,其他三台循環同步
1)傳遞多級别延遲問題。
2)monitor維護增加複雜度。
1.5、One Slave-Muti Master
<a href="http://s3.51cto.com/wyfs02/M02/73/8A/wKiom1YAz6jgg5W1AABH9vqi5P0911.jpg" target="_blank"></a>
優點:
1)資料自動化整合
2)節省成本
1)對庫和表修改比較多
2)對運作過M-S來說風險比較高
2、實驗部分
2.1、實驗環境
mysql主伺服器(master):
ipaddress=10.168.0.103
hostname=sql-m
mysql中繼從伺服器(relay-slave):
ipaddress=10.168.0.104
hostname=sql-s
mysql從伺服器(slave):
ipaddress=10.168.0.105
hostname=sql-s-s
2.2、實驗步驟
以下實驗以“mysql replication(主從複制)(一)MS模式”為基礎,如果你做如下測試,請先參閱如下連結:
<a href="http://cmdschool.blog.51cto.com/2420395/1696474" target="_blank">http://cmdschool.blog.51cto.com/2420395/1696474</a>
以上slave機器初始化設定同理請參考“mysql replication(主從複制)(一)MS模式”,以下不在詳述。
2.2.1、step1
In Relay-Slave
配置server-id,辨別伺服器。
vim編輯/etc/my.cnf
實驗一基礎上增加如下參數:
1
2
3
<code>log-bin</code>
<code>log-slave-updates</code>
<code>binlog-</code><code>format</code><code>=row</code>
最後必須包含以下參數:
4
5
<code>[mysqld]</code>
<code>server-</code><code>id</code><code>=2</code>
配置效果:
<a href="http://s3.51cto.com/wyfs02/M01/73/94/wKioL1YBcyPTIDNlAAE2m3eGj1o569.jpg" target="_blank"></a>
配置完成後重新開機服務:
<code>/etc/init</code><code>.d</code><code>/mysqld</code> <code>restart</code>
<a href="http://s3.51cto.com/wyfs02/M02/73/94/wKioL1YBczbAHoaIAAB3BOIj0Rs222.jpg" target="_blank"></a>
2.2.2、step2
In Slave
增加如下參數:
<code>server-</code><code>id</code><code>=3</code>
<a href="http://s3.51cto.com/wyfs02/M01/73/94/wKioL1YBc-7QegzlAAEF2GI7F_4379.jpg" target="_blank"></a>
<a href="http://s3.51cto.com/wyfs02/M02/73/94/wKioL1YBdAGhq6k9AADqNvFcpbM773.jpg" target="_blank"></a>
2.2.3、step3
本步驟目的是将Relay-Slave的資料導到Slave中
<code>mysqldump --all-databases -uroot -p > </code><code>/var/lib/backup/backup</code><code>.sql</code>
<code>scp</code> <code>/var/lib/backup/backup</code><code>.sql 10.168.0.105:~/</code>
<a href="http://s3.51cto.com/wyfs02/M00/73/94/wKioL1YBdJfiL1hnAAF1t8zQhMs308.jpg" target="_blank"></a>
導入備份并登陸資料庫:
<code>mysql -uroot -p < ~</code><code>/backup</code><code>.sql</code>
<code>mysql -uroot -p</code>
<a href="http://s3.51cto.com/wyfs02/M02/73/97/wKiom1YBde2imDn7AAEb4lYWI1U972.jpg" target="_blank"></a>
資料庫檢查:
<code>show databases;</code>
<a href="http://s3.51cto.com/wyfs02/M00/73/97/wKiom1YBdVviE55BAAG7bkQchHg024.jpg" target="_blank"></a>
授權本機作為master允許被slave通路:
<code>grant</code> <code>replication slave </code><code>on</code> <code>*.* </code><code>to</code> <code>'repl'</code><code>@</code><code>'10.168.0.105'</code> <code>identified </code><code>by</code> <code>'repl'</code><code>;</code>
<a href="http://s3.51cto.com/wyfs02/M00/73/95/wKioL1YBfmeRGcNOAAHE5ZakaUg041.jpg" target="_blank"></a>
檢視master狀态:
<code>show master status\G</code>
<a href="http://s3.51cto.com/wyfs02/M00/73/97/wKiom1YBd1bDhY5rAACL5e1QWC0263.jpg" target="_blank"></a>
記錄下“File”與“Position”的值,下一步要使用。
2.2.4、step4
設定連接配接到master的參數:
6
<code>mysql> change master </code><code>to</code>
<code> </code><code>-> master_host=</code><code>'10.168.0.104'</code><code>,</code>
<code> </code><code>-> master_user=</code><code>'repl'</code><code>,</code>
<code> </code><code>-> master_password=</code><code>'repl'</code><code>,</code>
<code> </code><code>-> master_log_file=</code><code>'mysqld-bin.000002'</code><code>,</code>
<code> </code><code>-> master_log_pos=106;</code>
<a href="http://s3.51cto.com/wyfs02/M02/73/97/wKiom1YBeDHC3BCwAACWn1NfIWU818.jpg" target="_blank"></a>
啟動作為slave身份的相關程序:
<code>mysql> start slave;</code>
<a href="http://s3.51cto.com/wyfs02/M02/73/94/wKioL1YBeF6Q0WVHAABHAdz3lNI006.jpg" target="_blank"></a>
檢視狀态:
<code>mysql> show slave status\G;</code>
<a href="http://s3.51cto.com/wyfs02/M01/73/97/wKiom1YBeK-C2oi_AALcvcylX8I146.jpg" target="_blank"></a>
2.2.5、step5
本步驟完成測試
In Master&Relay-Slave&Slave
<a href="http://s3.51cto.com/wyfs02/M01/73/95/wKioL1YBe9rjNrt0AAQNefEP5GE217.jpg" target="_blank"></a>
<a href="http://s3.51cto.com/wyfs02/M01/73/95/wKioL1YBfKSB4Q7VAAO74Yu5d2s266.jpg" target="_blank"></a>
<a href="http://s3.51cto.com/wyfs02/M02/73/98/wKiom1YBfKXCsUpNAAM3hxRjWm0215.jpg" target="_blank"></a>
本文轉自 tanzhenchao 51CTO部落格,原文連結:http://blog.51cto.com/cmdschool/1697067,如需轉載請自行聯系原作者