mysql讀寫分離amoeba實現

來源:互聯網
上載者:User

標籤:database   伺服器   master   虛擬機器   create   

用amoeba配合mysql主從構建mysql讀寫分離

1 mysql主從配置

mysql master192.168.11.177

mysql slave192.168.11.178

amoeba 主機192.168.11.179

倆台虛擬機器上

yum install mysqlmysql-serevr mysql-devel(沒有用,防止以後用)

/etc/init.d/mysqldstart

mysqladmin -u rootpassword ‘123456‘

chkconfig mysqld on

在mysql master上

(1)

mysql -uroot-p123456

create database tb;

use tb;

create tabletbtable(id int(4),name nvarchar(20));

quit

(測試用的庫和表)

(2)

vim /etc/my.cnf

server-id=161  (伺服器唯一ID,預設是1,一般取IP最後一段,整數1到2的32次方)

log-bin=mysql-bin #啟用日誌

binlog-do-db=tb #指明同步那些資料庫

replicate-ignore-db=test #指明不同步那些資料庫

replicate-ignore-db=mysql

replicate-ignore-db=information_schema

port=3306

(3)

登入主庫賦予從庫許可權帳號,允許使用者在主庫上讀取日誌(使用者名稱: slave密碼:123456)

mysql -uroot-p123456

grant replicationslave on *.* to ‘tbslave‘@‘192.168.11.135‘ identified by ‘123456‘;

為驗證帳號我們可以在從的機器上用命令作如下測試

mysql -utbslave -p -h 192.168.11.161 



(4)

顯示主庫資訊

show master status;

mysql> showmaster status; 

                             650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/45/86/wKioL1PolALABHnfAAFJkLZ0yaE102.jpg" title="image001.png" alt="wKioL1PolALABHnfAAFJkLZ0yaE102.jpg" />

 

在mysql slave 上

vim /etc/my.cnf

[mysqld]

在從庫上建立要同步的databases;#tbfltest

server-id=177

mysql> slavestop

mysql> changemaster tomaster_host=‘192.168.11.161‘,master_user=‘tbslave‘,master_password=‘123456‘,master_log_file=‘mysql-bin.000003‘,master_log_pos=264;

Query OK, 0 rows affected(0.02 sec)

mysql> slavestart;

Query OK, 0 rowsaffected (0.00 sec)

 

 show slavestatus\G;

***************************1. row ***************************

              Slave_IO_State: Waiting for master to sendevent

                 Master_Host: 192.168.11.161

                 Master_User: tbslave

                 Master_Port: 3306

               Connect_Retry: 60

             Master_Log_File: mysql-bin.000003

         Read_Master_Log_Pos: 264

              Relay_Log_File: mysqld-relay-bin.000002

               Relay_Log_Pos: 251

       Relay_Master_Log_File: mysql-bin.000003

            Slave_IO_Running: Yes

           Slave_SQL_Running: Yes

             Replicate_Do_DB:

         Replicate_Ignore_DB:

          Replicate_Do_Table:

      Replicate_Ignore_Table:

     Replicate_Wild_Do_Table:

 Replicate_Wild_Ignore_Table:

                  Last_Errno: 0

                  Last_Error:

                Skip_Counter: 0

         Exec_Master_Log_Pos: 264

             Relay_Log_Space: 407

             Until_Condition: None

              Until_Log_File:

               Until_Log_Pos: 0

          Master_SSL_Allowed: No

          Master_SSL_CA_File:

          Master_SSL_CA_Path:

             Master_SSL_Cert:

           Master_SSL_Cipher:

              Master_SSL_Key:

       Seconds_Behind_Master: 0

Master_SSL_Verify_Server_Cert:No

               Last_IO_Errno: 0

               Last_IO_Error:

              Last_SQL_Errno: 0

              Last_SQL_Error:

1 row in set (0.01sec)

 

ERROR:

No query specified

 

mysql> 

 

測試

在主庫上建立表,看看從會不會立即同步

主庫上:

mysql -uroot-p123456

use tb;

create tabletbtest(id int(100),name nvarchar(20),passwd nvarchar(100));

切換到從機上

mysql -uroot-p123456

use tb;

show tables;

如果能看到主庫中建立的表那麼表示成功同步了(配置好以後主mysql不要重啟,重啟mysql master的status會發生變化,slave就有問題了,要重新執行change master tomaster_host=‘192.168.11.161‘,master_user=‘tbslave‘,master_password=‘123456‘,master_log_file=‘mysql-bin.000003‘,master_log_pos=264;)

在mysql master執行操作,

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/45/85/wKiom1PokxTQx6sdAAA-MYtFOi4485.jpg" title="image002.png" alt="wKiom1PokxTQx6sdAAA-MYtFOi4485.jpg" />

發生變化,

2  配置amoebafor  mysql(amoeba 主機192.168.11.179)

2.1 安裝java,配置java環境變數

sh jdk-6u32-linux-x64.bin

mv jdk1.6.0_32/ /usr/local/java

vim ~/.bash_profile

PATH=$PATH:$HOME/bin:/usr/local/amoeba/bin

JAVA_HOME=/usr/local/java

export JAVA_HOME

 

export PATH

2.2 配置amoeba

Cd /usr/local/amoeba/conf

Vim dbServers.xml

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/45/86/wKioL1PolD-hutNtAAPWfsKm1z4561.jpg" title="image003.png" alt="wKioL1PolD-hutNtAAPWfsKm1z4561.jpg" />

此部分定義真實mysql伺服器的連接埠,資料庫名稱,mysql使用者及密碼。
主從資料庫定義:

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/45/85/wKiom1PokznQcsylAAPYWpC497E417.jpg" title="image004.png" alt="wKiom1PokznQcsylAAPYWpC497E417.jpg" />

此部分定義主伺服器,從伺服器,及從伺服器串連池。這裡只定義資料庫地址,它們的使用者及密碼就是上面的abstractServer裡的設定。注意用來串連真實mysql伺服器的使用者必須擁有遠端連線許可權。

amoeba.xml配置

amoeba串連驗證配置:

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/45/86/wKioL1PolHKzsUFZAAWvAwHDevo815.jpg" title="image005.png" alt="wKioL1PolHKzsUFZAAWvAwHDevo815.jpg" />

這裡定義串連amoeba時用來驗證的使用者及密碼。
讀寫分離配置:

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/45/86/wKioL1PolJLy57KoAAEhmFoBhoI066.jpg" title="image006.png" alt="wKioL1PolJLy57KoAAEhmFoBhoI066.jpg" />

在mysql主從主機上,分別執行

grant all on *.* to [email protected]‘%‘ identified by‘atest‘;

amoeba啟動

啟動命令:amoeba  start

此命令以前台的方式啟動,會輸出啟動時的資訊,檢查沒有錯誤資訊後,中斷,並後台運行:

Amoeba  start  &


 


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.