• Percona XtraDB Cluster集群


    官网参考地址:

    https://www.percona.com/doc/percona-xtradb-cluster/LATEST/configure.html

    前期准备:

    都用的root权限或使用sudo
    确保3306、4444、4567、4568端口没有被防火墙拦截
    关闭selinux

    $ cat /etc/centos-release
       CentOS Linux release 7.4.1708 (Core)
    $ uname -r   
       3.10.0-693.el7.x86_64

      IP       主机名

    192.168.3.120    node1

    192.168.3.121    node2

    192.168.3.122    node3

    ##########################################################################

    安装版块:(所有节点上执行)

    $ yum -y install http://www.percona.com/downloads/percona-release/redhat/0.1-6/percona-release-0.1-6.noarch.rpm
    $ yum -y install Percona-XtraDB-Cluster-57          #如是本地执行可能会提示要挂载光盘,如云上则不会
    $ service mysql start

    复制超级用户帐户的自动生成的临时密码:
    $ grep 'temporary password' /var/log/mysqld.log|awk -F '@' '{print $2}'|awk -F ' ' '{print $2}'
    使用此密码登录为root:
    $ mysql -u root -p
    更改超级用户帐户的密码并注销:
    $  mysql>  ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

    ##########################################################################

    创建数据、日志、临时文件目录(所有节点上执行)

    mkdir -p  /data/mysql/{data,logs,tmp} 
    chown -R mysql.mysql /data
    mv /etc/my.cnf{,.bak}
    cp /etc/percona-xtradb-cluster.conf.d/wsrep.cnf   /etc/my.cnf

    ##########################################################################

    第一个节点上的/etc/my.cnf中添加以下配置变量:

    cat /etc/my.cnf | grep -v ^#|grep -v ^$

    [mysqld]
    user=mysql
    innodb_buffer_pool_size = 1024M
    datadir = /data/mysql/data
    port = 3306
    server_id = 1                   #每个节点的server_id都不一样
    socket = /var/lib/mysql/mysql.sock
    pid-file = /var/lib/mysql/controller.pid
    log-error = /data/mysql/logs/error.log
    log_warnings = 2
    slow_query_log_file = /data/mysql/logs/slow.log
    long_query_time = 0.1
    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

    wsrep_provider=/usr/lib64/galera3/libgalera_smm.so
    wsrep_cluster_address=gcomm://192.168.3.120,192.168.3.121,192.168.3.122
    binlog_format=ROW
    default_storage_engine=InnoDB
    wsrep_slave_threads= 8
    wsrep_log_conflicts
    innodb_autoinc_lock_mode=2
    wsrep_node_address=192.168.3.120           #IP为本机IP
    wsrep_cluster_name=pxc-cluster
    wsrep_node_name=pxc-cluster-node-1
    pxc_strict_mode=ENFORCING
    wsrep_sst_method=xtrabackup-v2
    wsrep_sst_auth="sstuser:123456"               格式:用户名:密码

     在上面的配置文件中,有个wsrep_sst_auth参数。该参数是用于其它节点加入到该集群中,利用XtraBackup执行State Snapshot Transfer(类似于全量同步)的。

        所以,接下来是授权 

    mysql> create user 'sstuser'@'localhost' identified by '123456';
    mysql> grant reload,lock tables,process,replication client on *.* to 'sstuser'@'localhost';
    mysql> flush privileges;
    mysql> show grants for sstuser@localhost;
    mysql> exit service mysql stop

    ##########################################################################

    对于第二个节点:
    server_id = 2
    wsrep_node_name=pxc2
    wsrep_node_address=192.168.3.121


    对于第三个节点:
    server_id = 3
    wsrep_node_name=pxc3
    wsrep_node_address=192.168.3.122

    除以上3项和节点1上不一样之外,第二个节点和第三个节点的其他配置和节点1上的my.cnf配置一样

    ########### 以上各参数解析 ##############
    wsrep_provider
    指定Galera库的路径。
    红帽或CentOS: /usr/lib64/galera3/libgalera_smm.so

    wsrep_cluster_name
    指定群集的逻辑名称。对于群集中的所有节点它必须相同。

    wsrep_cluster_address
    指定群集中节点的IP地址。节点加入群集至少需要一个,但建议列出所有节点的地址。这样,如果列表中的第一个节点不可用,则加入节点可以使用其他地址。

    wsrep_node_name
    指定每个节点的逻辑名称。如果未指定此变量则将使用主机名。

    wsrep_node_address
    指定此特定节点的IP地址。

    wsrep_sst_method
    默认情况下,Percona XtraDB群集使用Percona XtraBackup进行状态快照传输(SST)。
    wsrep_sst_method=xtrabackup-v2强烈建议设置。此方法需要在初始节点上设置用户SST。
    使用wsrep_sst_auth变量提供SST用户凭据。

    wsrep_sst_auth
    指定认证凭证SST 作为<sst_user>:<sst_pass>

    pxc_strict_mode
    PXC严格模式默认启用并设置为ENFORCING,这会阻止在Percona XtraDB Cluster中使用实验和不支持的功能。

    binlog_format
    Galera仅支持行级复制因此设置成binlog_format=ROW。

    default_storage_engine
    Galera完全支持InnoDB存储引擎。它无法与MyISAM或任何其他非事务性存储引擎一起正常工作。将此变量设置为default_storage_engine=InnoDB

    innodb_autoinc_lock_mode
    Galera仅支持2InnoDB的interleaved()锁定模式。设置传统(0)或连续(1)锁定模式可能会导致复制因未解决的死锁而失败。将此变量设置为innodb_autoinc_lock_mode=2

    ########### 各参数解析结束 ##############

    ##########################################################################

    启动第一个节点:

    $ systemctl start mysql@bootstrap.service
    ##注意!第一个节点启动方式和其他节点方式启动不同
    ##如果是CentOS 6,则启动方式为 # /etc/init.d/mysql bootstrap-pxc,之所以采用bootstrap启动,其实是告诉数据库,这是第一个节点,不用进行数据的同步。

    更改mysql的root密码:

    vim /etc/my.cnf
    在[mysqld]中添加
    skip-grant-tables
    $ systemctl restart mysql@bootstrap.service
    $ mysql -uroot -p (直接点击回车,密码为空)
    use mysql;
    update user set authentication_string=password('123456') where user='root';
    flush privileges;
    exit
    删除skip-grant-tables
    $ systemctl restart mysql@bootstrap.service

    确保已初始化群集运行以下命令:(所有节点上执行,下图是节点一上还未启动其他节点时的)

    $ mysql -uroot -p
    mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
    mysql> show status like 'wsrep%';

    注:现在上面的wsrep_cluster_size 是为1的

    验证sstuser登录:(所有节点上执行)

    $ mysql -usstuser -p123456 -S /var/lib/mysql/mysql.sock -e 'show databases'

    注意:如有报错自行修改,也就是权限和用户有没添加的问题

    启动其他所有节点:(所有节点上执行)

    $ systemctl start mysql   

    附:启动时有一个节点报了个错,如下:

    根据报错信息,最后解决:

    再到节点有上去看下:


    简单测试:

    在节点2上创建一个数据库,并在节点1上在节点2上创建的库中创建一张test100表

    然后再在节点3上的节点2上创建的test100表中插入数据

  • 相关阅读:
    索引
    静态成员实例
    异常实例
    继承实例
    构造函数实例
    verilog时序优化
    verilog语法笔记
    Idelay进行时序调节
    Vivado综合属性:ASYNC_REG
    verilog分频
  • 原文地址:https://www.cnblogs.com/smlile-you-me/p/9845580.html
Copyright © 2020-2023  润新知