天天看點

搭建資料庫中間件ProxySQL +PXC叢集

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表中,插入成功即可