首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Galera集群节点不触发wsrep_notify_cmd和wsrep_sst_method

Galera集群节点不触发wsrep_notify_cmd和wsrep_sst_method
EN

Stack Overflow用户
提问于 2017-10-06 18:39:03
回答 1查看 1.7K关注 0票数 1

我使用3 Galera cluster设置了3个节点的docker containers。当数据从donor节点同步到其他节点时,根据同步节点上的wsrep_notify_cmd触发器或wsrep_sst_method触发器,还需要将数据填充到该节点的相应Redis队列中。问题是,只有在启动集群时才调用这2个触发器。有日志称,这2个触发器是在一个节点已加入集群时调用的。但是,当我试图在一个节点中修改模式或执行CUD操作时,其他节点不会触发触发器。我不知道我是否做错了配置,或者这不是这些触发器的工作方式。

下面是我用来使集群工作的文件

  • docker-compose.yml 版本:'3‘服务: node1:构建:./galera/ galera_mariadb:latest :galera_mariadb:latest container_name:"galera_cluster_node1“主机名: node1端口:-13306:3306个网络:- galera_cluster卷:-galera_cluster-/var/data/galera/mysql/node1 1:/var/lib/#./galera/脚本包含由wsrep_notify_cmd触发器-/galera/ script /:etc/ MYSQL_DATABASE=test_db / MYSQL_USER=maria - MYSQL_PASSWORD=123执行的bash脚本。- GALERA=On - NODE_NAME=node1 - CLUSTER_NAME=maria_cluster -CLUSTER_NAME=maria_cluster_ADDRESS=gcomm://命令:-wsrep CLUSTER_NAME=maria_cluster node2: image: galera_mariadb:latest container_name:"galera_cluster_node2“主机名: node2 links:- node1端口:-23306:3306个网络:- galera_cluster卷:- ./galera/conf.d/galera.cnf:/etc/mysql/conf.d/galera.cnf -/var/data/galera/mysql/node2 2:/var/lib/mysql/-/galera/script/:/etc/mysql/script/环境:- REPLICATION_PASSWORD=123 - GALERA=On - NODE_NAME=node2 - CLUSTER_NAME=maria_cluster- node3: node3 : galera_mariadb:latest container_name:"galera_cluster_node3“主机名:node3 links:- node1端口:-33306:3306个网络:- galera_cluster卷:-node1-/var/data/galera/mysql/node1 3:/var/lib/-/galera/脚本/:/etc/mysql/script/环境:- REPLICATION_PASSWORD=123 - GALERA=On - NODE_NAME=node3 - CLUSTER_NAME=maria_cluster -NODE_NAME=node3_CLUSTER_NAME=maria_cluster=gcomm://node1 1网络: galera_cluster:驱动程序:桥
  • 用于从hauptmedia/mariadb构建3个galera集群nodesGalera集群Dockerfile的Dockerfile :10.1运行apt-get update \& apt-get -y install \ vim \ python \ redis-tools #删除原始映像中的默认galera.cnf运行rm /etc/ add / COPY /d/ galera.cnf #添加自定义galera.cnf副本./COPY/galera.cnf/etc/mysql/COPY/galera.cnf#授予访问并正确执行。chmod 755 /etc/mysql/conf.d/galera.cnf
  • galera.cnf文件 galera wsrep_on=ON # wsrep只支持binlog_format='ROW‘和存储引擎=innodb binlog_format=row default_storage_engine=InnoDB #,以避免使用autoinc innodb_autoinc_lock_mode=2绑定-address=0.0.0.0# relax刷新日志在运行在galera模式下的innodb_flush_log_at_trx_commit=0 sync_binlog=0 # Query时出现的“批量模式插入”问题,因为wsrep query_cache_size=8000000 query_cache_type=1的10.0.14版本支持innodb_flush_log_at_trx_commit=0 sync_binlog=0#查询缓存。#使用内置方法来管理状态快照传输#我们可以自定义这个脚本来执行特定的逻辑wsrep_ method =xtrabackup-v2#这个bash是从主机上生成的,用于将同步数据填充到Redis队列wsrep_notify_cmd=/etc/mysql/scripts/wsrep_notify.sh # force事务级别,以读取逗号事务-隔离=读-提交。
  • wsrep_notify.sh #!/bin/sh -eu wsrep_log() {# echo everything to stderr,使其进入普通错误日志#,使其看起来与日志本地只读tst=的其余部分不同“$(date +%Y%m%d\ %H:%M:%S%N cut -b -21)”WSREP_SST:$* ($tst) >&2 } wsrep_log_info() { wsrep_log "INFO $*““}STATUS=”、“CLUSTER_UUID=”、“PRIMARY=”、“MEMBERS=”、“INDEX=”,而$# -gt 0则做case $1 in -MEMBERS=) STATUS=$2 shift;esac shift done wsrep_log_info "--status $STATUS --uuid $CLUSTER_UUID --主$PRIMARY -$PRIMARY- $MEMBERS -index $INDEX“
  • 以下是3个节点的日志文件

node1:

https://drive.google.com/file/d/0B2q2F62RQxVjbkRaQlFrV2NyYnc/view?usp=sharing

node2:

https://drive.google.com/file/d/0B2q2F62RQxVjX3hYZHBpQ2FRV0U/view?usp=sharing

node3:

https://drive.google.com/file/d/0B2q2F62RQxVjelZHQTN3ZDRNZ0k/view?usp=sharing

我一直在谷歌搜索这个问题,但没有运气。我希望任何经历过Galera集群设置的人都能帮助我解决这个问题。或者有另一种解决需求的方法,请告诉我。非常感谢

EN

回答 1

Stack Overflow用户

发布于 2017-10-09 21:04:43

wsrep_notify_cmd 定义每当群集成员资格或节点状态更改时节点运行的命令。

因此,如果脚本将下面列表中描述的脚本状态更改为任何其他状态,则脚本将在节点上启动:

可能的情况是: 未定义的节点刚刚启动,没有连接到任何主组件。 合并节点连接到主组件,现在正在接收状态快照。 节点连接到主组件,现在正在发送状态快照。 加入节点有一个完整的状态,现在正在赶上集群。 同步节点已与集群同步。 错误(如果是available>)节点处于错误状态。

您可以看到脚本在节点启动和更改其状态时发出通知。当数据只是在galera集群节点之间同步时,它不会通知。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46611987

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档