PXC叢集搭建參考:點選打開連結
系統環境 :CentOS 7.X
PXC叢集版本:Percona-XtraDB-Cluster-57
1、安裝ProxySQL
yum install proxysql
2、修改管理者帳戶 修改admin_credentials 格式--->使用者名:密碼 ,預設為admin:admin
vi /etc/proxysql.cnf
3、開放6032端口和6033端口,6032是管理端口,6033是資料端口用于client連接配接ProxySQL
firewall-cmd --add-port=6032/tcp --permanent #開放了6032端口
firewall-cmd --add-port=6033/tcp --permanent #開放了6033端口
firewall-cmd --reload #重新加載防火牆規則
4、修改proxysql-admin.cnf檔案,根據PXC節點IP、認證使用者和密碼自行修改,ProxySQL會自動掃描PXC叢集中的其他節點,
注意(我的管理帳戶和CLUSTER_APP_USERNAME未修改),生産環境上自行修改
vi /etc/proxysql-admin.cnf
CLUSTER_XXX 為PXC節點的認證 對應 PXC配置中的wsrep_sst_auth
CLUSTER_APP_USERNAME為ProxySQL對client暴露的帳戶和密碼
export MODE="singlewrite" ,該模式隻會在一個節點上寫,其他節點隻能讀
5、啟動ProxySQL
service proxysql start
6、啟用配置檔案,使用--enable選項可将Percona XtraDB群集節點自動配置到ProxySQL中
proxysql-admin --config-file=/etc/proxysql-admin.cnf --enable
7、檢視配置結果,管理者帳戶
mysql --user=admin -p --host=localhost --port=6032 --protocol=tcp
登入成功後 use disk;
然後檢視表 select * from mysql_servers;
會看到你的PXC的節點資訊,并且隻有一個節點是寫因為mode為singlewrite
8、在PXC的某個節點上建立ProxySQL的client使用者(配置檔案中的CLUSTER_APP_USERNAME)(其他節點自動同步)
登入PXC的root使用者,建立新使用者并賦權(根據之前自己的配置修改使用者名和密碼)
CREATE USER 'proxysql_user'@'172.16.3.195' IDENTIFIED BY 'passw0rd'
GRANT ALL ON * . * TO 'proxysql_user'@'172.16.3.195';
FLUSH PRIVILEGES;
9、至此配置基本就結束了,下面進行驗證
登入ProxySQL的client賬戶
mysql --user=proxysql_user -p --host=172.16.3.195 --port=6033 --protocol=tcp
注意--->上面的host= 後面要寫ProxySQLd的IP位址,不要寫localhost,因為我們在PXC叢集中建立的使用者就是@'172.16.3.195'是IP位址
然後建立一個資料庫
create database ww;
登入PXC叢集檢視,會發現多了個ww的資料庫,至此配置完成
其他優化:
1、上面說了我們使用的mode是singlewrite,也就是隻有一個節點能寫,我們還可以配置備用寫節點
2、我們知道PXC的節點有Synced 狀态,預設的ProxySQL是無法檢測Synced 狀态的節點的,我們需要進行一些節點排程優化
ProxySQL的其他指令
1、Add Percona XtraDB Cluster application user to ProxySQL database
proxysql-admin --config-file=/etc/proxysql-admin.cnf --adduser
2、Sync user accounts currently configured in Percona XtraDB Cluster to ProxySQL database except users with no
password and the admin user.
proxysql-admin --config-file=/etc/proxysql-admin.cnf --syncusers
注意:此指令會删除ProxySQL資料庫中不在PXC叢集中的使用者
其他注意的地方:
1、如果需要新增業戶賬戶則先登入ProxySQL的管理賬戶然後在ProxySQL的管理賬戶下的disk庫下的mysql_uers表中插入賬戶資料,插入成功後要執行以下語句
LOAD MYSQL USERS TO RUNTIME;
SAVE MYSQL USERS TO DISK;
然後再PXC叢集中建立該使用者,并賦權
CREATE USER ''Proxysql的client使用者'@'ProxySQL的IP位址' IDENTIFIED BY 'ProxySQL的client的密碼';
GRANT ALL ON * . * TO 'Proxysql的client使用者'@'ProxySQL的IP位址';
FLUSH PRIVILEGES;
2、如果要添加PXC叢集節點則将資料插入mysql_servers表中,插入成功即可