mysql慢sql增加读写分离_MySQL-Proxy实现MySQL读写分离提高并发负载
工作拓撲:
MySQL Proxy有一項強大功能是實現“讀寫分離”,基本原理是讓主數據庫處理寫方面事務,讓從庫處理SELECT查詢。
Amoeba for MySQL是一款優秀的中間件軟件,同樣可以實現讀寫分離,負載均衡等功能,并且穩定性也高于MySQL Proxy,有興趣的可以測試一下。
環境描述:
操作系統:CentOS6.3_x64
主服務器Master:192.168.0.202
從服務器Slave:192.168.0.203
調度服務器MySQL-Proxy:192.168.0.204
一、mysql主從復制
二、mysql-proxy實現讀寫分離
1、安裝mysql-proxy
實現讀寫分離是有lua腳本實現的,現在mysql-proxy里面已經集成,無需再安裝
tar?zxvf?mysql-proxy-0.8.3-linux-glibc2.3-x86-64bit.tar.gz
mv?mysql-proxy-0.8.3-linux-glibc2.3-x86-64bit?/usr/local/mysql-proxy
2、配置mysql-proxy,創建主配置文件
cd?/usr/local/mysql-proxy
mkdir?lua?#創建腳本存放目錄
mkdir?logs?#創建日志目錄
cp?share/doc/mysql-proxy/rw-splitting.lua?./lua?#復制讀寫分離配置文件
cp?share/doc/mysql-proxy/admin-sql.lua?./lua?#復制管理腳本
vi?/etc/mysql-proxy.cnf???#創建配置文件
[mysql-proxy]
user=root?#運行mysql-proxy用戶
admin-username=proxy?#主從mysql共有的用戶
admin-password=123.com?#用戶的密碼
proxy-address=192.168.0.204:4000?#mysql-proxy運行ip和端口,不加端口,默認4040
proxy-read-only-backend-addresses=192.168.0.203?#指定后端從slave讀取數據
proxy-backend-addresses=192.168.0.202?#指定后端主master寫入數據
proxy-lua-script=/usr/local/mysql-proxy/lua/rw-splitting.lua?#指定讀寫分離配置文件位置
admin-lua-script=/usr/local/mysql-proxy/lua/admin-sql.lua?#指定管理腳本
log-file=/usr/local/mysql-proxy/logs/mysql-proxy.log?#日志位置
log-level=info?#定義log日志級別,由高到低分別有(error|warning|info|message|debug)
daemon=true????#以守護進程方式運行
keepalive=true?#mysql-proxy崩潰時,嘗試重啟
保存退出!
chmod?660?/etc/mysql-porxy.cnf
3、修改讀寫分離配置文件
vi?/usr/local/mysql-proxy/lua/rw-splitting.lua
if?not?proxy.global.config.rwsplit?then
proxy.global.config.rwsplit?=?{
min_idle_connections?=?1,?#默認超過4個連接數時,才開始讀寫分離,改為1
max_idle_connections?=?1,?#默認8,改為1
is_debug?=?false
}
end
4、啟動mysql-proxy
/usr/local/mysql-proxy/bin/mysql-proxy?--defaults-file=/etc/mysql-proxy.cnf
netstat?-tupln?|?grep?4000?#已經啟動
tcp?0?0?192.168.0.204:4000?0.0.0.0:*?LISTEN?1264/mysql-proxy
關閉mysql-proxy使用:killall?-9?mysql-proxy
5、測試讀寫分離
1>.在主服務器創建proxy用戶用于mysql-proxy使用,從服務器也會同步這個操作
mysql>?grant?all?on?*.*?to?'proxy'@'192.168.0.204'?identified?by?'123.com';
2>.使用客戶端連接mysql-proxy
mysql?-u?proxy?-h?192.168.0.204?-P?4000?-p123.com
創建數據庫和表,這時的數據只寫入主mysql,然后再同步從slave,可以先把slave的關了,看能不能寫入,這里我就不測試了,下面測試下讀的數據!
mysql>?create?table?user?(number?INT(10),name?VARCHAR(255));
mysql>?insert?into?test?values(01,'zhangsan');
mysql>?insert?into?user?values(02,'lisi');
3>.登陸主從mysq查看新寫入的數據如下,
mysql>?use?test;
Database?changed
mysql>?select?*?from?user;
+--------+----------+
|?number?|?name?|
+--------+----------+
|?1?|?zhangsan?|
|?2?|?lisi?|
+--------+----------+
4>.再登陸到mysql-proxy,查詢數據,看出能正常查詢
mysql?-u?proxy?-h?192.168.0.204?-P?4000?-p123.com
mysql>?use?test;
mysql>?select?*?from?user;
+--------+----------+
|?number?|?name?|
+--------+----------+
|?1?|?zhangsan?|
|?2?|?lisi?|
+--------+----------+
5>.登陸從服務器關閉mysql同步進程,這時再登陸mysql-proxy肯定會查詢不出數據
slave?stop;
6>.登陸mysql-proxy查詢數據,下面看來,能看到表,查詢不出數據
mysql>?use?test;
Database?changed
mysql>?show?tables;
+----------------+
|?Tables_in_test?|
+----------------+
|?user?|
+----------------+
mysql>?select?*?from?user;
ERROR?1146?(42S02):?Table?'test.user'?doesn't?exist
配置成功!真正實現了讀寫分離的效果!
總結
以上是生活随笔為你收集整理的mysql慢sql增加读写分离_MySQL-Proxy实现MySQL读写分离提高并发负载的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hive mysql 远程_Hive配置
- 下一篇: element 表格单元格内容不换行_实