PXC

PXC概述

1)PXC介绍

  • 是基于Galera的mysql高可用集群解决方案
  • Galera Cluster是Codership公司开发的一套免费开源的高可用方案
  • PXC集群主要由两部分组成:Percona Server with XtraDB和Write Set Replication patches(同步、多主复制插件)
  • 官网:galeracluster.com

2)特点

  • 数据强一致性、无同步延迟
  • 没有主从切换操作,无需使用虚拟IP
  • 支持InnoDB存储引擎
  • 多线程复制
  • 部署使用简单
  • 支持节点自动加入,无需手动拷贝数据

如何实现数据强一致性?
服务器执行客户端的SQL命令时,向集群发送广播,你们能不能执行这个命令?如果能,回复能,所有服务器都能时,所有服务器存储数据,如果有一台服务器回复不能,则不存储该数据,回复客户端存储失败

3)端口

端口 说明
3306 数据库服务端口
4444 SST端口
4567 集群通信端口
4568 IST端口
SST State Snapshot Transfer 全量同步
IST Incremental State Transfer 增量同步

部署PXC

本次案例:

主机名 IP地址 角色
pxc1 192.168.4.71 数据库服务器
pxc2 192.168.4.72 数据库服务器
pxc2 192.168.4.73 数据库服务器
  • 配置主机名与IP地址绑定:
[root@pxc1,pxc2,pxc3] vim /etc/hosts
192.168.4.71     pxc1
192.168.4.72     pxc2
192.168.4.73     pxc3
  • 安装软件包
[root@pxc1,pxc2,pxc3] rpm -ivh libev-4.15-1.el6.rf.x86_64.rpm
[root@pxc1,pxc2,pxc3] yum -y install percona-xtrabackup-24-2.4.13-1.el7.x86_64.rpm  #在线热备工具
[root@pxc1,pxc2,pxc3] rpm -ivh qpress-1.1-14.11.x86_64.rpm   #递归压缩工具
[root@pxc1,pxc2,pxc3] tar -xvf Percona-XtraDB-Cluster-5.7.25-31.35-r463-el7-x86_64-bundle.tar -C .   #集群服务程序
[root@pxc1,pxc2,pxc3] yum -y install Percona-XtraDB-Cluster-*.rpm
  • 修改配置文件:(所有服务器都修改)

/etc/percona-xtradb-cluster.conf.d/

配置文件 说明
mysqld.cnf 数据库服务运行参数配置文件
mysqld_safe.cnf Percona Server 5.7配置文件
wsrep.cnf PXC集群配置文件
[root@pxc1,pxc2,pxc3] cd /etc/percona-xtradb-cluster.conf.d/
[root@pxc1,pxc2,pxc3] vim mysqld.cnf
[mysqld]
server-id=71     #server-id 不允许重复
datadir=/var/lib/mysql     #数据库目录
socket=/var/lib/mysql/mysql.sock  #socket文件
log-error=/var/log/mysqld.log      #日志文件
pid-file=/var/run/mysqld/mysqld.pid   #pid文件
log-bin         #启用binlog日志
log_slave_updates       #启用链式复制
expire_logs_days=7      #日志文件保留天数

[root@pxc1,pxc2,pxc3] vim mysqld_safe.cnf  #不需要改动
[mysqld_safe]
pid-file = /var/run/mysqld/mysqld.pid  #pid配置文件位置及名称
socket = /var/lib/mysql/mysql.sock  #socket文件位置及名称
nice = 0   #优先级

[root@pxc1,pxc2,pxc3] vim wsrep.cnf
wsrep_cluster_address=gcomm://192.168.4.71,192.168.4.72,192.168.4.73  #成员列表,所有服务器必须一样
wsrep_node_address=192.168.4.71  #本机ip
wsrep_cluster_name=pxc-cluster  #集群名称,所有服务器必须一样
wsrep_node_name=pxc1  #本机主机名
wsrep_sst_auth="sstuser:123qqq...A"   #sst数据同步用户名:密码, 所有服务器都一样
  • 启动服务

