CentOS7下部署三节点PXC集群

作者: Huang Jinqiang 分类: MySQL 发布时间: 2017-06-12 22:11
  1. PXC介绍
    Percona XtraDB Cluster,简称PXC, 是Percona公司推出的基于Galera库的MySQL高可用解决方案, 其特点是同步复制和数据强一致性, 支持多点写入和并行复制,完全兼容Oracle MySQL和Percona Server, 可以2个节点组成集群, 官方推荐是三节点; 在生产环境中建议采用单点写入的方式,避免多节点同时更新同一行记录而发生更新丢失的问题。
    _images/cluster-diagram1.png
    三节点主机名和ip规划如下
Node Host IP
Node 1 node101 172.16.123.101
Node 2 node102 172.16.123.102
Node 3 node103 172.16.123.103

三个节点操作系统均为Centos7, 关闭firewalld, 关闭selinux

  1. 三个节点分别创建mysql用户
    shell]# groupadd -g 27 mysql
    shell]# useradd -g 27 -u 27 -M -d /usr/local/mysql -s /sbin/nologin mysql

  2. 三个节点分别创建相关目录并授权
    shell]# mkdir -p /data/mysql/mysql_3306/{bin_logs,data,error_logs,general_logs,relay_logs,slow_logs,tmp,undo_logs}
    shell]# chown mysql.mysql /data/mysql -R

  3. 三个节点分别安装percona源
    shell]# yum -y install https://www.percona.com/redir/downloads/percona-release/redhat/latest/percona-release-0.1-4.noarch.rpm

  4. 三个节点分别安装Percona XtraDB Cluster, 当前最新版本是5.7.18-29.20.1.el7
    shell]# yum -y install Percona-XtraDB-Cluster-57

  5. 编辑节点node101的/etc/my.cnf, 添加Percon XtraDB Cluster的配置
    server_id=3306102
    binlog_format=ROW
    default_storage_engine=InnoDB
    innodb_autoinc_lock_mode=2
    wsrep_provider=/usr/lib64/galera3/libgalera_smm.so
    wsrep_cluster_name=pxc-cluster #pxc集群的名称
    wsrep_cluster_address=gcomm://172.16.123.101,172.16.123.102,172.16.123.103 #pxc集群的节点
    wsrep_node_address=172.16.123.101 #当前节点的ip
    wsrep_sst_method=xtrabackup-v2
    wsrep_sst_auth=sstuser:sstp@ssw0rd

  6. 启动第一个节点
    shell]# systemctl start mysql@bootstrap.service

  7. 修改密码并创建sst用户
    shell]# grep password /data/mysql/mysql_3306/error_logs/error.log
    2017-06-12T12:22:32.844324Z 1 [Note] A temporary password is generated for root@localhost: jlXg>vs?W0/(
    shell]# mysql --socket=/tmp/mysql_3306.sock --user=root -p
    root@localhost:mysql_3306.sock [(none)]> ALTER USER CURRENT_USER() IDENTIFIED BY 'rootP@ss';
    Query OK, 0 rows affected (0.14 sec)
    root@localhost:mysql_3306.sock [(none)]> GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON . TO 'sstuser'@'localhost';
    Query OK, 0 rows affected (0.14 sec)
    root@localhost:mysql_3306.sock [(none)]> flush privileges;
    Query OK, 0 rows affected (0.15 sec)
    root@localhost:mysql_3306.sock [(none)]> exit
    Bye

  8. 把节点node101的配置文件/etc/my.cnf拷贝到节点node102, 修改server_id和wsrep_node_address
    server_id=3306102
    wsrep_node_address=172.16.123.102

  9. 启动节点node102
    shell]# systemctl start mysql.service

  10. 按照配置节点node102的方法配置node103(省略)

  11. 查看集群状态

  1. 验证集群复制
    在节点node102中执行SQL创建percona库

在节点node103中执行SQL创建example表

在节点node101中执行SQL写入数据

在节点node102中执行SQL查看表数据记录

  1. 关于集群节点的启动和关闭
    第一个启动的节点,使用的命令是systemctl start mysql@bootstrap.service, 关闭命令是systemctl stop mysql@bootstrap.service, 否则不起作用!
    对于其他节点使用systemctl start mysql.service启动,关闭时则使用systemctl stop mysql.service;
    如果整个集群都关闭了, 那么下次集群启动的第一个节点依然使用systemctl start mysql@bootstrap.service

发表评论

电子邮件地址不会被公开。 必填项已用*标注