主機ip | 說明 | |
192.168.168.109 | ProxySql | |
192.168.168.77 | mysql master(主) | |
192.168.168.78 | mysql slave(從) |
?
1.下載ProxySql安裝包
在192.168.168.109機器上操作
https://github.com/sysown/proxysql/releases/download/v2.5.5/proxysql-2.5.5-1-centos7.x86_64.rpm
2.安裝ProxySql
2.1安裝
在192.168.168.109機器上操作
rpm -ivh proxysql-2.5.5-1-centos7.x86_64.rpm
報錯
[root@mini109 opt]# rpm -ivh proxysql-2.5.5-1-centos7.x86_64.rpm
警告:proxysql-2.5.5-1-centos7.x86_64.rpm: 頭V4 RSA/SHA512 Signature, 密鑰 ID 8217c97e: NOKEY
錯誤:依賴檢測失敗:
perl(DBD::mysql) 被 proxysql-2.5.5-1.x86_64 需要
perl(DBI) 被 proxysql-2.5.5-1.x86_64 需要
2.2解決報錯
在192.168.168.109機器上操作
yum -y install perl-DBI perl-DBD-MySQL perl-Time-HiRes perl-IO-Socket-SSL
2.3再次安裝
在192.168.168.109機器上操作
rpm -ivh proxysql-2.5.5-1-centos7.x86_64.rpm
3.啟動
在192.168.168.109機器上操作
systemctl start proxysql.service
4.登陸ProxySQL
在192.168.168.109機器上操作
管理員登錄 ProxySQL
前提也需要能進入MySQL命令行,所以安裝一個mariadb
yum -y install mariadb
登陸ProxySQL
mysql -uadmin -padmin -h 127.0.0.1 -P 6032
5.查看ProxySQL數(shù)據(jù)庫相關(guān)信息
在192.168.168.109機器上操作
5.1查看數(shù)據(jù)庫
show databases;
?可見有五個庫: main、disk、stats 、monitor 和 stats_history
main: 內(nèi)存配置數(shù)據(jù)庫,即 MEMORY,表里存放后端 db 實例、用戶驗證、路由規(guī)則等信息。
?main 庫中有如下信息:
5.2查看表
show tables;
庫下的主要表:
mysql_servers: 后端可以連接 MySQL 服務(wù)器的列表
mysql_users: 配置后端數(shù)據(jù)庫的賬號和監(jiān)控的賬號。
mysql_query_rules: 指定 Query 路由到后端不同服務(wù)器的規(guī)則列表。
注: 表名以 runtime_開頭的表示 ProxySQL 當前運行的配置內(nèi)容,不能通過 DML 語句修改。
只能修改對應(yīng)的不以 runtime 開頭的表,然后 “LOAD” 使其生效,“SAVE” 使其存到硬盤以供下次重啟加載。
disk :持久化的磁盤的配置
stats: 統(tǒng)計信息的匯總
monitor:一些監(jiān)控的收集信息,比如數(shù)據(jù)庫的健康狀態(tài)等
stats_history: 這個庫是 ProxySQL 收集的有關(guān)其內(nèi)部功能的歷史指標
6.配置 ProxySQL 所需賬戶
在192.168.168.77數(shù)據(jù)庫操作
在主MySQL(192.168.168.77)上創(chuàng)建 ProxySQL 的監(jiān)控賬戶和對外訪問賬戶
#proxysql 的監(jiān)控賬戶
grant all privileges on *.* to 'monitor'@'192.168.168.%' identified by 'Ww12345@king';
grant all privileges on *.* to 'monitor'@'%' identified by 'Ww12345@king';
#proxysql 的對外訪問賬戶
grant all privileges on *.* to 'proxysql'@'192.168.168.%' identified by 'Ww12345@king';
grant all privileges on *.* to 'proxysql'@'%' identified by 'Ww12345@king';
#刷新權(quán)限
flush privileges;
7.設(shè)置proxy SQL監(jiān)控賬戶在192.168.168.109機器上操作
在MySQL主節(jié)點已經(jīng)創(chuàng)建過monitor賬號
在proxy SQL端進行配置一下
?
7.1登陸
mysql -uadmin -padmin -P6032 -h127.0.0.1
7.2管理端配置這個monitor監(jiān)控用戶,配置方式是修改全局變量
set mysql-monitor_username='monitor';
set mysql-monitor_password='Ww12345@king';
7.3執(zhí)行語句加入內(nèi)存和磁盤
load mysql variables to runtime;
save mysql variables to disk;
8.管理端配置讀寫分離
在192.168.168.109機器上操作
8.1將MySQL主從服務(wù)器信息添加入mysql_servers表中。
先將主從服務(wù)器存放在同一組內(nèi),等指定好讀寫規(guī)則后,系統(tǒng)會根據(jù)配置文件中的read-only值自動將其分別添加至讀組和寫組,命令如下:
我的不行直接分好組
insert into mysql_servers(hostgroup_id,hostname,port,weight,max_connections,max_replication_lag,comment) values(1,'192.168.168.77',3306,1,1000,10,'vip'),(2,'192.168.168.78',3306,1,1000,10,'slave');
?
8.2執(zhí)行以下命令即時生效:
load mysql servers to runtime;
save mysql servers to disk;
8.3設(shè)置讀寫分組
#我安裝的版本這個表多了個字段check_type
#博主proxymysql版本2.0 我的2.5
INSERT INTO mysql_replication_hostgroups VALUES (1,2,'read_only|innodb_read_only|','one-master-2-slave');
8.4執(zhí)行以下命令即時生效:
load mysql servers to runtime;
save mysql servers to disk;
9.測試讀寫分離
在192.168.168.109機器上操作
本地使用MySQL命令行或者navicat都可以連接proxy SQL:6033端口
9.1寫入數(shù)據(jù)
[root@localhost ~]# mysql -uproxysql -p123456 -P6033 -h127.0.0.1
MySQL [(none)]> create database A;
Query OK, 1 row affected (0.00 sec)
MySQL [(none)]> create database B;
Query OK, 1 row affected (0.00 sec)
MySQL [(none)]> use A;
Database changed
MySQL [A]> create table test(id char(10),name char(10));
Query OK, 0 rows affected (0.03 sec)
MySQL [A]> insert into test(id,name) values(1,'hy');
Query OK, 1 row affected (0.00 sec)
MySQL [A]> select * from test;
+------+------+
| id | name |
+------+------+
| 1 | hy |
+------+------+
1 row in set (0.00 sec)
9.2查看
MySQL [(none)]> select hostgroup,schemaname,username,digest_text,count_star from stats_mysql_query_digest;
+-----------+--------------------+----------+---------------------------------------------+------------+
| hostgroup | schemaname | username | digest_text | count_star |
+-----------+--------------------+----------+---------------------------------------------+------------+
| 1 | A | proxysql | insert into test(id,name) values(?,?) | 1 |
| 1 | A | proxysql | show tables | 1 |
| 1 | A | proxysql | create table test(id char(?),name char(?)) | 1 |
| 2 | information_schema | proxysql | SELECT DATABASE() | 1 |
| 1 | information_schema | proxysql | create database A | 1 |
| 2 | A | proxysql | select * from test | 1 |
| 1 | information_schema | proxysql | select @@version_comment limit ? | 2 |
| 1 | information_schema | proxysql | show databases | 1 |
| 1 | information_schema | proxysql | create database B | 1 |
| 1 | A | proxysql | create tables test(id char(?),name char(?)) | 1 |
| 1 | A | proxysql | show databases | 1 |
+-----------+--------------------+----------+---------------------------------------------+------------+
參考文檔:proxy SQL實現(xiàn)MySQL主從讀寫分離-CSDN博客文章來源:http://www.zghlxwxcb.cn/news/detail-802745.html
參考文檔:使用ProxySql實現(xiàn)Mysql的讀寫分離?文章來源地址http://www.zghlxwxcb.cn/news/detail-802745.html
到了這里,關(guān)于使用ProxySql實現(xiàn)Mysql的讀寫分離 詳細安裝步驟 親測可行的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!