zoukankan      html  css  js  c++  java
  • mysql架构篇之PXC

    PXC(Percona XtraDB Cluster)

    --是基于Galera的MySQL高可用集群解决方案

    --PXC集群主要由两个部分组成:Percona Server with XtraDB和Write set replication patches(同步、多主复制插件)

    --官网:http://galeracluster.com

    特点如下:

    数据强一致性、无同步延迟

    没有主从切换操作,无需使用虚拟Ip

    支持innoDB存储引擎

    多线程复制

    部署使用简单

    支持节点自动加入,无需手动拷贝数据

    相应端口

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

    软件介绍

     配置服务:

    部署PXC

    1.3  3台服务器分别安装PXC 软件
    ]# cd pxc
    ]# rpm -ivh libev-4.15-1.el6.rf.x86_64.rpm        //安装依赖
    ]# yum  -y  install  percona-xtrabackup-24-2.4.13-1.el7.x86_64.rpm
    ]# rpm -ivh qpress-1.1-14.11.x86_64.rpm             //安装依赖
    ]# tar -xvf  Percona-XtraDB-Cluster-5.7.25-31.35-r463-el7-x86_64-bundle.tar
    ]# yum -y  install  Percona-XtraDB-Cluster-*.rpm
    1.4  修改配置文件(3台数据库服务器都要修改)
             ]# ls /etc/percona-xtradb-cluster.conf.d/  安装列表
             mysqld.cnf(MySQL服务配置文件)  
             mysqld_safe.cnf(无需修改)  
             wsrep.cnf(集群 配置文件)

    三台设置server的id

    ]# vim  mysqld.cnf
             [mysqld]
             server_id=71

    检查数据库目录下没有任何文件

    ]# ls /var/lib/mysql/     没有数据

    开始配置

    ]# vim  wsrep.cnf
    #集群成员列表 3台机器必须一致
    wsrep_cluster_address=gcomm://192.168.4.71,192.168.4.72,192.168.4.73

    #集群名称3台机器 必须一致
    wsrep_cluster_name=pxc-cluster
    
    #全量同步服务连接服务用户3台机器 必须一致
    wsrep_sst_auth="sstuser:123qqq...A"
    
    #本机IP地址
    wsrep_node_address=192.168.4.71
    
    #本机主机名
    wsrep_node_name=pxc-cluster-node-71

    启动服务

    [root@pxcnode71 ~]# ]# systemctl  start mysql@bootstrap.service  //启动集群服务
    [root@pxcnode71 ~]# grep pass /var/log/mysqld.log     //查看数据库管理员初始登录密码
    2019-06-20T12:29:42.489377Z 1 [Note] A temporary password is generated for root@localhost: W.HiOb8(ok)_
    [root@pxcnode71 ~]#mysql –uroot –p’ W.HiOb8(ok)_’ //使用初始密码登录
    Mysql> alter user  root@”localhost” identified by “123456”;//修改登录密码
    MySQL> exit;
    [root@pxcnode71 ~]#mysql –uroot –p123456 //使用修改后的密码登录
    Mysql> garnt reload, lock tables,replication client,process on *.*  to
    sstuser@"localhost” identified by  “123qqq…A”; //添加授权用户

    2)启动数据库服务

    启动主机pxcnode72的数据库服务,会自动同步pxcnode71主机的root初始密码和授权用户sstuser

    [root@pxcnode72 ~]# systemctl  start mysql  //启动数据库服务
    [root@pxcnode72 ~]#
    [root@pxcnode72 ~]# netstat -utnlp  | grep :3306
    tcp6       0      0 :::3306                 :::*                    LISTEN      12794/mysqld        
    [root@pxcnode72 ~]# netstat -utnlp  | grep :4567
    tcp        0      0 0.0.0.0:4567            0.0.0.0:*               LISTEN      12794/mysqld        
    [root@host72 ~]#

    启动主机pxcnode73的数据库服务,会自动同步pxcnode71主机的root初始密码和授权用户sstuser

    [root@pxcnode73 ~]# systemctl  start mysql  //启动数据库服务
    [root@pxcnode73 ~]#
    [root@pxcnode73 ~]# netstat -utnlp  | grep :3306
    tcp6       0      0 :::3306                 :::*                    LISTEN      12794/mysqld        
    [root@pxcnode73 ~]# netstat -utnlp  | grep :4567
    tcp        0      0 0.0.0.0:4567            0.0.0.0:*               LISTEN      12794/mysqld        
    [root@host73 ~]#

    检测配置:

    1)启动数据库服务

    在任意一台数据查看都可以。

    [root@pxcnode71 ~]# mysql -uroot -p123456
    wsrep_incoming_addresses 192.168.4.71:3306,192.168.4.72:3306,192.168.4.73:3306 //集群成员列表 
    wsrep_cluster_size       3 //集群服务器台数
    wsrep_cluster_status   Primary     //主机状态                           
    wsrep_connected        ON            //连接状态
    wsrep_ready             ON           //服务状态

    步骤二:访问集群,存取数据

    1)添加访问数据的连接用户 (在任意一台服务器上添加都可以,另外的2台服务器会自动同步授权用户)

    [root@pxcnode72 ~]# mysql  -uroot  -p123456
    mysql> grant all on  gamedb.*  to yaya@"%" identified by "123456"; //添加授权用户
    Query OK, 0 rows affected, 1 warning (0.18 sec)
    [root@pxcnode71 ~]# mysql -uroot -p123456 -e  'show grants for yaya@"%" ' //查看
    mysql: [Warning] Using a password on the command line interface can be insecure.
    +--------------------------------------------------+
    | Grants for yaya@%                                |
    +--------------------------------------------------+
    | GRANT USAGE ON *.* TO 'yaya'@'%'                 |
    | GRANT ALL PRIVILEGES ON `gamedb`.* TO 'yaya'@'%' |
    +--------------------------------------------------+
    [root@pxcnode71 ~]#
    [root@pxcnode73 ~]# mysql -uroot -p123456 -e  'show grants for yaya@"%" ' //查看
    mysql: [Warning] Using a password on the command line interface can be insecure.
    +--------------------------------------------------+
    | Grants for yaya@%                                |
    +--------------------------------------------------+
    | GRANT USAGE ON *.* TO 'yaya'@'%'                 |
    | GRANT ALL PRIVILEGES ON `gamedb`.* TO 'yaya'@'%' |
    +--------------------------------------------------+

    2)客户端连接集群存取数据 (连接任意一台数据库服务器的ip地址都可以)

    连接数据服务器主机73

    client50 ~]# mysql -h192.168.4.73 -uyaya -p123456 //连接服务器73
    mysql>
    mysql> create database gamedb; //建库
    Query OK, 1 row affected (0.19 sec)
    mysql>  create table  gamedb.a(id int primary key auto_increment,name char(10));//建表
    Query OK, 0 rows affected (1.02 sec)
    mysql> insert into gamedb.a(name)values("bob"),("tom"); //插入记录
    Query OK, 2 rows affected (0.20 sec)
    Records: 2  Duplicates: 0  Warnings: 0

    步骤三:测试故障自动恢复

    1)停止数据库服务

    停止3台服务器的任意一台主机的数据库服务都不会影响数据的存取。

    [root@pxcnode71 ~]# systemctl  stop  mysql  //停止71主机的数据库服务
    Client50 ~]# client50 ~]# mysql -h192.168.4.72 -uyaya -p123456 //连接服务器72
    mysql> insert into gamedb.a(name)values("bob2"),("tom2");
    mysql> insert into gamedb.a(name)values("jerry"),("jack");
    Query OK, 2 rows affected (0.20 sec)
    Records: 2  Duplicates: 0  Warnings: 0 
  • 相关阅读:
    BFS模板 + 力扣例题
    和小吴日常3
    和小吴日常2
    Cocos Creator 学习记录
    js浏览器事件循环机制
    vue+uniapp 项目中一些常用知识
    JSP第一次作业
    Test
    InnoDB存储引擎
    MySQL存储引擎
  • 原文地址:https://www.cnblogs.com/ahaocloud/p/14725867.html
Copyright © 2011-2022 走看看