一台服务器上执行初始化即可,其余服务器启动时会同步该服务器的所有数据

初始化操作:

] systemctl start [email protected]  #启动集群服务
] grep root@ /var/log/mysqld.log  #查看初始密码
] mysql -uroot -p’W.HiOb8(ok)_’  #初始密码登录
mysql> alter user root@”localhost” identified by “123456”; #修改登录密码
mysql> grant reload,lock tables,replication client,process on *.*  to sstuser@"localhost” identified by “123qqq...A”; #添加授权用户

如果启动失败:

] vim /var/log/mysqld.log  #查看报错信息

其他服务器:

] systemctl start mysql  #启动数据库服务
  • 查看集群状态:
mysql> show status like '%wsrep%';   #查看集群状态,每台服务器都可以查看
wsrep_incoming_addresses 192.168.4.72:3306,192.168.4.73:3306,192.168.4.71:3306
#成员列表
wsrep_cluster_size    3     #集群服务器数量
wsrep_cluster_status  Primary    #集群状态
wsrep_connected       ON    #连接状态
wsrep_ready           ON    #服务状态
  • 测试集群功能:
  1. 在任意服务器上添加访问数据的授权用户
  2. 在客户端使用授权用户连接任意数据库服务器都可以存储数据,且可以查看到相同的数据
  3. 建表时,必须有主键字段

任何1台数据库服务器宕机都不影响用户存取数据,服务器运行以后,自动同步宕机期间数据,3台服务器同时损坏,集群崩溃

  • 停止服务:
执行了初始化的主机:
] systemctl stop [email protected]
再次启动时,需要用systemctl start mysql启动

没有执行初始化的主机:
] systemctl stop mysql

将正在运行中的mysql服务器的数据迁移至PXC集群
  1. 将pxc集群的一台服务器安装mysql,配置为现有的一台mysql的从服务器。实现数据同步
  2. 卸载这台pxc服务器上的mysql,安装pxc软件,启动服务,此时该服务器依然为从服务器,再将剩余服务器配置完成即实现数据迁移
配置LB负载均衡
yum -y install haproxy
vim  /etc/haproxy/haproxy.cfg
Global   #全局配置默认即可
    log         127.0.0.1 local2
    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon
    stats socket /var/lib/haproxy/stats
defaults #默认配置(不需要修改)
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000
listen status  #定义监控页面
        mode http   #模式为http
        bind *:80   #端口80
        stats enable  #启用配置
        stats uri /admin  #访问目录名
        stats auth admin:admin  #登录用户与密码
listen mysql_3306 *:3306  #定义haproxy服务名称与端口号
    mode    tcp         #mysql服务 得使用 tcp 协议
    option  tcpka      #使用长连接
    balance roundrobin #调度算法
    server  mysql_01 192.168.4.66:3306 check  #第1台pxc服务器
    server  mysql_02 192.168.4.10:3306 check  #第2台pxc服务器
    server  mysql_03 192.168.4.88:3306 check  #第3台pxc服务器
配置HA高可用
# 使用一台备用haproxy服务器,与主haproxy服务器相同配置
# 两台haproxy服务器上相同操作:
yum -y install keepalived
vim  /etc/keepalived/keepalived.conf
global_defs {
……
……
vrrp_iptables   #禁止iptables 
}
vrrp_instance VI_1 {
    state MASTER   #主服务器标识
    interface eth0
    virtual_router_id 51
    priority 150      #haproxy99 主机做主服务器,优先级要比 haproxy88主机高
    advert_int 1
    authentication {
        auth_type PASS  #主备服务器连接方式
        auth_pass 1111   #连接密码
    }
    virtual_ipaddress {
        192.168.4.100   #定义vip地址
    }
}

你可能感兴趣的:(MySQL)