1:环境准备
实验环境: 
    节点1:192.168.145.128
    节点2:192.168.145.129
    节点3:192.168.145.130
[root@master ~]# more /etc/redhat-release
    CentOS Linux release 7.9.2009 (Core)

关闭SELINUX
     SELINUXTYPE=targeted 修改为:SELINUXTYPE=disabled
     临时修改为 setenforce 0

配置时间同步服务
    节点1:Yum安装ntp软件;节点2,3安装ntpdate客户端
    节点1:yum install ntp
    节点2,节点3:yum install ntpdate

    节点1启动ntpd服务,并设置成开机启动
    systemctl start ntpd
    systemctl enable ntpd

    节点1修改ntp.conf配置文件,指定一个外部同步服务器,这里就指定本地
    vim /etc/ntp.conf
    加上:server 127.127.1.0 prefer

    节点2,3
    创建crontab定时和节点一同步
    [root@slave1 ~]# crontab -l
    */10 * * * * ntpdate ntp3.aliyun.com
    [root@slave2 ~]# crontab -l
    */10 * * * * ntpdate ntp3.aliyun.com
修改 hosts文件
    vim /etc/hosts
    192.168.145.128 master
    192.168.145.129 slave1
    192.168.145.130 slave2

关闭防火墙
service iptables status
service iptables stop
chkconfig iptables off

    放开对应端口:
        [root@master ~]# firewall-cmd --add-port=3306/tcp --permanent
        [root@master ~]# firewall-cmd --add-port=4567/tcp --permanent
        [root@master ~]# firewall-cmd --add-port=4568/tcp --permanent
        [root@master ~]# firewall-cmd --add-port=4444/tcp --permanent
        [root@master ~]# firewall-cmd --reload
        
        [root@master ~]# firewall-cmd --add-port=3306/tcp --permanent
        success
        [root@master ~]# firewall-cmd --add-port=4567/tcp --permanent
        success
        [root@master ~]# firewall-cmd --add-port=4568/tcp --permanent
        success
        [root@master ~]# firewall-cmd --add-port=4444/tcp --permanent
        success
        [root@master ~]# firewall-cmd --reload
        success
        

安装配置YUM  (三台机器都操作)
    安装 yum install wget
        ====================================================================
         Package     架构          版本                   源           大小
        ====================================================================
        正在安装:
         wget        x86_64        1.14-18.el7_6.1        base        547 k

        事务概要
        ====================================================================
        安装  1 软件包

        总下载量:547 k
        安装大小:2.0 M
        Is this ok [y/d/N]: y
        
    然后下载percona 源文件
        yum clean all
        yum makecache
        yum repolist    
    [root@master ~]# wget https://www.percona.com/downloads/percona-release//redhat/1.0-27/percona-release-1.0-27.noarch.rpm

    [root@master ~]# rpm -ivh percona-release-1.0-27.noarch.rpm 
    准备中...                          ################################# [100%]
    


修改调度算法(很重要)

    临时修改:echo "deadline" > /sys/block/sda/queue/scheduler

    永久修改: grubby --update-kernel=ALL --args="elevator=deadline"

修改limit 参数
    cat /etc/security/limits.conf 

    vim /etc/security/limits.conf
        # 添加如下的行
        * soft nproc 11000
        * hard nproc 11000
        * soft nofile 655350
        * hard nofile 655350

重启三台机器:
    reboot 
    

