因为PhxSQL使用的时候,会出一些问题。所有机器都停掉再启动的时候,我就没有一步搞好过。文档也就是官方WIki里面的<成员管理>可以参考一下,基本就是重新部署了。
所以,又捡起了以前不知道什么原因放弃的PXC。部署起来也比较简单,一些不支持的东西也不太用的到。
Note:
默认会用到下面的端口,生产环境记得配置相应的防火墙规则
- 3306 数据库对外服务的端口号
- 4444 请求SST SST: 指数据一个镜象传输 xtrabackup , rsync ,mysqldump
- 4567 组成员之间进行沟通的一个端口号
- 4568 传输IST用的。相对于SST来说的一个增量
1 | 一些名词介绍: |
其他原理介绍可看:
一、安装
测试环境下,首先还是先把selinux和防火墙关掉,卸载系统中自带的MariaDB。
最方便的安装方式当然是yum了,自动安装依赖。先安装库:
1 | sudo yum install http://www.percona.com/downloads/percona-release/redhat/0.1-6/percona-release-0.1-6.noarch.rpm |
再安装PXC就行了
1 | sudo yum install Percona-XtraDB-Cluster-57 -y |
启动MySQL
1 | sudo service mysql start |
因为5.7首次启动的密码叒改了,从error.log中抓初始密码即可
1 | sudo grep 'temporary password' /var/log/mysqld.log |
以root用户登录
1 | mysql -u root -p |
修改root账户密码
1 | ALTER USER 'root'@'localhost' IDENTIFIED BY 'rootPass'; |
关掉MySQL服务,长时间无响应的话,kill掉相关pid就行了(ps. 其实service stop 也是直接 kill)。
1 | sudo service mysql stop |
修改my.cnf文件
1 | # |
不同节点主要修改wsrep_node_address和wsrep_node_name即可。
二、启动
我这里为了懒省事,直接完全克隆这个配置好的虚拟机。当做第二台PXC节点。
就修改里面的my.cnf即可。
1、在node#1上使用命令启动PXC
1 | systemctl start mysql@bootstrap.service |
进入mysql,添加同步所使用的账户密码,刷新权限。
1 | CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 's3cret'; |
其中的账户密码,要和my.cnf中wsrep_sst_auth项所填的一样
在node#2上
2、直接启动mysql服务,不可使用mysql@bootstrap.service启动
1 | service mysql start |
进入MySQL查看相应的参数 (仅展示需要查看的项)
1 | show status like 'wsrep%'; |
看以上几项是否相同。集群大小是2,状态是Primary,本地是Synced状态。
这样两个node的PXC集群就搭建好了。
三、下线重启
当两台机子中有一台以及被迫下线的时候,可以简便的把修复好的节点并网继续运行。也不用使用mysqldump导入缺失的数据,直接启动服务就可以。
1 | service mysql start |
直接当子节点重启服气,因为在内部已经把剩余的一个node当做mysql@bootstrap.service服务在运行了。
查看两个node的状态,同时查看数据同步情况,在数据量不大的情况下,应该能够自动增量同步,依托于percona自家的xtrabackup。
1 | show status like 'wsrep%'; |
结束。🔚
