最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
當前位置: 首頁 - 科技 - 知識百科 - 正文

Mysql的主從復制的讀寫分離之Amoeba實現(xiàn)

來源:懂視網(wǎng) 責編:小采 時間:2020-11-09 10:17:24
文檔

Mysql的主從復制的讀寫分離之Amoeba實現(xiàn)

Mysql的主從復制的讀寫分離之Amoeba實現(xiàn):Mysql的主從復制的讀寫分離之Amoeba實現(xiàn)以前寫過了一篇Mysql的主從復制,但沒有實現(xiàn)Mysql的主從復制的讀寫分離。關于讀寫分離:讀寫分離(Read/WriteSplitting), Mysql的主從復制的讀寫分離之Amoeba實現(xiàn) 以前寫過了一篇Mysql的主從復制,但沒有實現(xiàn)M
推薦度:
導讀Mysql的主從復制的讀寫分離之Amoeba實現(xiàn):Mysql的主從復制的讀寫分離之Amoeba實現(xiàn)以前寫過了一篇Mysql的主從復制,但沒有實現(xiàn)Mysql的主從復制的讀寫分離。關于讀寫分離:讀寫分離(Read/WriteSplitting), Mysql的主從復制的讀寫分離之Amoeba實現(xiàn) 以前寫過了一篇Mysql的主從復制,但沒有實現(xiàn)M

Mysql的主從復制的讀寫分離之Amoeba實現(xiàn)以前寫過了一篇Mysql的主從復制,但沒有實現(xiàn)Mysql的主從復制的讀寫分離。關于讀寫分離:讀寫分離(Read/WriteSplitting),

Mysql的主從復制的讀寫分離之Amoeba實現(xiàn)

以前寫過了一篇Mysql的主從復制,但沒有實現(xiàn)Mysql的主從復制的讀寫分離。

關于讀寫分離:

讀寫分離(Read/Write Splitting),基本的原理是讓主數(shù)據(jù)庫處理事務性增、改、刪、操作(INSERT、UPDATE、DELETE),而從數(shù)據(jù)庫處理SELECT查詢操作。數(shù)據(jù)庫復制被用來把事務性操作導致的變更同步到集群中的從數(shù)據(jù)庫。

關于Mysql的讀寫分離實現(xiàn)大致有三種:

1、 程序修改Mysql操作類

就以程序來完成Mysql的讀寫操作,如以PHP程序、java程序等解決此需求。

優(yōu)點:直接和數(shù)據(jù)庫通信,簡單快捷的讀寫分離和隨機的方式實現(xiàn)的負載均衡,權限獨立分配

缺點:自己維護更新,增減服務器上的代碼處理。

2、 mysql-proxy

MySQL-Proxy是處在你的MySQL數(shù)據(jù)庫客戶和服務端之間的程序,它還支持嵌入性腳本語言Lua。這個代理可以用來分析、監(jiān)控和變換(transform)通信數(shù)據(jù),它支持非常廣泛的使用場景:

優(yōu)點:直接實現(xiàn)讀寫分離和負載均衡,不用修改代碼,master和slave用同一個賬號

缺點:字符集問題,lua語言編程,還只是alpha版本,時間消耗有點高

3、 Amoeba

參考官網(wǎng):,meidusa.com/
優(yōu)點:直接實現(xiàn)讀寫分離和負載均衡,不用修改代碼,有很靈活的數(shù)據(jù)解決方案

以上是三種常見的Mysql的讀寫分離方法。在這建議用第三種也就是amoeba來實現(xiàn)

關于Amoeba

Amoeba(變形蟲)項目,該開源框架于2008年開始發(fā)布一款Amoeba for Mysql軟件。這個軟件致力于Mysql的分布式數(shù)據(jù)庫前端代理層,它主要在應用層訪問Mysql的時候充當SQL路由功能,專注于分布式數(shù)據(jù)庫代理層(Database Proxy)開發(fā)。位于Client、DB Server(s)之間,虛擬主機,對客戶透明。具有負載均衡、高可用性、SQL過濾、讀寫分離、可路由相關的到目標數(shù)據(jù)庫、可并發(fā)請求多臺數(shù)據(jù)庫合并結果。通過Amoeba你能夠完成多數(shù)據(jù)源的高可用、負載均衡、數(shù)據(jù)切片的功能,目前Amoeba已在很多企業(yè)的生產(chǎn)線上使用。

下面就來把 Mysql的主從復制和讀寫分離完整的實現(xiàn)一下。

先來做Mysql的主從復制。

我實現(xiàn)的環(huán)境如下:

System:Centos 5.4 32bit

主:192.168.1.107

從:192.168.1.139

讀寫分離:192.168.1.183

拓撲圖如下:

MySql的主從復制:

對主MysqL服務器,主要是開啟二進制日志,這個默認是開啟的,在配置文件中:

# vim /etc/my.cnf

server-id = 1 (默認為1)

log-bin = mysql-bin (這個也是默認開啟的)

