日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql慢sql增加读写分离_MySQL-Proxy实现MySQL读写分离提高并发负载

發布時間:2025/3/20 数据库 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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读写分离提高并发负载的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。