zdc253212956 发表于 2018-10-11 06:03:02

mysql高可用之PXC(Percona XtraDB Cluster)

  mysql高可用之PXC(Percona XtraDB Cluster)
  借鉴
  http://www.cnblogs.com/xiaoboluo768/p/5135619.html
  服务器环境信息如下:
  node1    192.168.0.100
  node2    192.168.0.101
  node3    192.168.0.102
  1.安装软件依赖包(添加repl源,再安装依赖,3台server操作一样。)
  # rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
  # yum install perl-IO-Socket-SSL perl-DBD-MySQL perl-Time-HiRes socat nc libaio rsync -y
  2.安装xtrabackup(PXC同步数据需要用到,为什么使用xtrabackup?自己查询官方文档)
  wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.2.11/binary/redhat/6/x86_64/percona-xtrabackup-2.2.11-1.el6.x86_64.rpm
  rpm -ivh percona-xtrabackup-2.2.11-1.el6.x86_64.rpm
  3.下载安装Percona-XtraDB-Cluster
  wget https://www.percona.com/downloads/Percona-XtraDB-Cluster-56/Percona-XtraDB-Cluster-5.6.24-25.11/binary/tarball/Percona-XtraDB-Cluster-5.6.24-rel72.2-25.11..Linux.x86_64.tar.gz
  无法下载软件包的请先FQ或者去官方网站查找最新版本
  tar xf Percona-XtraDB-Cluster-5.6.24-rel72.2-25.11..Linux.x86_64.tar.gz -C /usr/local/services/
  cd /usr/local/services/
  ln -s Percona-XtraDB-Cluster-5.6.24-rel72.2-25.11..Linux.x86_64/ mysql
  cd mysql
  groupadd mysql
  useradd -r -g mysql mysql
  chown -R mysql .
  chgrp -R mysql .
  cp support-files/my-default.cnf /etc/my.cnf
  mkdir -p /data/mysql/data
  chown -R mysql.mysql /data/mysql/data
  cp support-files/mysql.server /etc/init.d/mysqld
  4、以上安装步骤三个节点都安装,如果在初始化的时候报libssl.so.6和libcrypto.so.6两个动态库文件不存在的,就做下链接:
  yum install -y libssl.so.6
  ln -s /usr/lib64/libssl.so /usr/lib64/libssl.so.6
  ln -s /usr/lib64/libcrypto.so /usr/lib64/libcrypto.so.6
  ./scripts/mysql_install_db--basedir=/usr/local/services/mysql --datadir=/data/mysql/data/ --user=mysql
  #################################################################### node1 ############################################################################################
  5、node1的配置和启动如下:
  修改my.cnf配置文件如下:
  /etc/my.cnf添加如下内容:
  
  basedir = /usr/local/services/mysql
  datadir = /data/mysql/data
  并在段落添如下参数:
  wsrep_provider=/usr/local/services/mysql/lib/libgalera_smm.so      #库文件
  wsrep_cluster_address=gcomm://192.168.0.100,192.168.0.101,192.168.0.102          #节点中所有ip
  wsrep_node_address=192.168.0.100    #节点的ip
  wsrep_slave_threads=2   #开启的复制线程数,cpu核数*2
  binlog_format=ROW   #binlog格式必须为row
  default_storage_engine=InnoDB#暂时不支持其他存储引擎,只支持innodb,当然可以支持myisam,需要另外参数打开
  innodb_autoinc_lock_mode=2   #自增锁的优化
  wsrep_cluster_name=pxc-xiaoboluo   #集群名字
  wsrep_sst_auth=sst:xiaoboluo       #sst模式需要的用户名和密码
  wsrep_sst_method=xtrabackup-v2#采用什么方式复制数据。还支持mysqldump,rsync
  启动,进行授权操作,对于第一个节点必须以特殊方式启动,如下:
  查看启动选项:/etc/init.d/mysqld --help
  Usage: mysql {start|stop|restart|restart-bootstrap|reload|force-reload|status|bootstrap-pxc}[ MySQL (Percona XtraDB Cluster) options ]
  启动:
  # /etc/init.d/mysqld bootstrap-pxc
  Bootstrapping PXC (Percona XtraDB Cluster)Starting MySQL (PtraDB Cluster).........
  #
  进行查看,可以发现启动两个端口
  # netstat -nltp | grep mysqld
  tcp      0      00.0.0.0:4567                0.0.0.0:*                   LISTEN      2964/mysqld
  tcp      0      00.0.0.0:3306                0.0.0.0:*                   LISTEN      2964/mysqld
  #
  进行授权,推荐使用grant方式
  mysql登录:

  mysql> GRANT>  Query OK, 0 rows affected (0.03 sec)
  mysql> FLUSH PRIVILEGES;
  Query OK, 0 rows affected (0.03 sec)
  到这里我们的第一个节点就搞定了,剩下的两个节点配置稍微不同,安装方式都是一样的,不再重复
  #########################################node2 node3######################################################################################################
  6、node2的配置如下:
  
  basedir = /usr/local/services/mysql
  datadir = /data/mysql/data
  wsrep_provider=/usr/local/services/mysql/lib/libgalera_smm.so
  wsrep_cluster_address=gcomm://192.168.0.100,192.168.0.101,192.168.0.102
  wsrep_node_address=192.168.0.101
  wsrep_slave_threads=2
  binlog_format=ROW
  default_storage_engine=InnoDB
  innodb_autoinc_lock_mode=2
  wsrep_cluster_name=pxc-xiaoboluo
  wsrep_sst_auth=sst:xiaoboluo
  wsrep_sst_method=xtrabackup-v2
  7、node3的配置如下:
  
  basedir = /usr/local/services/mysql
  datadir = /data/mysql/data
  wsrep_provider=/usr/local/services/mysql/lib/libgalera_smm.so
  wsrep_cluster_address=gcomm://192.168.0.100,192.168.0.101,192.168.0.102
  wsrep_node_address=192.168.0.102
  wsrep_slave_threads=2
  binlog_format=ROW
  default_storage_engine=InnoDB
  innodb_autoinc_lock_mode=2
  wsrep_cluster_name=pxc-xiaoboluo
  wsrep_sst_auth=sst:xiaoboluo
  wsrep_sst_method=xtrabackup-v2
  8、node2,node3节点都配置完成以后,我们启动,对于第2,3个节点启动和我们普通的MySQL启动方式一样。
  node2启动:
  # /etc/init.d/mysqld start
  MySQL (Percona XtraDB Cluster) is not running, but lock fillock/subsys/mysql) exists
  Starting MySQL (Percona XtraDB Cluster)...............State transfer in progress, setting sleep higher
  .............
  
  查看node2日志
  # tail -f /data/mysql/3306/data/node2.err
  2017-01-08 09:15:25 6036 WSREP: REPL Protocols: 7 (3, 2)
  2017-01-08 09:15:25 6036 WSREP: Service thread queue flushed.
  2017-01-08 09:15:25 6036 WSREP: Assign initial position for certification: 2, protocol version: 3
  2017-01-08 09:15:25 6036 WSREP: Service thread queue flushed.
  2017-01-08 09:15:27 6036 WSREP: Member 2.0 (node3) requested state transfer from '*any*'. Selected 0.0 (node1)(SYNCED) as donor.

  2017-01-08 09:15:28 6036 WSREP: (b21bada5, 'tcp://0.0.0.0:4567') turning message>  2017-01-08 09:15:43 6036 WSREP: 0.0 (node1): State transfer to 2.0 (node3) complete.
  2017-01-08 09:15:43 6036 WSREP: Member 0.0 (node1) synced with group.
  2017-01-08 09:15:48 6036 WSREP: 2.0 (node3): State transfer from 0.0 (node1) complete.
  2017-01-08 09:15:48 6036 WSREP: Member 2.0 (node3) synced with group.
  #/etc/init.d/mysqld start
  Starting MySQL (Percona XtraDB Cluster).........State transfer in progress, setting sleep higher
  ...                                                      
  #########################################测试####################################################################
  9、测试
  node1节点创建表t1,插入数据,在另外两个节点也可以看见 这里就不测试了
  到这里搭建就基本结束了。3个节点同时支持write/read操作。最大节点数量不建议超过8个,更加详细的介绍以及细节建议大家参考官方文档。
  总结:
  Percona XtraDB Cluster现在已经有企业在使用了,我这里只是简单的搭建以及测试,如果线上需要使用我们还需要进行相关压力测试。比如使用sysbench,或者tpcc-mysql。
  通常我们单独使用Percona XtraDB Cluster也没有任何问题的,如果使用通过结合harproxy,或者lvs+keepalived的方式来使用会更加的完美。

页: [1]
查看完整版本: mysql高可用之PXC(Percona XtraDB Cluster)