mysql主從同步和讀寫分離

Mysql讀寫分離實驗

需要三臺服務器

192.168.254.11 Mysql master ---read/write

192.168.254.12 Mysql slave ---read

192.168.254.13 Mysql Proxy

預安裝mysql

準備工作

要做讀寫分離,先做主從同步

master

Vi /etc/mysql/my.cnf

如果有註銷:

bind-address127.0.0.1

如果沒有添加:

Log-bin

Server-id=1

重啓mysql服務

/etc/init.d/mysqld restart

登錄mysql

Mysql –uroot –p

創建一共享賬號

Grant all on *.* to ‘root’@’%’ identified by ‘root113’

查看並記錄當前二進制日誌狀態

Show master status;

wKioL1NPakTBSm53AACzuqnV0H0713.jpg

slave

Vi /etc/mysql/my.cnf

如果有註銷:

bind-address127.0.0.1

如果沒有添加:

Log-bin

Server-id=10##這個值需要比master大,沒有其他的機器使用

重啓mysql服務

/etc/init.d/mysqld restart

登錄mysql執行同步語句

Msyql –uroot –p

Change master to

Master_host=’192.168.254.11’,

Master_user=’root’,

Master_password=’root113’,

Master_log_file=’mysql-bin.000021’,

Master_log_pos=106;

Start slave

Show slave status\G

Slave_IO_Runningyes

Slave_SQL_Runningyes

創建一個共享賬號,這裏不需要主要是後面讀寫分離時用到

Grant all on *.* to ‘root’@’%’ identified by ‘root113’

Quit

如果主數據庫有數據:

取消主數據庫表鎖定

Flush tables with read lock;

查看主數據庫狀態

Show master status

記錄filepositon

複製主數據庫的數據文件/var/lib/mysql到從服務器

取消表鎖定

Unlock tables;

到這裏mysql主從同步就完成了

可以在master上隨便做點操作試試,看slave是否有同步

做讀寫分離

proxy主機上

需要軟件mysql-proxy,下載地址:

http://mysql.cdpa.nsysu.edu.tw/Downloads/MySQL-Proxy/

這裏下載源碼的安裝了幾次不成功,emerge也沒法安裝,只能下在編譯好的數據包了

Tar zxvf mysql-proxy-0.8.4-linux-glibc2.3-x86-32bit.tar.gz –C /usr/local

Mv mysql-proxy-0.8.4-linux-glibc2.3-x86-32 mysql-proxy

Export PATH=$PATH:/usr/local/mysql-proxy/bin

Echo “PATH=$PATH:/usr/local/mysql-proxy/bin” >> /etc/profile

啓動mysql-proxy

mysql-proxy --daemon --log-level=debug --user=mysql-proxy --keepalive --log-file=/var/log/mysql-proxy.log --plugins="proxy"--proxy-backend-addresses="192.168.254.11:3306"--proxy-read-only-backend-addresses="192.168.254.12:3306"--proxy-lua-script="/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua"--plugins=admin --admin-username="admin"--admin-password="admin"--admin-lua-script="/usr/local/mysql-proxy/lib/mysql-proxy/lua/admin.lua"

wKiom1NPanagpQJKAAP9fTrY7lM445.jpg

這裏我們看到已經啓動,端口40404041是管理端口)

測試

開臺測試機器

通過mysql proxy連接

Mysql –uroot –proot113 –h 192.168.254.13 –port=4040

登錄管理端口

Mysql –uadmin –padmin –h 192.168.254.13 –port=4041

## 這個用戶名密碼是mysql-proxy啓動時設置的

wKioL1NPasayv7GxAAEBzumw7a8701.jpg

正常狀態

備註:剛開始測試時會遇到下圖情況,這個是正常的,主要是默認mysql-proxy做分離的最小值是4個鏈接,所以測試時沒有轉到slave機器上

 wKioL1NPatCTY65fAAEQE4nvN4o644.jpg

修改方法

vi /usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua

修改min_idle_connections值和max_idle_connections

wKiom1NPat6RD7cqAACWmvSzw9Q447.jpg

Mysql-proxy啓動參數

--help-all :獲取全部幫助信息;

--proxy-address=host:port :代理服務監聽的地址和端口;

--admin-address=host:port :管理模塊監聽的地址和端口;

--proxy-backend-addresses=host:port :後端mysql服務器的地址和端口;

--proxy-read-only-backend-addresses=host:port :後端只讀mysql服務器的地址和端口;

--proxy-lua-script=file_name :完成mysql代理功能的Lua腳本;

--daemon :以守護進程模式啓動mysql-proxy;

--keepalive :在mysql-proxy崩潰時嘗試重啓之;

--log-file=/path/to/log_file_name :日誌文件名稱;

--log-level=level :日誌級別;

--log-use-syslog :基於syslog記錄日誌;

--plugins=plugin:在mysql-proxy啓動時加載的插件;

--user=user_name :運行mysql-proxy進程的用戶;

--defaults-file=/path/to/conf_file_name : 默認使用的配置文件路徑;其配置段使用[mysql-proxy]標識;

--proxy-skip-profiling : 禁用profile;

--pid-file=/path/to/pid_file_name :進程文件名;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章