天天看點

mysql replication(主從複制)(二)MSS模式

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 &gt; </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 &lt; ~</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&gt; change master </code><code>to</code>

<code>    </code><code>-&gt; master_host=</code><code>'10.168.0.104'</code><code>,</code>

<code>    </code><code>-&gt; master_user=</code><code>'repl'</code><code>,</code>

<code>    </code><code>-&gt; master_password=</code><code>'repl'</code><code>,</code>

<code>    </code><code>-&gt; master_log_file=</code><code>'mysqld-bin.000002'</code><code>,</code>

<code>    </code><code>-&gt; master_log_pos=106;</code>

<a href="http://s3.51cto.com/wyfs02/M02/73/97/wKiom1YBeDHC3BCwAACWn1NfIWU818.jpg" target="_blank"></a>

啟動作為slave身份的相關程序:

<code>mysql&gt; start slave;</code>

<a href="http://s3.51cto.com/wyfs02/M02/73/94/wKioL1YBeF6Q0WVHAABHAdz3lNI006.jpg" target="_blank"></a>

檢視狀态:

<code>mysql&gt; 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&amp;Relay-Slave&amp;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,如需轉載請自行聯系原作者