基于proxysql實現(xiàn)MySQL讀寫分離的實現(xiàn)實例
環(huán)境:
- 系統(tǒng)版本:CentOS 7
- MySQL版本:5.7.35
MySQL主從配置略過。
安裝
# 安裝 yum localinstall -y ./proxysql-2.2.0-1-centos7.x86_64.rpm # 啟動 systemctl start proxysql
配置
客戶端口號: 6033。代理 mysql 服務(wù)的端口,也就是應用連接使用的
管理端口號: 6032。管理 proxysql配置 的端口,只能本地登錄
# 1. 登錄管理端
mysql -uadmin -padmin -h127.0.0.1 -P6032
# 2. 配置主從庫
use main;
insert into mysql_servers(hostgroup_id,hostname,port,weight,comment) values(1,'192.168.0.10',3306,1,'master1');
insert into mysql_servers(hostgroup_id,hostname,port,weight,comment) values(2,'192.168.0.11',3306,1,'slave1');
# 2.2 檢查添加結(jié)果
select * from main.mysql_servers;
# 2.3 加載配置到RUNTIME
load mysql servers to runtime;
# 2.4 寫盤保存
save mysql servers to disk;
# 3. 配置proxysql客戶端賬戶密碼。
# 設(shè)置所有請求默認到hostgroupid為1的實例然后再根據(jù)路由分發(fā)
# transaction_persistent為1開啟事務(wù)支持
insert into mysql_users(username,password,default_hostgroup,transaction_persistent)values('root','123456',1,1);
# 3.2 查詢賬戶添加結(jié)果
select * from mysql_users;
# 3.3 保存
load mysql users to runtime;
save mysql users to disk;
# 4. 配置健康檢測賬號
# 4.1 登錄后端master的mysql控制臺
GRANT replication client ON *.* TO 'monitor'@'%' IDENTIFIED BY '123456';
flush privileges;
# 4.2 切換回proxy的控制臺
set mysql-monitor_username='monitor';
set mysql-monitor_password='123456';
load mysql variables to runtime;
save mysql variables to disk;
# 5. 配置讀寫分離路由
# 將select語句全部路由至hostgroup_id=2的組,也就是從節(jié)點
# select * from tb for update這樣的語句是修改數(shù)據(jù)的,所以需要單獨定義,將它路由至hostgroup_id=1的組(也就是主節(jié)點)
# 其他沒有被規(guī)則匹配到的組將會被路由至用戶默認的組(mysql_users表中的default_hostgroup)
insert into mysql_query_rules(rule_id,active,match_digest,destination_hostgroup,apply)values(1,1,'^SELECT.*FOR UPDATE$',1,1);
insert into mysql_query_rules(rule_id,active,match_digest,destination_hostgroup,apply)values(2,1,'^SELECT',2,1);
load mysql query rules to runtime;
load admin variables to runtime;
save mysql query rules to disk;
save admin variables to disk;測試讀寫分離
- 登錄客戶端
mysql -uroot -p'123456' -P6033 -h 127.0.0.1 # 隨便執(zhí)行點sql語句
- proxysql有個類似審計的功能,可以看到各類sql的執(zhí)行情況。在proxysql管理端執(zhí)行:
select * from stats.stats_mysql_query_digest; -- 或者 select hostgroup,schemaname,digest_text,count_star,sum_time,min_time,max_time,sum_rows_affected,sum_rows_sent from stats.stats_mysql_query_digest;
其它
- 修改proxysql后臺處理MySQL流量的后臺線程數(shù)。默認為4
set mysql-threads=16; -- 查看 show variables like '%mysql-threads%';
到此這篇關(guān)于基于proxysql實現(xiàn)MySQL讀寫分離的文章就介紹到這了,更多相關(guān)MySQL proxysql讀寫分離內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mysql數(shù)據(jù)庫連接失敗常見問題小結(jié)
你有沒有碰到過mysql數(shù)據(jù)庫連接不上的問題呢?很多的小伙伴表示,經(jīng)常會時不時的出現(xiàn)這些問題,下面這篇文章主要給大家介紹了關(guān)于mysql數(shù)據(jù)庫連接失敗常見問題的相關(guān)資料,需要的朋友可以參考下2023-06-06
Mysql查詢優(yōu)化之IN子查詢優(yōu)化方法詳解
項目中有需要,使用MySQL的in子查詢,查詢符合in子查詢集合中條件的數(shù)據(jù),但是沒想到的是,MySQL的in子查詢會如此的慢,讓人無法接受,下面這篇文章主要給大家介紹了關(guān)于Mysql查詢優(yōu)化之IN子查詢優(yōu)化的相關(guān)資料,需要的朋友可以參考下2023-02-02
mysql 實現(xiàn)添加時間自動添加更新時間自動更新操作
這篇文章主要介紹了mysql 實現(xiàn)添加時間自動添加更新時間自動更新操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01
MySQL百萬級數(shù)據(jù)大分頁查詢優(yōu)化的實現(xiàn)
在數(shù)據(jù)庫開發(fā)過程中我們經(jīng)常會使用分頁,但是如果是百萬級數(shù)據(jù)呢,本文就詳細的介紹一下MySQL百萬級數(shù)據(jù)大分頁查詢優(yōu)化的實現(xiàn),感興趣的可以了解一下2022-01-01
MySQL中把varchar類型轉(zhuǎn)為date類型方法詳解
這篇文章主要介紹了MySQL中把varchar類型轉(zhuǎn)為date類型方法詳解的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-07-07
Mysql 切換數(shù)據(jù)存儲目錄的實現(xiàn)方法
這篇文章主要介紹了Mysql 切換數(shù)據(jù)存儲目錄的實現(xiàn)方法的相關(guān)資料,需要的朋友可以參考下2017-07-07

