借鉴了Percona官网文档:https://www.percona.com/doc/percona-xtradb-cluster/5.7/overview.html
准备三台Ubuntu设置静态ip
192.168.117.111 node1
192.167.117.112 node2
192.168.117.113 node3
然后通过 xshell 等 ssh 工具 连接上3台服务器 ====》 允许root以ssh登录
修改国内阿里镜像软件源 Ubuntu图形化界面换源
借鉴percona官网的安装说明:https://www.percona.com/doc/percona-xtradb-cluster/5.7/install/apt.html#apt
apt install percona-xtradb-cluster-server -y
设置好root密码
安装后直接进入mysql------》安装后默认是启动的
mysql -u root -p
输入安装时设置的root密码
创建一个 sstuser用户,密码是 password----- 对于第一个节点node1是必要的,其他两个可以不用创建
CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 'password';
授予权限
GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'sstuser'@'localhost';
刷新权限
FLUSH PRIVILEGES;
为了方便,我们将root用户允许其他主机登录
use mysql;
将下面的密码该处自己设置的root密码
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的root密码' WITH GRANT OPTION;
刷新权限
FLUSH PRIVILEGES;
这样就可以通过客户端登录到mysql了
关闭三台服务器的mysql 三台都要关闭掉
service mysql stop
在安装的时候你会发现percona集群服务器有好几个可以安装,其实大同小异。就是有些文件的位置并不一定一样。
接下来我们需要修改一些配置文件,如果你按照我安装的percona服务器 则直接复制我的代码即可
如果和我安装的percona服务器不一样,就找找配置文件对应的位置
Linux的配置文件一般都会存在/etc目录下,所以你可以通过 cd /etc/mysql 或者 /etc/perco 连按两下tab补全。查看能匹配到那些文件夹,接着进入查看里面的文件。通过cat 或 vim查看文件内容
如果发现那个文件是如图所示则说明就是了
在我的Ubuntu上则是/etc/mysql/my.cnf 其实修改percona-xtradb-cluster.cnf效果是一样的如下图
vim /etc/mysql/my.cnf
在node1服务器中加入如下代码 percona官网有说明每个参数的含义:percona官网链接
[mysqld] server-id=1 wsrep_provider=/usr/lib/libgalera_smm.so #集群的名称 和 所有服务器的 IP.用逗号隔开 这里需要修改 wsrep_cluster_name=pxc-cluster wsrep_cluster_address=gcomm://192.168.117.111,192.168.117.112,192.168.117.113 #当前服务器的名称 以及 IP 改成自己的服务器IP wsrep_node_name=node1 wsrep_node_address=192.168.117.111 #授权方式 和 用户名和密码 #这里的用户名和密码是上面sql里创建的那个用户 以及 密码 所以不用填错了 wsrep_sst_method=xtrabackup-v2 wsrep_sst_auth=sstuser:password pxc_strict_mode=ENFORCING binlog_format=ROW default_storage_engine=InnoDB innodb_autoinc_lock_mode=2
上面的配置都来自官网----->
只是官网少了[mysql] 和 server-id后面我启动第一个节点报错了 这是一个坑 少了[mysqld]会报错启动不了
同样修改节点二 和 节点三 的配置,与第一个节点不同的地方如下
server-id=2
wsrep_node_name=node2
wsrep_node_address=192.168.117.112
server-id=3
wsrep_node_name=node3
wsrep_node_address=192.168.117.113
上面的工作做完后
我们开始 启动第一个节点 需要注意的是第一个节点是需要以引导的方式启动,另外两个则正常的service 或者 systemctrl方式启动
/etc/init.d/mysql bootstrap-pxc
等第一个节点启动完成后
我们正常的方式启动节点2和节点3 即可
service mysql start
验证集群是否正常
通过Navicat或者命令行下mysql -u root -p登录到第一个节点
Navicat:
然后我们测试一下PXC模式的双向同步
在node1新建一个数据库试试比如demo
发现同步过来了
接着我们在node2中的demo中新建一个user表只包含id和name两个字段
在其他两节点查看一下会发现同步过来了
则说明集群搭建正常
如果你想在单台机器上搭建docker的percona集群则查看另外一篇文章:单服务器利用docker 虚拟mysql集群
如果你想进一步了解 搭建Haproxy对mysql集群进行负载均衡则转至:Haproxy负载均衡MySQL集群服务器
到这一步我的VMware虚拟机的主机情况如下