下面連接到mysql數(shù)據(jù)庫中創(chuàng)建一個用戶并賦予復制權限。

mysql> GRANT REPLICATION CLIENT,REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.139' IDENTIFIED BY "123456";

這樣在主服務器上操作暫時完成了。

下面來在從服務器上操作:

修改主配置文件:my.cnf

因為在主mysql中已經(jīng)有數(shù)據(jù)了,所以要把主服務器的數(shù)據(jù)導入到從服務器中,所以在主服務器上的操作:

以上操作完成后就可以做把主從連接在一起了。

在從服務器上進入數(shù)據(jù)庫中

  • 下面就可以在從服務器上開啟復制了

    mysql> start slave;

    查看是否連接成功:

    可在主服務器上創(chuàng)建一個數(shù)據(jù)庫或表來在從服務器上來驗證一下。

    下面來進行最為核心的內(nèi)容——讀寫分離

    下面的操作要在讀寫分離的服務器上操作也就是:192.168.1.183

    Amoeba的安裝:

    安裝Amoeba前要先安裝JDK,因為Amoeba是用java開發(fā)的所要有JDK支持。

    如果沒有安裝JDK,要先安裝,方法如下 :

    安裝完成后就可以安裝Amoeba了

    下載:

  • wget %20for%20mysql/2.x/amoeba-mysql-binary-2.1.0-RC5.tar.gz
  • 安裝:

    解壓后就完成了。下面要做的就是配置。

    下面就來配置一下。

    # cd /usr/local/amoeba

    # vim dbServer.xml

    下面來配置amoeba.xml文件

    配置完成后就可以啟動amoeba了。

    從上面的一些信息可以看到amoeba已經(jīng)啟動,下面就可以測試一下了。

    下面來做一測試:

    為了更好的看到測試結果,要做以下這些步驟:

    測試之前要先保證amoeba-server有訪問兩個主從服務器test庫的權限,在主mysql上執(zhí)行:

    下面開始測試:

    先讓主從開始復制,即在從服務器上執(zhí)行:

    mysql> slave start;

    再從讀寫分離的服務器上登錄:

    # mysql -uroot -p123456 -h192.168.1.183 -P8066

    進入之后,先來創(chuàng)建一個數(shù)據(jù)庫zhou,然后在這個數(shù)據(jù)庫中創(chuàng)建一個表test

    mysql> create database zhou;

    mysql> use zhou;

    mysql> create table test (id int(10), name varchar(20),adress varchar(30));

    做完這些,回到從服務器上執(zhí)行:

    mysql> slave stop;

    接著在主從服務器上各加入一條不同的數(shù)據(jù)。

    在主上:

    mysql> use zhou;

    mysql> insert into test ('1','zhou','this_is_master');

    在從上:

    mysql> use zhou;

    mysql> insert into test ('2','zhou','this_is_slave');

    完成后就可以在讀寫分離服務器上測試讀寫了

    在讀寫分離服務器上:

    mysql> use zhou;

    mysql> select * from test;

    +------+------+---------------+

    | id | name | address |

    +------+------+---------------+

    | 2 | zhou | this_is_slave |

    +------+------+---------------+

    1 row in set (0.01 sec)

    從結果可以看出數(shù)據(jù)是讀的從服務器上的數(shù)據(jù),然后我們直接插入數(shù)據(jù),再來測試

    mysql> insert into test values('3','hhh','test_write');

    Query OK, 1 row affected (0.01 sec)

    mysql> select * from test;

    +------+------+---------------+

    | id | name | address |

    +------+------+---------------+

    | 2 | zhou | this_is_slave |

    +------+------+---------------+

    1 row in set (0.00 sec)

    結果顯示出的數(shù)據(jù)沒有改變,網(wǎng)站空間,因為我們把主從復制停了,所以數(shù)據(jù)沒有同步,從查詢的結果可以看到,數(shù)據(jù)還是來自從服務器。

    然后們再在主服務器上查詢可以看到:

    mysql> select * from test;

    +------+------+--------------- +

    | id | name | address |

    +------+------+--------------- +

    | 1 | zhou | this_is_master |

    +------+------+--------------- +

    | 3 | hhh | test_write |

    +------+------+--------------- +

    從上面的結果可以看出,數(shù)據(jù)的讀寫分離成功了。

    聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    Mysql的主從復制的讀寫分離之Amoeba實現(xiàn)

    Mysql的主從復制的讀寫分離之Amoeba實現(xiàn):Mysql的主從復制的讀寫分離之Amoeba實現(xiàn)以前寫過了一篇Mysql的主從復制,但沒有實現(xiàn)Mysql的主從復制的讀寫分離。關于讀寫分離:讀寫分離(Read/WriteSplitting), Mysql的主從復制的讀寫分離之Amoeba實現(xiàn) 以前寫過了一篇Mysql的主從復制,但沒有實現(xiàn)M
    推薦度:
    標簽: 實現(xiàn) my mysql
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top