• MySQL数据库高可用集群搭建-PXC集群部署


    Percona XtraDB Cluster(下文简称PXC集群)提供了MySQL高可用的一种实现方法。集群是有节点组成的,推荐配置至少3个节点,但是也可以运行在2个节点上。

    PXC原理描述:

    分布式系统的CAP理论:
    C:一致性,所有的节点数据一致
    A:可用性,一个或者多个节点失效,不影响服务请求
    P:分区容忍性,节点间的连接失效,仍然可以处理请求
    其实,任何一个分布式系统,需要满足这三个中的两个。
     PXC的优点:
    1)服务高可用;
    2)数据同步复制(并发复制),几乎无延迟;
    3)多个可同时读写节点,可实现写扩展,不过最好事先进行分库分表,让各个节点分别写不同的表或者库,避免让galera解决数据冲突;
    4)新节点可以自动部署,部署操作简单;
    5)数据严格一致性,尤其适合电商类应用;
    6)完全兼容MySQL; 

    一些名词介绍:

    WS:write set写数据集,写/更新事务
    IST:Incremental State Transfer 增量同步
    SST:State Snapshot Transfe 全量同步。
     SST支持的方法有:mysqldump,rsync ,xtrabackup 。
    mysqldump,rsync同步需要READ LOCK, (SST applies FLUSH TABLES WITH READ LOCK command) xtrabackup 在整个同步数据过程中不需要READ LOCK。
    配置参数:wsrep_sst_method=xtrabackup-v2 UUID:节点状态改变及顺序的唯一标识 GTID:Global Transaction ID,由UUID和sequence number偏移量组成。wsrep api中定义的集群内部全局事务id,用于记录集群中发生状态改变的唯一标识以及队列中的偏移量。 WSRWP API:在DBMS库和wsrep provider之间提供接口 

    PXC环境所涉及的端口:

    #mysql实例端口:3306
    #PXC cluster相互通讯的端口:4567 
    #用于SST传送的端口:4444 
    #用于IST传送的端口:4568 
    

    1.有3个节点

    pxc_node0 192.0.0.197 
    pxc_node1 192.0.0.198 
    pxc_node2 192.0.0.199 

    2.防火墙设置 

    01关闭防火墙 

    # systemctl stop firewalld.service 
    # systemctl disable firewalld.servie

    02或开启防火墙对应的端口:

    firewall-cmd --zone=public --add-port=3306/tcp --permanent
    firewall-cmd --zone=public --add-port=4444/tcp --permanent
    firewall-cmd --zone=public --add-port=4567/tcp --permanent
    firewall-cmd --zone=public --add-port=4568/tcp --permanent

    开放完4个端口后,重新加载防火墙规则

    firewall-cmd --reload 
    

    3.关闭SELINUX ,安全增强型 Linux(Security-Enhanced Linux)SELinux主要由美国国家安全局开发

    01执行命令 永久关闭Selinux

    vi /etc/selinux/config 把SELINUX属性值设置成disabled  

    02或者执行命令 Linux临时关闭Selinux

    setenforce 0
    

    4.下载安装,在pxc_node0,pxc_node2,pxc_node2分别进行如下安装 

    基础安装
    [root@percona1 ~]# yum -y groupinstall Base Compatibility libraries Debugging Tools Dial-up Networking suppport Hardware monitoring utilities Performance Tools Development tools
       
    组件安装
    [root@percona1 ~]# yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm -y
    [root@percona1 ~]# yum install Percona-XtraDB-Cluster-55 -y

    5.停止mysql服务,选择一个node作为名义上的master,只需要修改mysql的配置文件/etc/my.cnf(需要分别配置)

    #PXC集群中MySQL实例的唯一ID,不能重复,必须是数字
    server-id=1  
    wsrep_provider=/usr/lib64/galera3/libgalera_smm.so
    #PXC集群的名称
    wsrep_cluster_name=pxc-cluster 
    wsrep_cluster_address=gcomm://192.0.0.197,192.0.0.198,192.0.0.199
    #当前节点的名称
    wsrep_node_name=pxc1 
    #当前节点的IP
    wsrep_node_address=192.0.0.197 
    #同步方法(mysqldump、rsync、xtrabackup)
    wsrep_sst_method=xtrabackup-v2 
    #同步使用的帐户
    wsrep_sst_auth= admin:Abc_123456  
     #同步严厉模式
    pxc_strict_mode=ENFORCING 
    #基于ROW复制(安全可靠)
    binlog_format=ROW  
    #默认引擎
    default_storage_engine=InnoDB 
    #主键自增长不锁表
    innodb_autoinc_lock_mode=2 
    

    6.启动第一个节点

    /etc/init.d/mysql bootstrap-pxc 
    如果是centos7,则启动命令如下:
    systemctl start mysql@bootstrap.service
    若是重启的话,就先kill,然后删除pid文件后再执行上面的启动命令

    7.数据库用户名密码的设置

    mysql> UPDATE mysql.user SET password=PASSWORD("Passw0rd") where user='root'; 

    8.配置SST认证账号

    mysql> CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 's3cret';
    mysql> GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'sstuser'@'localhost';
    mysql> FLUSH PRIVILEGES;  

    9.启动其他节点

    /etc/init.d/mysql start

    各个节点都采用第一个修改的root密码登录

    10.常用命令

    查看节点数:

    show global status like 'wsrep_cluster_size';  

    查看集群状态:

    show global status like 'wsrep_cluster_size';

    查看当前节点状态:

    show global status like 'wsrep_cluster_status'; 
    

    通过查看4567 端口确认集群是否启动: 

    netstat -plantu | grep mysqld 

    集群关闭:所有节点都用

    /etc/init.d/mysql  stop

    节点重启
    第一个节点用:

    /etc/init.d/mysql restart-bootstrap

    其他节点用:

    /etc/init.d/mysql  restart

    11.其他注意事项:

    集群关闭之后,再启动,谁做第一个节点谁就执行/etc/init.d/mysql  bootstrap-pxc

    如果最后关闭的PXC节点是安全退出的,那么下次启动要最先启动这个节点,而且要以主节点启动 如果最后关闭的PXC节点不是安全退出的,

    那么要先修改/var/lib/mysql/grastate.dat 文件, 把其中的safe_to_bootstrap属性值设置为1, 再安装主节点启动。

    除了名义上的master之外,其它的node节点只需要启动mysql即可。

    节点的数据库的登陆和master节点的用户名密码一致,自动同步。所以其它的节点数据库用户名密码无须重新设置。

    只需要在名义上的master节点上设置权限,其它的节点配置好/etc/my.cnf后,只需要启动mysql就行,权限会自动同步过来。 

  • 相关阅读:
    jq使用手册
    MVC4 Forms 验证,部署到Hyper-v上.FormsAuthentication.SetAuthCookie无效的问题
    ASP.NET FormsAuthentication跨站点登录时绝对地址返回的问题
    FireBird.conf 常用参数说明 (FrieBird3.0.4版)
    AnkhSVN2019
    控制台程序的RedirectStandardOutput
    代替webbrowser的插件:CefSharp
    mssql分区视图
    Firebird写存储过程
    .net项目多个目标架构
  • 原文地址:https://www.cnblogs.com/hiit/p/11107455.html
Copyright © 2020-2023  润新知