2 开始安装
        yum install Percona-XtraDB-Cluster-57
        一行命令即可, 是需要的 socat,percona-xtrabackup 等依赖包都自动安装


 安装过程 很简单

        yum install Percona-XtraDB-Cluster-57

    是否继续?[y/N]:y
    Running transaction check
    Running transaction test
    Transaction test succeeded
    Running transaction
    警告:RPM 数据库已被非 yum 程序修改。
      正在安装    : rsync-3.1.2-10.el7.x86_64                                                                                                                                                                   1/21 
      正在安装    : qpress-11-1.el7.x86_64                                                                                                                                                                      2/21 
      正在安装    : 1:perl-Compress-Raw-Zlib-2.061-4.el7.x86_64                                                                                                                                                 3/21 
      正在安装    : socat-1.7.3.2-2.el7.x86_64                                                                                                                                                                  4/21 
      正在安装    : perl-Digest-1.17-245.el7.noarch                                                                                                                                                             5/21 
      正在安装    : perl-Digest-MD5-2.52-3.el7.x86_64                                                                                                                                                           6/21 
      正在安装    : Percona-XtraDB-Cluster-shared-compat-57-5.7.36-31.55.1.el7.x86_64                                                                                                                           7/21 
      正在安装    : libev-4.15-7.el7.x86_64                                                                                                                                                                     8/21 
      正在安装    : lsof-4.87-6.el7.x86_64                                                                                                                                                                      9/21 
      正在安装    : Percona-XtraDB-Cluster-shared-57-5.7.36-31.55.1.el7.x86_64                                                                                                                                 10/21 
      正在安装    : perl-Compress-Raw-Bzip2-2.061-3.el7.x86_64                                                                                                                                                 11/21 
      正在安装    : perl-IO-Compress-2.061-2.el7.noarch                                                                                                                                                        12/21 
      正在安装    : perl-Net-Daemon-0.48-5.el7.noarch                                                                                                                                                          13/21 
      正在安装    : perl-PlRPC-0.2020-14.el7.noarch                                                                                                                                                            14/21 
      正在安装    : perl-DBI-1.627-4.el7.x86_64                                                                                                                                                                15/21 
      正在安装    : perl-DBD-MySQL-4.023-6.el7.x86_64                                                                                                                                                          16/21 
      正在安装    : Percona-XtraDB-Cluster-client-57-5.7.36-31.55.1.el7.x86_64                                                                                                                                 17/21 
      正在安装    : percona-xtrabackup-24-2.4.24-1.el7.x86_64                                                                                                                                                  18/21 
      正在安装    : Percona-XtraDB-Cluster-server-57-5.7.36-31.55.1.el7.x86_64   

    启动数据库 找到密码 
        service mysql start
        
        grep 'temporary password' /var/log/mysqld.log

            [root@master ~]# grep 'temporary password' /var/log/mysqld.log
            2022-04-02T14:16:13.965869Z 1 [Note] A temporary password is generated for root@localhost: 9r;Yj1p%VNk2    

        Use this password to log in as root:
            mysql -u root -p
        修改密码 创建用户
        Change the password for the superuser account and log out. For example
            ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
            CREATE USER 'sstuser'@'localhost' IDENTIFIED BY '123456';
            GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'sstuser'@'localhost';
            FLUSH PRIVILEGES;

        关闭数据库
        Stop the mysql service:
            service mysql stop
            
        [root@master ~]# service mysql stop
        Redirecting to /bin/systemctl stop mysql.service
        进到数据库 data 目录 查看下情况
        [root@master ~]# cd /var/lib/mysql
        [root@master mysql]# ll
        总用量 241752
        -rw-r-----. 1 mysql mysql        56 4月   2 22:16 auto.cnf
        -rw-------. 1 mysql mysql      1676 4月   2 22:16 ca-key.pem
        -rw-r--r--. 1 mysql mysql      1120 4月   2 22:16 ca.pem
        -rw-r--r--. 1 mysql mysql      1120 4月   2 22:16 client-cert.pem
        -rw-------. 1 mysql mysql      1676 4月   2 22:16 client-key.pem
        -rw-r-----. 1 mysql mysql 134219048 4月   2 22:19 galera.cache
        -rw-r-----. 1 mysql mysql       113 4月   2 22:20 grastate.dat
        -rw-r-----. 1 mysql mysql       365 4月   2 22:20 ib_buffer_pool
        -rw-r-----. 1 mysql mysql  12582912 4月   2 22:20 ibdata1
        -rw-r-----. 1 mysql mysql  50331648 4月   2 22:20 ib_logfile0
        -rw-r-----. 1 mysql mysql  50331648 4月   2 22:16 ib_logfile1
        -rw-r-----. 1 mysql mysql       177 4月   2 22:16 master-bin.000001
        -rw-r-----. 1 mysql mysql      1067 4月   2 22:20 master-bin.000002
        -rw-r-----. 1 mysql mysql        40 4月   2 22:16 master-bin.index
        drwxr-x---. 2 mysql mysql      4096 4月   2 22:16 mysql
        drwxr-x---. 2 mysql mysql      8192 4月   2 22:16 performance_schema
        -rw-------. 1 mysql mysql      1680 4月   2 22:16 private_key.pem
        -rw-r--r--. 1 mysql mysql       452 4月   2 22:16 public_key.pem
        -rw-r--r--. 1 mysql mysql      1120 4月   2 22:16 server-cert.pem
        -rw-------. 1 mysql mysql      1676 4月   2 22:16 server-key.pem
        drwxr-x---. 2 mysql mysql      8192 4月   2 22:16 sys

