搭建 PXC 集群
三台Rocky -Linux主机
IP | 端口 | 角色 |
---|---|---|
192.168.1.51 | 3306 | pxc1 |
192.168.1.52 | 3306 | pxc2 |
192.168.1.53 | 3306 | pxc3 |
查看防火墙firewall和getenforce状态,是否关闭
[root@Rocky-1 ~]# sudo firewall-cmd --state
not running
[root@Rocky-1 ~]# getenforce
Disabled
配置hosts解析——三台设备均配置
禁用MySQL模块,使用自带的模块
sudo yum module disable mysql
yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
percona-release setup pxc-80
yum install percona-xtradb-cluster
初始化数据库
vim /etc/my.cnf
其余设备同理
启动 mysql,修改密码
注意:首节点,第一个节点需要以引导模式启动
[root@pxc1 ~]# systemctl start mysql@bootstrap.service
查看临时密码
进入MySQL,并修改密码
接着在第二和第三个节点上正常启动数据库服务,命令如下:
注意:第一个节点加入的集群,与后续加入的节点证书不一致,需要将后续加入的节点的证书删除 ,并拷贝第一个节点的证书
拷贝证书后,文件权限会改变
[root@pxc2 ~]# systemctl start mysql.service
[root@pxc3 ~]# systemctl start mysql.service
查询集群信息
mysql> show status like 'wsrep%';
或者
查看 PXC 集群状态信息,在任意一个节点执行以下命令:
[root@pxc1 ~]# mysql -uroot -p123456 -e "show status like 'wsrep_cluster%';"
mysql: [Warning] Using a password on the command line interface can be insecure.
+----------------------------+--------------------------------------+
| Variable_name | Value |
+----------------------------+--------------------------------------+
| wsrep_cluster_weight | 3 |
| wsrep_cluster_capabilities | |
| wsrep_cluster_conf_id | 3 |
| wsrep_cluster_size | 3 |
| wsrep_cluster_state_uuid | 47f68dce-940c-11ee-85d5-c29e7cbcc6e4 |
| wsrep_cluster_status | Primary |
+----------------------------+--------------------------------------+
mysql> show status where Variable_name in ('wsrep_cluster_size','wsrep_cluster_status','wsrep_connected','wsrep_ready') ;
+----------------------+---------+
| Variable_name | Value |
+----------------------+---------+
| wsrep_cluster_size | 3 |
| wsrep_cluster_status | Primary |
| wsrep_connected | ON |
| wsrep_ready | ON |
+----------------------+---------+
4 rows in set (0.00 sec)
验证:
- 在第二个节点上创建新数据库
-
mysql@pxc2> CREATE DATABASE percona;
-
- 切换到新创建的数据库
-
mysql@pxc3> USE percona;
-
- 在第三个节点上创建一个表
-
mysql@pxc3> CREATE TABLE example (node_id INT PRIMARY KEY, node_name VARCHAR(30));
-
- 在第一个节点上插入记录
-
mysql@pxc1> INSERT INTO percona.example VALUES (1, 'percona1');
-
- 在第二个节点上从该表中检索行
-
mysql@pxc2> SELECT * FROM percona.example;
-