资讯专栏INFORMATION COLUMN

GALERA ARBITRATOR - 数据库多主集群对应脑裂的解决方案

el09xccxy / 1808人阅读

摘要:集群部署推荐的是至少三个实例或三个节点或三个数据中心等等。有两个用途当集群为偶数节点时,它的加入以避免脑裂的发生。如果失败的话,它不会影响集群的正常操作。这也意味着你不能通过数据库配置文件的方式来启动,比如不能通过启动。否则会有的提示。

GALERA ARBITRATOR

因为Galera集群需要至少3个节点组成集群,才不会发生脑裂状况。

Galera集群部署推荐的是至少三个实例或三个节点或三个数据中心等等。

如果添加一个节点会成本太高,比如添加多一台数据库服务器,那你可以选择使用Galera ArbitratorGalera Arbitrator就是集群中的一份子,可以参与投票,但不参与实际的复制。

注意:虽然Galera Arbitrator不参与复制,但它和其他节点一样也会接受数据。你必须确保他的网络连接。

Galera Arbitrator有两个用途:

当集群为偶数节点时,它的加入以避免脑裂的发生。

同时它能够用于备份,例如快照功能。

如果一个数据中心失败或者是断开连接,并且它与Galera Arbitrator是接连的话,那Galera Arbitrator就会作为中间件的扩展。例如node1node2是断开连接的,此时若node1Galera Arbitratornode2Galera Arbitrator连接的话,那Galera Arbitrator作为中间件将会为node1node2连接通信。

尽管Galera Arbitrator不存储数据,但它必须可以看到所有的流量的传输复制。如果Galera Arbitrator放在一个网络环境较差的地方,那它连接到集群的时候,可能会导致集群执行或性能下降。

如果Galera Arbitrator失败的话,它不会影响集群的正常操作。你可以将一个新的实例加入到集群中,可以有多个实例运行在集群中。

有关Galera Arbitrator备份的设置,可参考Galera 集群备份

STARTING GALERA ARBITRATOR

Galera ArbitratorGalera集群中是一个多带带的进程。这意味着,你需要独立启动它。这也意味着你不能通过数据库配置文件的方式来启动,比如不能通过my.cnf启动。

Galera Arbitrator在启动的时候,脚本会在无人使用的进程中执行sudo声明,有一个特定问题在Fedora和其他版本的Linux中,这默认用户没有操作sudo配置的权限。要修正这个问题需要编辑/etc/sudoers中的Defaults requiretty,把这个注释掉即可。这样就可以防止操作系统阻塞Galera Arbitrator

Starting Galera Arbitrator from the Shell

当开始通过shell命令执行Galera Arbitrator的时候,首先你需要通过命令行参数配置。例如:

$ garbd --group=example_cluster 
     --address="gcomm://192.168.1.1,192.168.1.2,192.168.1.3" 
     --option="socket.ssl_key=/etc/ssl/galera/server-key.pem;socket.ssl_cert=/etc/ssl/galera/server-cert.pem;socket.ssl_ca=/etc/ssl/galera/ca-cert.pem;socket.ssl_cipher=AES128-SHA""

如果你使用SSL的方式,则你需要输入密码。否则会有terminate called after throwing an instance of ‘gu::NotSet’SSL提示。

如果你不想每次通过shell方式启动Galera Arbitrator,那你可以自定义配置文件中执行。
例如配置文件如下:

# arbtirator.config
group = example_cluster
address = gcomm://192.168.1.1,192.168.1.2,192.168.1.3

当你开始启动Galera Arbitrator,使用--cfg选项。
例如:

$ garbd --cfg /path/to/arbitrator.config

更多的参数,可用过--help来查看帮助。

$ garbd --help

Usage: garbd [options] [group address]

Configuration:
  -d [ --daemon ]       Become daemon
  -n [ --name ] arg     Node name
  -a [ --address ] arg  Group address
  -g [ --group ] arg    Group name
  --sst arg             SST request string
  --donor arg           SST donor name
  -o [ --options ] arg  GCS/GCOMM option list
  -l [ --log ] arg      Log file
  -c [ --cfg ] arg      Configuration file

Other options:
  -v [ --version ]      Print version
  -h [ --help ]         Show help message

除了标准的配置,Galera集群中任何配置,都可用于Galera Arbitrator,除了那些repl前缀的命令。
当你从shell启动的话,你可以使用 --option 来设置参数。

更多Galera Arbitrator参数可参考Galera 参数

Starting Galera Arbitrator as a Service

