天天看点

搭建数据库中间件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表中,插入成功即可