截至到上面 我们可以理解为 MySQL 数据库已经安装完毕, 但是 PXC 的集群 还没有搭建 

-------------------------------------修改MySQL的配置文件-----------------------------------------------------------------------------
思考问题: 安装完毕后,参数都是系统默认的,比如修改 undo redo 涉及的参数 需要如何操作
    
    先看下 /etc/my.cnf
        
        [root@master ~]# cat /etc/my.cnf
        #
        # The Percona XtraDB Cluster 5.7 configuration file.
        #
        #
        # * IMPORTANT: Additional settings that can override those from this file!
        #   The files must end with '.cnf', otherwise they'll be ignored.
        #   Please make any edits and changes to the appropriate sectional files
        #   included below.
        #  只有单纯的 下面两行有信息 其他信息都不在my.cnf 里面
        !includedir /etc/my.cnf.d/
        !includedir /etc/percona-xtradb-cluster.conf.d/

    进到    /etc/my.cnf.d/ 查看 里面是空的
    进到    /etc/percona-xtradb-cluster.conf.d/
        [root@master my.cnf.d]# cd /etc/percona-xtradb-cluster.conf.d/
        [root@master percona-xtradb-cluster.conf.d]# ll
        总用量 12
        -rw-r--r--. 1 root root  452 4月   2 22:49 mysqld.cnf
        -rw-r--r--. 1 root root  440 2月   8 04:43 mysqld_safe.cnf
        -rw-r--r--. 1 root root 1066 2月   8 04:43 wsrep.cnf
        
    打开这三个文件 查看下 
        cat mysqld.cnf  是mysql 的默认配置文件, 如果我们修改binlog 大小 和变动data 目录情况 需要如何操作!(这个时候 我们已经stop 的服务)
        [root@master percona-xtradb-cluster.conf.d]# cat mysqld.cnf 
        # Template my.cnf for PXC
        # Edit to your requirements.
        [client]
        socket=/var/lib/mysql/mysql.sock

        [mysqld]
        server-id=1
        datadir=/var/lib/mysql/data                            增加一个data 目录, 把 对应的 /var/lib/mysql/全部mv 到/var/lib/mysql/data
        socket=/var/lib/mysql/mysql.sock
        log-error=/var/log/mysqld.log
        pid-file=/var/run/mysqld/mysqld.pid
        log-bin
        max_binlog_size=512M                                增加binlog 的大小为 512M 或者按照实际需要操作
        innodb_data_file_path=ibdata1:1024M:autoextend        修改 innodb tablespace 大小 为 1G 
    启动下 mysql  看看
        [root@master data]# service mysql start
        Redirecting to /bin/systemctl start mysql.service
        Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.
    启动失败 报错了吧    启动失败 报错了吧  启动失败 报错了吧    启动失败 报错了吧    启动失败 报错了吧

        这是由于mysql yum 安装的时候初始化 系统最低的配置,修改了    innodb tablespace 造成 数据页 大小 和 现有的 文件 也大小不匹配

        查看下错误log tail -f /var/log/mysqld.log
            2022-04-03T03:02:15.353161Z 0 [ERROR] InnoDB: The Auto-extending innodb_system data file './ibdata1' is of a different size 65536 pages (rounded down to MB) than specified in the .cnf file: initial 131072 pages, max 0 (relevant if non-zero) pages!
            2022-04-03T03:02:15.353220Z 0 [ERROR] InnoDB: Plugin initialization aborted with error Generic error
            2022-04-03T03:02:16.461662Z 0 [ERROR] Plugin 'InnoDB' init function returned error.
            2022-04-03T03:02:16.461762Z 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
            2022-04-03T03:02:16.461774Z 0 [ERROR] Failed to initialize builtin plugins.
            2022-04-03T03:02:16.461784Z 0 [ERROR] Aborting
        解决方法:解决方法:解决方法:解决方法:解决方法:解决方法:解决方法:因为是新搭建的数据库 还没有数据,操作下面两个动作 即可
            [root@master data]# rm -f ibdata1 
            [root@master data]# rm -f ib_logfile*
        继续启动:
        [root@master data]# service mysql start
        Redirecting to /bin/systemctl start mysql.service
        
        启动成功:
        -rw-r-----. 1 mysql mysql 2147483648 4月   3 11:08 ibdata1
        -rw-r-----. 1 mysql mysql   50331648 4月   3 11:08 ib_logfile0
        -rw-r-----. 1 mysql mysql   50331648 4月   3 11:08 ib_logfile1        
        ib_logfile 50M 文件也需要修改 情况
        添加  innodb_log_file_size 参数
            [root@master percona-xtradb-cluster.conf.d]# cat  mysqld.cnf 
            # Template my.cnf for PXC
            # Edit to your requirements.
            [client]
            socket=/var/lib/mysql/mysql.sock

            [mysqld]
            server-id=1
            datadir=/var/lib/mysql/data
            socket=/var/lib/mysql/mysql.sock
            log-error=/var/log/mysqld.log
            pid-file=/var/run/mysqld/mysqld.pid
            log-bin
            max_binlog_size=1G
            innodb_data_file_path=ibdata1:2048M:autoextend
            log_slave_updates
            expire_logs_days=7
            innodb_log_file_size=1024M
            
            修改后启动
            [root@master percona-xtradb-cluster.conf.d]# service mysql stop
            Redirecting to /bin/systemctl stop mysql.service
            [root@master percona-xtradb-cluster.conf.d]# service mysql start
            Redirecting to /bin/systemctl start mysql.service
            
        启动成功 
        
        mysqld.cnf  文件 其实就是 单纯的mysql 的 my.cnf 文件
        
        截至到上面 就是 yum 安装 修改 pxc 的 mysql 配置 截至到上面 就是 yum 安装 修改 pxc 的 mysql 配置
        