当开始Galera Arbitrator服务时,无论你使用init或者systemd,通过shell命令,指定不同的配置文件,来启动不用的服务,以实现灵活启动。

# Copyright (C) 2013-2015 Codership Oy
# This config file is to be sourced by garbd service script.

# A space-separated list of node addresses (address[:port]) in the cluster:
GALERA_NODES="192.168.1.1:4567 192.168.1.2:4567"

# Galera cluster name, should be the same as on the rest of the node.
GALERA_GROUP="example_wsrep_cluster"

# Optional Galera internal options string (e.g. SSL settings)
# see http://galeracluster.com/documentation-webpages/galeraparameters.html
GALERA_OPTIONS="socket.ssl_cert=/etc/galera/cert/cert.pem;socket.ssl_key=/$"

# Log file for garbd. Optional, by default logs to syslog
LOG_FILE="/var/log/garbd.log"

为了让Galera Arbitrator使用配置文件启动,需要你把他放到系统配置文件中,因操作系统发行版而异,而放到不同的地方,通常是放在/etc下。

通常位置:

/etc/defaults/

/etc/init.d/

/etc/systemd/

/etc/sysconfig/

检查你的发行版的来确定配置文件放在哪里。

一旦你把配置文件放到对的地方,你可以用garb命令来启动服务。

# service garb start
或者
# systemctl start garb

之后它会执行配置文件里面设置的参数来运行对集群的监听。


https://segmentfault.com/a/1190000005370057
原创文章,版权所有,转载请注明出处

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/9299.html

相关文章

  • GALERA ARBITRATOR - 据库多主集群对应裂的解决方案

    摘要:集群部署推荐的是至少三个实例或三个节点或三个数据中心等等。有两个用途当集群为偶数节点时,它的加入以避免脑裂的发生。如果失败的话,它不会影响集群的正常操作。这也意味着你不能通过数据库配置文件的方式来启动,比如不能通过启动。否则会有的提示。 GALERA ARBITRATOR 因为Galera集群需要至少3个节点组成集群,才不会发生脑裂状况。 Galera集群部署推荐的是至少三个实例或三...

    enda 评论0 收藏0
  • 【MySQL】MariaDB Galera Cluster(mariadb10.1.22)部署

    摘要:紧密耦合,所有节点均保持相同状态,节点间无不同数据。热,在过程中无停机时间由于不需要。不存在丢失事务的情况。由于集群是乐观的并发控制,事务可能在该阶段中止。事务不支持,由于在提交上可能回滚。为了稳定的高性能要求,所有的节点应使用统一的硬件。 一、Galera Cluster简介 1.1 galera cluster 介绍 Galera Cluster是MariaDB的一个双活多主集群,...

    ideaa 评论0 收藏0
  • [译]如何防止elasticsearch的脑裂问题

    摘要:如何避免脑裂问题的默认配置很好。结论脑裂问题很难被彻底解决。如果有两个节点报告了不同的集群列表,那么这是一个产生脑裂状况的明显标志。 本文翻译自blog.trifork.com的博文地址是http://blog.trifork.com/2013/10/24/how-to-avoid-the-split-brain-problem-in-elasticsearch/ ,可以复制后在浏览器...

    chanthuang 评论0 收藏0
  • 据库写操作弃用“SELECT ... FOR UPDATE”解决方案

    摘要:如果两个事务同时修改同一个数据,先的事务会成功,另一个会被拒绝,并重新开始运行整个事务。 问题阐述 Mysql Galera集群是迄今OpenStack服务最流行的Mysql部署方案,它基于Mysql/InnoDB,我的OpenStack部署方式从原来的主从复制转换到Galera的多主模式。 Galera虽然有很多好处,如任何时刻任何节点都可读可写,无复制延迟,同步复制,行级复制,但是...

    Imfan 评论0 收藏0
  • 据库写操作弃用“SELECT ... FOR UPDATE”解决方案

    摘要:如果两个事务同时修改同一个数据,先的事务会成功,另一个会被拒绝,并重新开始运行整个事务。 问题阐述 Mysql Galera集群是迄今OpenStack服务最流行的Mysql部署方案,它基于Mysql/InnoDB,我的OpenStack部署方式从原来的主从复制转换到Galera的多主模式。 Galera虽然有很多好处,如任何时刻任何节点都可读可写,无复制延迟,同步复制,行级复制,但是...

    zxhaaa 评论0 收藏0

发表评论

0条评论

el09xccxy

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<