• galeracluster高可用集群安装(mysql)


    参考文档 https://galeracluster.com/library/documentation/install-mysql.html
    参考书籍:数据中台建设实战

    文章基于centos7 mysql-8.0.28安装笔记,其他服务器及mysql版本可参考官方文档

    本次安装使用3个服务器节点,分别为node154,node155,node156。

    1. 设置存储库

    如果需要不同版本只需更改baseurl地址即可。对应版本地址可通过 https://releases.galeracluster.com/ 查找

    cat > /etc/yum.repos.d/galera.repo <<EOF
    [galera]
    name = Galera
    baseurl = https://releases.galeracluster.com/galera-4.12/centos/7/x86_64
    gpgkey = https://releases.galeracluster.com/GPG-KEY-galeracluster.com
    gpgcheck = 1
    
    [mysql-wsrep]
    name = MySQL-wsrep
    baseurl =  https://releases.galeracluster.com/mysql-wsrep-8.0.28-26.10/centos/7/x86_64
    gpgkey = https://releases.galeracluster.com/GPG-KEY-galeracluster.com
    gpgcheck = 1
    EOF
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    2. 安装

    yum install -y galera-4 mysql-wsrep-8.0
    
    • 1

    3. 配置my.cnf文件

    节点一配置如下,其他节点修改wsrep_node_name和wsrep_node_address即可

    cat /etc/my.cnf <<EOF
    !includedir /etc/my.cnf.d/
    [mysqld]
    max_connections=1000
    max_connect_errors=10000
    datadir=/data/module/mysql
    socket=/var/lib/mysql/mysql.sock
    user=mysql
    binlog_format=ROW
    bind-address=0.0.0.0
    default_storage_engine=innodb
    innodb_autoinc_lock_mode=2
    innodb_flush_log_at_trx_commit=0
    innodb_buffer_pool_size=122M
    character-set-server=utf8
    collation-server=utf8_general_ci
    character_set_server=utf8
    collation_server=utf8_general_ci
    wsrep_provider=/usr/lib64/galera-4/libgalera_smm.so
    wsrep_provider_options="gcache.size=300M; gcache.page_size=300M"
    wsrep_cluster_name="mysql_cluster"
    wsrep_cluster_address="gcomm://node154,node155,node156"
    wsrep_node_name="node154"
    wsrep_node_address="172.20.17.154"
    wsrep_sst_method=rsync
    
    [mysql_safe]
    log-error=/data/module/mysql/log/mysqld.log
    pid-file=/var/run/mysqld/mysqld.pid
    EOF
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    wsrep_provider: 指定 wsrep provider 文件的位置,Galera使用这个 provider 来实现数据的 Replication,不同操作系统下这个文件的位置可能不一样,请注意提前确认文件位置。三个节点该项配置相同。

    wsrep_provider_options:为 wsrep provider 指定一些参数,如本例中指定了缓存及缓存页的大小。三个节点该项配置相同。

    wsrep_cluster_name:为整个 cluster 取名,集群内节点需配置同样的值,不同名称会导致该节点无法加入集群。三个节点该项配置相同。

    wsrep_cluster_address:集群的IP地址,由每个节点的IP地址拼接,中间使用“,”分隔,前面加gcomm://前缀。三个节点该项配置相同。

    wsrep_node_name:当前节点的逻辑名称,与机器名同名即可。三个节点配置不同

    wsrep_node_address:当前节点的IP。三个节点配置不同。

    wsrep_sst_method:用来指明实施SST时使用的方法。三个节点该项配置相同。

    4. 启动

    # 注意mysql datadir的文件夹权限,给mysql用户授权
    mkdir -p /data/module/mysql
    useradd mysql
    chown -R mysql.mysql /data/module/mysql
    
    # 注意: 在启动第一个节点之前先检查一下mysql是否已启动,如果已启动,先关闭mysql服务,同时关闭自动启动。因为在节点一上必须通过mysqld_bootstrap启动服务。
    systemctl stop mysqld
    systemctl disable mysqld
    
    
    # 启动第一个节点与其他节点启动方式不同,这里用node154作为第一个节点
    
    [root@node154 ~]# /usr/bin/mysqld_bootstrap
    
    # 查看是否成功运行
    [root@node154 ~]# systemctl status mysqld
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    5. 登录主节点并检查集群状态

    # 查看默认密码
    grep -i password /var/log/messages
    
    # 找到临时密码,重置密码后登录
    mysqladmin -uroot -p password 'XXXX'
    mysql -uroot -pXXXX
    
    # 检查集群规模
    SHOW STATUS LIKE 'wsrep_cluster_size';
    +--------------------+-------+
    | Variable_name      | Value |
    +--------------------+-------+
    | wsrep_cluster_size | 1    |
    +--------------------+-------+
    
    # 此时 wsrep_cluster_size 应该为1 如果不是1,请检查my.cnf配置文件是否有误
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    6. 启动其他节点

    # 其他节点不是  /usr/bin/mysqld_bootstrap,直接 
    systemctl start mysqld
    
    # 其他两个节点都启动后,再次查看集群
    SHOW STATUS LIKE 'wsrep_cluster_size';
    
    # 此时集群规模已经变为3,说明新启动的节点已加入集群
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述

    7. 测试同步

    连接三台节点Mysql。galera为多主架构,任意节点操作都会互相同步。
    分别在三个节点建库、建表、插入数据
    在这里插入图片描述

    8.1 在node154节点登录,创建数据库,看是否同步
    
    • 1

    在这里插入图片描述
    三个节点均能查看到test库
    在这里插入图片描述
    8.2 在node155节点登录,创建表,看是否同步
    在这里插入图片描述
    三个节点均能查看到test库中的test表
    在这里插入图片描述
    8.3 在node156节点登录,插入数据,看是否同步
    在这里插入图片描述
    三台查看,数据均一致。自增ID不是1、2而是3、6,是因为会根据集群的大小自动调整auto_increment_increment和auto_increment_offset变量。 避免由于auto_increment而引起的复制冲突。
    在这里插入图片描述

  • 相关阅读:
    12.Bilinear Forms
    基于C#通过PLCSIM ADV仿真软件实现与西门子1500PLC的S7通信方法演示
    React环境初始化
    最新AI智能问答系统源码/AI绘画系统源码/支持GPT联网提问/Prompt应用+支持国内AI提问模型
    每日OJ题_剑指offer数组篇
    python---re
    机器学习---数据分割
    java虚拟机垃圾回收相关概念
    【代码随想录】算法训练营 第一天 第一章 数组 Part 1
    聊聊Java中代码优化的30个小技巧
  • 原文地址:https://blog.csdn.net/github_39319229/article/details/125441187