------------------------------------修改MySQL的配置文件------------------------------------------------------------------------------


开始配置集群文件

        [root@master my.cnf.d]# cd /etc/percona-xtradb-cluster.conf.d/
        [root@master percona-xtradb-cluster.conf.d]# ll
        总用量 12
        -rw-r--r--. 1 root root  452 4月   2 22:49 mysqld.cnf
        -rw-r--r--. 1 root root  440 2月   8 04:43 mysqld_safe.cnf
        -rw-r--r--. 1 root root 1066 2月   8 04:43 wsrep.cnf
        
        打开 wsrep.cnf
        
            wsrep_provider=/usr/lib64/galera3/libgalera_smm.so        #Galera库文件路径
            wsrep_cluster_name=pxc-cluster                            #集群的逻辑名称,各节点应该统一
            wsrep_cluster_address=gcomm://192.168.145.128,192.168.145.129,192.168.145.130        #列出集群内所有节点的IP
            wsrep_node_name=pxc1                                      #当前节点的逻辑名称
            wsrep_node_address=192.168.145.128                      #当前节点的IP
            wsrep_sst_method=xtrabackup-v2                            #全量同步(SST)方式
            wsrep_sst_auth=sstuser:123456                            #用于SST的账户信息(需要自行创建)  REDHAT6.8 是:#wsrep_sst_auth="sstuser:sstuser"
            pxc_strict_mode=ENFORCING                                #PXC严格模式,建议开启
            binlog_format=ROW                                        #binlog格式,PXC只支持格式为ROW的binlog
            default_storage_engine=InnoDB                            #PXC对InnoDB存储引擎有最好的支持
            innodb_autoinc_lock_mode=2                                #在向有auto_increment 列的表插入数据时,PXC只支持interleaved(2)交错锁1
            wsrep_slave_threads= 8                                    #建议配置成CPU个数或者1.5倍CPU个数
            wsrep_provider_options="gcache.size=1G"                    # gcache预留2-3小时,保证宕机能接着复制        
            
            对于第二个和第三个节点,除了 wsrep_node_name 和 wsrep_node_address 变量之外,使用相同的配置:

            对于第二个节点:

            wsrep_node_name=pxc2
            wsrep_node_address = 192.168.145.129

            对于第三个节点:

            wsrep_node_name = pxc3
            wsrep_node_address = 192.168.145.130
            
    配置完所有节点后,按照引导第一个节点中描述的步骤引导第一个节点,从而初始化 Percona XtraDB Cluster

        停掉之前的所有mysql服务,以集群的方式启动
            service  mysql@bootstrap.service  start
            
            [root@master percona-xtradb-cluster.conf.d]# service mysql stop
            Redirecting to /bin/systemctl stop mysql.service
            [root@master percona-xtradb-cluster.conf.d]# service  mysql@bootstrap.service  start
            Redirecting to /bin/systemctl start mysql@bootstrap.service

            mysql> show status like 'wsrep%';
            +----------------------------------+-----------------------------------------------+
            | Variable_name                    | Value                                         |
            +----------------------------------+-----------------------------------------------+
            | wsrep_local_state_uuid           | 7957b704-b28f-11ec-9ade-534a317ae013          |
            | wsrep_evs_repl_latency           | 2.017e-06/1.32302e-05/5.0935e-05/1.8892e-05/5 |
            | wsrep_evs_state                  | OPERATIONAL                                   |
            | wsrep_gcomm_uuid                 | 49805560-b2fd-11ec-a6e5-b77c3f17ea99          |
            | wsrep_gmcast_segment             | 0                                             |
            | wsrep_cluster_conf_id            | 1                                             |
            | wsrep_cluster_size               | 1                                             |
            | wsrep_cluster_state_uuid         | 7957b704-b28f-11ec-9ade-534a317ae013          |
            | wsrep_cluster_status             | Primary                                       |        谁先启动 谁就是主
            | wsrep_connected                  | ON                                            |
            | wsrep_local_bf_aborts            | 0                                             |
            | wsrep_local_index                | 0                                             |
            | wsrep_provider_name              | Galera                                        |
            | wsrep_provider_vendor            | Codership Oy <info@codership.com>             |
            | wsrep_provider_version           | 3.55(r8b6416d)                                |
            | wsrep_ready                      | ON                                            |
            +----------------------------------+-----------------------------------------------+
            75 rows in set (0.01 sec)

