searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

Centos PXC8.0集群部署方案

2023-06-14 03:01:35
30
0

前期准备

有A、B和C三个主机,A、B和C如果开启firewalld防火墙,需要开启mysql端口:3306 以及 PXC通信端口:4444、4567和4568。

firewall-cmd --permanent --add-port={{port}}/tcp
firewall-cmd --reload

从链接中找到Percona XtraDB Cluster并选择下载全部包:Software Downloads - Percona

从链接中下载qpress,centos7选择el7,centos8则选择el8。qpress-11-1.el7.x86_64.rpm

通过rz或者文件传输将下载的所有文件上传至centos服务器,解压PXC下载包并且本地进行安装(所有rpm文件在同一文件夹)。

tar -xvf Percona-XtraDB-Cluster-8.0.21-r248-el7-x86_64-bundle.tar
yum localinstall *.rpm

自定义挂载目录,SSD硬盘的路径为/ssd,则创建mysql存储路径并赋予mysql用户权限。

sudo mkdir -p /ssd/lib/mysql && sudo mkdir -p /ssd/logs
sudo chown -R mysql:mysql /ssd/lib/mysql && sudo chown -R mysql:mysql /ssd/logs

PXC三节点部署

在主机A上:

  • 修改/etc/my.cnf文件,修改如下:
    # Template my.cnf for PXC
    # Edit to your requirements.
    [client]
    socket=/ssd/lib/mysql/mysql.sock
    
    [mysqld]
    server-id=1
    datadir=/ssd/lib/mysql
    socket=/ssd/lib/mysql/mysql.sock
    mysqlx_socket=/ssd/lib/mysql/mysqlx.sock
    pid-file=/ssd/lib/mysql/mysql.pid
    
    port = 3306
    user = mysql
    default_storage_engine = InnoDB
    bind_address = 0.0.0.0
    skip_name_resolve = 1
    max_allowed_packet = 128M
    character_set_server = utf8mb4
    collation-server = utf8mb4_general_ci
    init_connect='SET NAMES utf8mb4'
    max_connections = 10000
    max_connect_errors = 100000
    interactive_timeout = 2000
    wait_timeout = 2000
    net_read_timeout = 60
    lock_wait_timeout = 300
    
    ########log settings########
    log_error = /ssd/logs/mysqld.log
    slow_query_log = 1
    long_query_time = 3
    slow_query_log_file = slow.log
    log_queries_not_using_indexes = 1
    
    ########binlog settings########
    # log-bin format, if change it, something wrong when starting sencondary pxc node
    log-bin = mysql-bin
    sync_binlog = 1
    binlog_cache_size = 32M
    max_binlog_cache_size = 512M
    max_binlog_size = 1G
    binlog_format = ROW
    binlog_expire_logs_seconds=604800
    
    ######## wsrep ###############
    #wsrep_provider=/usr/lib64/galera4/libgalera_smm.so
    #wsrep_cluster_address = gcomm://{{A.IP}},{{B.IP}},{{C.IP}}
    #wsrep_cluster_name = mysql-PXC8.0
    #wsrep_sst_method = xtrabackup-v2
    #wsrep_node_address = {{A.IP}}
    #wsrep_node_name = pxc-mysql01
    #wsrep_slave_threads = 16
    #pxc_strict_mode = ENFORCING
    #innodb_autoinc_lock_mode = 2
    #pxc_strict_mode=ENFORCING
  • 启动mysql,通过mysql日志查看第一次启动产生的临时密码,在修改密码后退出。
    systemctl start mysql
    cat /var/log/mysqld.log | grep 'password'
    mysql -u root -p #登录mysql
    ALTER USER 'root'@'localhost' IDENTIFIED BY '123456'; # 修改密码​
    CREATE USER 'root'@'%' IDENTIFIED BY '123456'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'; # 创建远程root用户(如需要)
    systemctl stop mysql

     

  • 将my.cnf中的wsrep内容全部解除注释,并启动PXC集群的第一个节点。
    systemctl start mysql@bootstrap.service
  • 可通过如下命令实时监控PXC集群的状态。
    cat /ssd/logs/mysqld.log
    systemctl status mysql@bootstrap.service
  • 拷贝第一个mysql生成的全部认证文件到本地,位于mysql存储路径下。
    sz /ssd/lib/mysql/*.pem

主机B和C:

  • 同主机A,修改/etc/my.cnf文件,必须确保不同pxc节点的server-id,wsrep_node_address和wsrep_node_name不同。
  • 同主机A,启动mysql,启动后停止mysql即可。
  • 将第一个mysql的认证文件拷贝至本机的mysql存储路径,并更改文件权限(PXC8.0的集群认证机制)。
    cd /ssd/lib/mysql && rz -bye
    sudo chown -R mysql:mysql *.pem
  • 将my.cnf中的wsrep内容全部解除注释后,通过mysql启动后续PXC节点。
    systemctl start mysql

验证:在任一PXC节点登录mysql,查看wsrep节点信息。

 

show status like 'wsrep_cluster%';

从图中可以看到,集群中节点的个数为3,当前PXC集群的uuid已展示,其状态为Primary可用。

 

PXC节点故障恢复:

  • 如果PXC集群中仍有任意存活的节点,无论是哪台机器的PXC节点停止了,都通过如下mysql启动命令来恢复。
    systemctl start mysql
  • 如果PXC集群中的节点全部停止了,查看每一台主机的/ssd/lib/mysql/grastate.dat,寻找其中的safe_to_bootstrap为1的主机(即最后一个启动的节点);如果不存在,则通过最大的seqno来选择,将最大的seqno的主机的grastate.dat中的safe_to_bootstrap修改为1。将符合条件的作为PXC的第一个节点启动,其余主机后续删除grastate.dat文件并通过mysql启动命令进行启动。

     

    systemctl start mysql@bootstrap.service
    
0条评论
0 / 1000
l****n
14文章数
0粉丝数
l****n
14 文章 | 0 粉丝
原创

Centos PXC8.0集群部署方案

2023-06-14 03:01:35
30
0

前期准备

有A、B和C三个主机,A、B和C如果开启firewalld防火墙,需要开启mysql端口:3306 以及 PXC通信端口:4444、4567和4568。

firewall-cmd --permanent --add-port={{port}}/tcp
firewall-cmd --reload

从链接中找到Percona XtraDB Cluster并选择下载全部包:Software Downloads - Percona

从链接中下载qpress,centos7选择el7,centos8则选择el8。qpress-11-1.el7.x86_64.rpm

通过rz或者文件传输将下载的所有文件上传至centos服务器,解压PXC下载包并且本地进行安装(所有rpm文件在同一文件夹)。

tar -xvf Percona-XtraDB-Cluster-8.0.21-r248-el7-x86_64-bundle.tar
yum localinstall *.rpm

自定义挂载目录,SSD硬盘的路径为/ssd,则创建mysql存储路径并赋予mysql用户权限。

sudo mkdir -p /ssd/lib/mysql && sudo mkdir -p /ssd/logs
sudo chown -R mysql:mysql /ssd/lib/mysql && sudo chown -R mysql:mysql /ssd/logs

PXC三节点部署

在主机A上:

  • 修改/etc/my.cnf文件,修改如下:
    # Template my.cnf for PXC
    # Edit to your requirements.
    [client]
    socket=/ssd/lib/mysql/mysql.sock
    
    [mysqld]
    server-id=1
    datadir=/ssd/lib/mysql
    socket=/ssd/lib/mysql/mysql.sock
    mysqlx_socket=/ssd/lib/mysql/mysqlx.sock
    pid-file=/ssd/lib/mysql/mysql.pid
    
    port = 3306
    user = mysql
    default_storage_engine = InnoDB
    bind_address = 0.0.0.0
    skip_name_resolve = 1
    max_allowed_packet = 128M
    character_set_server = utf8mb4
    collation-server = utf8mb4_general_ci
    init_connect='SET NAMES utf8mb4'
    max_connections = 10000
    max_connect_errors = 100000
    interactive_timeout = 2000
    wait_timeout = 2000
    net_read_timeout = 60
    lock_wait_timeout = 300
    
    ########log settings########
    log_error = /ssd/logs/mysqld.log
    slow_query_log = 1
    long_query_time = 3
    slow_query_log_file = slow.log
    log_queries_not_using_indexes = 1
    
    ########binlog settings########
    # log-bin format, if change it, something wrong when starting sencondary pxc node
    log-bin = mysql-bin
    sync_binlog = 1
    binlog_cache_size = 32M
    max_binlog_cache_size = 512M
    max_binlog_size = 1G
    binlog_format = ROW
    binlog_expire_logs_seconds=604800
    
    ######## wsrep ###############
    #wsrep_provider=/usr/lib64/galera4/libgalera_smm.so
    #wsrep_cluster_address = gcomm://{{A.IP}},{{B.IP}},{{C.IP}}
    #wsrep_cluster_name = mysql-PXC8.0
    #wsrep_sst_method = xtrabackup-v2
    #wsrep_node_address = {{A.IP}}
    #wsrep_node_name = pxc-mysql01
    #wsrep_slave_threads = 16
    #pxc_strict_mode = ENFORCING
    #innodb_autoinc_lock_mode = 2
    #pxc_strict_mode=ENFORCING
  • 启动mysql,通过mysql日志查看第一次启动产生的临时密码,在修改密码后退出。
    systemctl start mysql
    cat /var/log/mysqld.log | grep 'password'
    mysql -u root -p #登录mysql
    ALTER USER 'root'@'localhost' IDENTIFIED BY '123456'; # 修改密码​
    CREATE USER 'root'@'%' IDENTIFIED BY '123456'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'; # 创建远程root用户(如需要)
    systemctl stop mysql

     

  • 将my.cnf中的wsrep内容全部解除注释,并启动PXC集群的第一个节点。
    systemctl start mysql@bootstrap.service
  • 可通过如下命令实时监控PXC集群的状态。
    cat /ssd/logs/mysqld.log
    systemctl status mysql@bootstrap.service
  • 拷贝第一个mysql生成的全部认证文件到本地,位于mysql存储路径下。
    sz /ssd/lib/mysql/*.pem

主机B和C:

  • 同主机A,修改/etc/my.cnf文件,必须确保不同pxc节点的server-id,wsrep_node_address和wsrep_node_name不同。
  • 同主机A,启动mysql,启动后停止mysql即可。
  • 将第一个mysql的认证文件拷贝至本机的mysql存储路径,并更改文件权限(PXC8.0的集群认证机制)。
    cd /ssd/lib/mysql && rz -bye
    sudo chown -R mysql:mysql *.pem
  • 将my.cnf中的wsrep内容全部解除注释后,通过mysql启动后续PXC节点。
    systemctl start mysql

验证:在任一PXC节点登录mysql,查看wsrep节点信息。

 

show status like 'wsrep_cluster%';

从图中可以看到,集群中节点的个数为3,当前PXC集群的uuid已展示,其状态为Primary可用。

 

PXC节点故障恢复:

  • 如果PXC集群中仍有任意存活的节点,无论是哪台机器的PXC节点停止了,都通过如下mysql启动命令来恢复。
    systemctl start mysql
  • 如果PXC集群中的节点全部停止了,查看每一台主机的/ssd/lib/mysql/grastate.dat,寻找其中的safe_to_bootstrap为1的主机(即最后一个启动的节点);如果不存在,则通过最大的seqno来选择,将最大的seqno的主机的grastate.dat中的safe_to_bootstrap修改为1。将符合条件的作为PXC的第一个节点启动,其余主机后续删除grastate.dat文件并通过mysql启动命令进行启动。

     

    systemctl start mysql@bootstrap.service
    
文章来自个人专栏
高可用集群部署
11 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0