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