当前位置: 首页 > 知识库问答 >
问题:

MariaDB Galera集群的DR设置

钦景胜
2023-03-14

使用GTID的异步复制已在MDB-01到MDBDR-01之间设置,按照以下链接中的给定配置:http://www.severalnines.com/blog/deploy-asynchronous-replication-slave-mariadb-galera-cluster-gtid-clustercontrol(链接是MariaDB Galera Cluster之间的异步复制,以独立的MariaDB实例。但是,我为MariaDB Galera Cluster到MariaDB Galera Cluster之间的异步复制设置了相同的配置)

我可以用下面的命令从当前从机MDBDR-01=>MDB-01切换到MDBDR-01=>MDB-02:

将MASTER更改为master_host='MDB-02'

请提供输入以实现指向MDBDR-02=>MDB-01或MDBDR-03=>MDB-01。

共有1个答案

金高轩
2023-03-14

您需要了解的一点是,在这种情况下,每个MariaDB的GTID实现都可能导致问题,这篇文章简要地提到了这一点。由于每个节点都维护自己的GTID列表,galera事务没有自己的id,因此相同的GTID可能不会指向每个服务器上的相同位置(请参见本文)。

由于这个问题,我不会尝试在没有Mariadb10.1的情况下做什么。Mariadb10.1.8刚刚发布,是10.1行的第一个GA版本。10.1更改了GTID实现,因此galera事务使用自己的server_id(通过配置变量设置)。然后,您可以筛选从服务器上的复制,以只复制galera ID。

要切换到不同的从服务器,您需要在旧的从服务器上执行最后一个GTID。gtid_slave_pos存储在mysql.gtid_slave_pos中,但是mysql.*表是不复制的。我不完全确定,也没有办法测试事务的原始GTID是否被传递给其他从galera节点(即,如果主集群的galera server_id为1,从集群的galera server_id为2,并且MDBDR-01获得GTID为1-1-123的从事件,那么MDBDR-02是将其记录为1-1-123还是1-2-456)。我猜不会,因为新的GTID实现应该会更改server_id,但您可以验证这一点。由于您可能无法从另一个从galera节点获得最后一个执行的主GTID,因此您可能需要从旧的从节点获得GTID,除非您优雅地关闭旧的从节点,否则这可能是不可能的。您可能需要从新从服务器的binlog中的最后一个执行的事务中查找GTID,并尝试将其与主服务器的binlog中的一个事务匹配。另外,如果您没有使用sync_binlog=1,binlog是不可靠的,可能会有点落后。

当您获得GTID(或猜测)时,您将在新的从服务器上设置复制,与在原始从服务器上设置复制的方式相同。以下命令应执行此操作:

SET GLOBAL gtid_slave_pos = "{Last Executed GTID}";
CHANGE MASTER TO master_host="{Master Address}", master_port={Master Port}, master_user="{Replication User}", master_password={Replication Password}, master_use_gtid=slave_pos;
START SLAVE;

您还应该在重新启动旧从服务器之前禁用它的复制,这样错过的事件就不会被复制两次。

在执行的从GTID通过galera复制之前(这可能永远不会发生),像这样的故障转移将是一个混乱的过程。

 类似资料:
  • 本章节将介绍如何设置本地节点群集,如何使其成为私有的,以及如何使你在eth-netstat网络上的节点协同工作来监控应用程序。作为网络集成测试(与网络/blockchain同步/消息传播等相关的问题,DAPP开发人员测试多块和多用户场景)的后端,完全可供你的ethereum网络是非常有用的。 我们假设您可以通过安装指南构建geth 设置多个节点 为了在本地运行多个ethereum节点,您必须确保:

  • 我想建立一个多kafka集群,大约有3个zookeeper实例,每个集群中有3个kafka代理,每个kafka经纪人大约有5个主题和5个分区。有什么设置指南可以参考吗? PS:我可以找到带有多个Kafka代理的单个zookeeper实例的信息,但不能找到带有多个zookeeper实例的设置。

  • 我有一个主节点,它的ip是192.168.1.101,还有一个非主节点,它的ip是192.168.1.106。两者使用相同版本的ElasticSearch-1.2.0。 但是在我启动主节点和非主节点之后,我得到了以下信息: cluster.name:mycluster node.name:“node1” node.master:true node.data:true index.number_of

  • 我有一个用例,我想建立一个Kafka集群,最初我有1个Kafka Broker(A)和1个Zookeeper节点。以下是我的疑问: > 在向集群添加新的Kafka Broker(B)时。代理A上存在的所有数据都会自动分发吗?如果不是,我需要做的是分发数据。 不,让我们假设情况以某种方式解决了!我的数据分布在两个代理上。现在由于一些维护问题,我想关闭服务器B。 如何将经纪商B的数据传输到已经存在的经

  • 我创建了一个AWS密钥对。 我在这里逐字逐句地遵循指示:https://aws.amazon.com/articles/4926593393724923 当我键入“aws emr创建集群——名称SparkCluster——ami版本3.2——实例类型m3.xlarge——实例计数3——ec2属性KeyName=MYKEY——应用程序名称=Hive——引导操作路径=s3://support.elas

  • 我正试图在hadoop中设置多节点集群,如何将0个数据阳极作为活动数据阳极,而我的hdfs显示了0个字节的分配 但是nodemanager后台进程正在datanodes上运行 `