添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
腼腆的皮带  ·  MySQL Galera ...·  3 周前    · 
读研的红薯  ·  错误Galer群集:无法从: ...·  3 周前    · 
率性的山楂  ·  错误Galer群集:无法从: ...·  3 周前    · 
魁梧的烈马  ·  配置mariadb ...·  3 周前    · 
跑龙套的感冒药  ·  MySQL - Galera集群 | ...·  3 周前    · 
博学的墨镜  ·  Errors prevented ...·  10 月前    · 

Swap空间

使用writeset缓存在写入状态转移时需要更多内存。要控制 writeset 缓存的内存使用情况,请检查 Galera 参数: gcs.recv_q_hard_limit gcs.recv_q_soft_limit gcs.max_throttle

在安装配置前,做如下假设:

  • 需要配置的集群有两个数据库服务器节点;
  • 为了避免集群脑裂,Galera需要有至少三个节点,因此需要加入一个仅作仲裁使用的仲裁节点;
  • 三个节点的IP地址分别如下:
  • 数据库节点

    登录数据库节点服务器,在Debian系统上使用如下命令安装 MariaDB Galera Cluster

    sudo apt-get install mariadb-server galera-4
    

    仲裁节点仅起到两个数据库节点无法同步或出现故障时的仲裁作用,防止集群出现脑裂,不会负责数据同步和数据库服务,因此负载较轻,可安装在其他应用的服务器上。当集群数据库节点大于等于3时,不需要仲裁节点。

    在仲裁节点上,使用如下命令安装仲裁服务:

    sudo apt-get install galera-arbitrator-4
    

    编辑集群配置

    数据库节点配置

    /etc/mysql目录中有mariadb的配置文件

  • mariadb.cnf为全局配置;
  • conf.d目录中存放全局参数;
  • mariadb.conf.d目录存放MariaDB的参数;
  • 其中60-galera.cnf为集群配置文件:
  • 激活主要参数,修改集群名称,集群地址;
  • 50-server.cnf为数据库服务配置文件:
  • 激活log_bin参数,通过二进制日志来在两个节点同步数据。
  • # 可参考以下参数修改 log_bin = /var/log/mysql/mysql-bin.log expire_logs_days = 10

    60-galera.cnf,需要对两个节点分别配置

    # 激活wsrep
    wsrep_on=1
    # wsrep库的绝对路径
    wsrep_provider=/usr/lib/galera/libgalera_smm.so
    # 集群名称,在两个节点上需要保持一致
    wsrep_cluster_name="RetroDatabase Cluster"
    # 集群各节点地址,Galera集群需要至少三个节点以防止脑裂,如配置双节点集群,需要加入第三个仲裁节点的地址
    wsrep_cluster_address="gcomm://192.168.1.11,192.168.1.12,192.168.1.13"
    # 当前节点名称,各节点不能相同
    wsrep_node_name="RetroFire"
    # 当前节点IP地址
    wsrep_node_address="192.168.1.11"
    

    仲裁节点配置

    修改仲裁节点上的/etc/default/garb文件进行配置,以下是样例。

    # 逗号分隔的集群各节点IP地址,包含仲裁节点,默认端口是4567
    GALERA_NODES="192.168.1.11:4567,192.168.1.12:4567,192.168.1.13:4567"
    # 集群名称,需要和其他数据库节点配置文件中一致
    GALERA_GROUP="RetroDatabase Cluster"
    

    首次启动集群

    在所有数据库节点使用如下命令停止数据库服务:

    sudo systemctl stop mariadb
    

    在所有数据库节点删除默认生成的空数据库,并重新生成默认数据库:

    sudo rm -rf /var/lib/mysql/
    sudo mariadb-install-db
    

    在其中一个数据库节点启动集群:

    sudo galera_new_cluster
    

    完成后,在其他数据库节点按常规方法启动数据库服务加入集群:

    sudo systemctl start mariadb
    

    在仲裁节点启动仲裁服务:

    sudo systemctl start garb
    

    集群状态验证

    在任何一个数据库集群,使用mysql命令进入数据库操作环境,通过mysql命令show status like 'wsrep_cluster_size';来确认集群激活的节点数量。

    wells@earth:~$ mysql
    Welcome to the MariaDB monitor.  Commands end with ; or \g.
    Your MariaDB connection id is 2173
    Server version: 10.5.21-MariaDB-0+deb11u1-log Debian 11
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    MariaDB [(none)]> show status like 'wsrep_cluster_size';
    +--------------------+-------+
    | Variable_name      | Value |
    +--------------------+-------+
    | wsrep_cluster_size | 3     |
    +--------------------+-------+
    1 row in set (0.003 sec)
    

    关闭和再次启动

    依次在各数据库节点使用如下命令关闭数据库服务:

    sudo systemctl stop mariadb
    

    在仲裁节点使用如下命令关闭服务:

    sudo systemctl stop garb
    

    再次启动集群

    在最后一个关闭的数据库节点使用sudo galera_new_cluster启动集群,如果无法成功启动,执行以下操作:

  • 观察所有结点的数据库服务和仲裁服务的进程时候还有残留,如果有需要停止后才能再次启动集群;
  • 若所有相关进程都已停止,修改该节点的/var/lib/mysql/grastate.dat文件,把safe_to_bootstrap设为 1
  • 再次使用sudo galera_new_cluster命令启动集群
  • 在其他数据库节点使用如下命令启动数据库服务:

    sudo systemctl start mariadb
    

    在仲裁节点启动仲裁服务:

    sudo systemctl start garb
    

    集群使用过程中数据库节点的退出和加入

    在整个集群还在正常运行时,使用标准的sudo systemctl stop mariadbsudo systemctl start mariadb命令来退出或加入节点。

    Post Views: 607 TECH 技术Tags : , , , , , 在龙芯3A2000C Debian平台配置两节点双活Maria Galera Cluster有12条评论

    Galera Cluster 这玩意要用得好其实还真是伤脑筋的,比如发生死锁时(有兴趣可以看看: https://www.wavecn.com/content.php?id=250)。我手头的生产环境还有莫名其妙完全解释不了的一个随机情况,会破坏集群的Consistency,几年都确定不了原因也解决不了。现在都在换硬件平台,不知道又会有什么新情况出现了。

    我用siege做压力测试,参数是300个并发并且每个循环100次(并非一次结束),随机打开网站的某一个页面。所以实际压力还是有点大,CPU还是挺煎熬的。不过虽然知道在反向代理方面Nginx性能要比HAProxy差一些,但没想到差挺多的。可能是我设置的问题,但是我也尝试了很多种方法调整,但并没有好的结果。

    比如您是如何给每个节点进行供电的,之前看视频的时候猜想是 csps 引出12V供电再通过dcatx给主板,这样的话不是很明白每个节点的硬盘是如何处理的。另外就是您是使用的无盘还是其他方案呢

    近期评论

    归档

  • 2024年1月
  • 2023年12月
  • 2023年10月
  • 2023年9月
  • 2023年7月
  • 2023年3月
  • 2023年1月
  • 2022年12月
  • 2022年11月
  • 2022年6月
  • 2022年3月
  • 2022年2月
  • 2021年12月
  • 2021年11月
  • 2021年9月
  • 2021年8月
  • 2021年7月
  • 2021年6月
  • 2021年5月
  • 2021年4月
  • CREATE 创造
  • OTHERS 杂谈
  • PLAY 玩耍
  • RETRO 复古
  • TECH 技术
  • 条目feed
  • 评论feed
  • WordPress.org
  •