Starting the Second Node

    [root@slave1 ~]# /etc/init.d/mysql start  or  [root@slave1 ~]# systemctl start mysql

    服务器启动后,应该会自动接收到SST。查询第二个节点的状态。

    show status like 'wsrep%';

        | wsrep_incoming_addresses         | 192.168.145.128:3306,192.168.145.129:3306 |
        | wsrep_cluster_weight             | 2                                         |
        | wsrep_desync_count               | 0 


Starting the Third Node

    [root@slave2 ~]# /etc/init.d/mysql start  or  [root@slave2 ~]# systemctl start mysql

    show status like 'wsrep%';

        | wsrep_incoming_addresses         | 192.168.145.128:3306,192.168.145.129:3306,192.168.145.130:3306 |
        | wsrep_cluster_weight             | 3                                                              |
        | wsrep_desync_count               | 0  


最后验证

        主库创建一个库:
            mysql> create database travelsky;
            Query OK, 1 row affected (0.03 sec)
    
        备库随意查询
            [root@slave2 percona-xtradb-cluster.conf.d]# systemctl start mysql
            [root@slave2 percona-xtradb-cluster.conf.d]# mysql -uroot -p
            Enter password: 
            Welcome to the MySQL monitor.  Commands end with ; or \g.
            Your MySQL connection id is 11
            Server version: 5.7.36-39-57-log Percona XtraDB Cluster (GPL), Release rel39, Revision 5197785, WSREP version 31.55, wsrep_31.55

            Copyright (c) 2009-2021 Percona LLC and/or its affiliates
            Copyright (c) 2000, 2021, Oracle and/or its affiliates.

            Oracle is a registered trademark of Oracle Corporation and/or its
            affiliates. Other names may be trademarks of their respective
            owners.

            Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

            mysql> show databases;
            +--------------------+
            | Database           |
            +--------------------+
            | information_schema |
            | mysql              |
            | performance_schema |
            | sys                |
            | travelsky          |
            +--------------------+
            5 rows in set (0.01 sec)

Logo

更多推荐