问题标签 [gtid]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
689 浏览

mysql - 在 percona xtradb 集群中重置 master


我有两个 pxc 集群,每个集群由 3 个 mysql 服务器组成。
PXC1(node1,node2,node3) 有 db1 和 db2,PXC2(node4,node5,node6) 有 db2 和 db3。
我已经在 pxc1(node1) 和 pxc2(node3) 之间设置了一个基于 gtid 的复制。

现在复制失败了,因为 master(pxc1) 已经清除了 pxc2 所需的 gtid。我浏览了许多博客和论坛。每个人都建议在 slave 中运行命令 reset master 后更改 gtid_purged 的​​值。

但是,在 pxc 集群中,不允许重置 master。是否有任何解决方案来修复复制。

0 投票
1 回答
4434 浏览

mysql - GTID 一致性:CREATE TEMPORARY TABLE 和 DROP TEMPORARY TABLE 只能在事务上下文之外执行

我的 Magento 版本是 2.2.3。我们正在使用 Google Cloud SQL 第二代实例。

运行索引命令时遇到错误

一般错误:1787 语句违反 GTID 一致性:CREATE TEMPORARY TABLE 和 DROP TEMPORARY TABLE 只能在事务上下文之外执行。函数或触发器中也不允许使用这些语句,因为函数和触发器也被认为是多语句事务。查询是:CREATE TEMPORARY TABLE IF NOT EXISTS catalog_product_index_eav_tempLIKE catalog_product_index_eav_tmp

0 投票
1 回答
767 浏览

mysql - MariaDB 复制 - 由于中继日志中的 gtid 语句导致从属滞后

我正在进行从 MySql 到涉及复制的 MariaDB 的迁移工作,一切正常,主 MySql(5.5.59)与从属 MariaDB(10.1.26)的兼容性很好。

当我启用从 MariaDB 主服务器到 MariaDB 从服务器(相同版本:10.1.26)的复制时,会出现问题。在某些情况下,在大规模更新时确定,从站开始滞后。如果我将主服务器恢复到 MySql (5.5.59) 并复制到 MariaDB 中的同一个从服务器,那么在同一组更新上永远不会发生滞后。

我检查了延迟的 MariaDB 从站中的中继日志,比较了 MySql 为主时收到的日志和 MariaDB 为主时收到的日志,唯一的区别是当主服务器是 MariaDB 时,我可以看到与 gtid 相关的语句。

我想在主服务器是 MariaDB 时禁用中继日志中 gtid 语句的存在,并进行类似于没有 gtid 的“旧式”MySql 复制的复制,但我还没有发现是否可以这样做。

0 投票
1 回答
536 浏览

mysql - 为什么 MySQL `gtid_owned` 会话变量在提交事务后总是为空?

我正在测试一些使用 MySQL 全局事务 ID (GTID) 的工作,但我很难获得最新的会话 GTID。我已启用 GTID(全局gtid_mode设置为ON_PERMISSIVE)。根据以下文档gtid_owned

此只读变量包含一个列表,其内容取决于其范围。当与会话范围一起使用时,该列表包含该客户端拥有的所有 GTID;...

因此,我希望在提交事务后,此会话变量将包含 GTID;但无论我做什么,它总是空的。但是,gtid_executed每次我提交事务时全局都会发生变化,所以我知道 GTID 正在工作。

这是一个演示此问题的会话:

请注意,每次提交事务(显式或隐式/自动提交)时,已执行 GTID 的全局列表都会增加,但会话gtid_owned始终为空。

我在做什么错/错过了什么?还是我发现了一个错误?

0 投票
0 回答
229 浏览

mysql - Mysql 复制的 GTID 为 ON 时的联合表错误

我有一个关于mysql复制的问题。

我有 master、slave 和另一个独立的 db,并且在 master 和 slave 上强制执行_gtid_consistency = ON。

我的测试用例:

当我尝试在事务中插入联合表时,它会出现如下错误。

我想记录所有类型的事情,无论是在事务中还是在非事务中。我可以排除联合表进行复制吗?或者如何强制它进行复制?

0 投票
2 回答
185 浏览

mysql - 是否可以要求 ProxySQL 在读取时使用特定的 GTID?

我们有一个应用程序向 ProxySQL 发出写入,然后立即读取可能会受到写入的影响。ProxySQL 后面是四台 MySQL 服务器——一台写入器和三个从写入器复制的读取器。

现在,ProxySQL 能够通过记录原始写入的 OK 数据包中发回的 GTID 和读取器的 binlog 提要来确保它选择一个“最新的”读取器,以确保它选择一个已经执行写入的读取器。

我们的问题是,由于我们的拓扑结构,读取实际上可能在与写入不同的连接上到达 ProxySQL。因此,“读取”连接可能持有较旧的 GTID,因此可能会选择尚未发生写入的“非最新”读取器。

如果可以告诉 ProxySQL 确保阅读器使用“指定”GTID(我们自己从 OK 数据包中解析出来的)而不是连接上的 GTID,我们可以看到一个可能的解决方案,但我们没有知道我们是否可以这样做 - 我在文档中看不到任何内容。

任何关于可行解决方案的想法都将受到欢迎!

我们正在使用带有 ProxySQL 版本 2.0.3-29-g00f26d5 的 mySQL 5.7.25。

我们目前的结果是我们经常执行写入然后执行读取,但读取返回写入之前存在的状态。

0 投票
0 回答
297 浏览

mysql - MySQL GTID,我的设置是 Master <=(Slave,Master)=> Slave 类型吗?

我的老板给了我一项任务,将一个相当古老的基于 Web 的电子商务遗留应用程序迁移到新服务器上。它的数据库总共有大约 1.5 亿行,运行在 MySQL 5.6 和 PHP 5.5.9 上。

在这个应用程序上,似乎有某种 MySQL GTID 复制机制。

我无法清楚地了解复制设置。

例如,两个 MySQL 服务器都有一个输出到命令SHOW SLAVE STATUSSHOW MASTER STATUS. 如果我期望其中一台服务器是主服务器而另一台服务器是从服务器,这是否有意义?

话虽如此,我假设我手头有一个 Master <=(Slave,Master)=> Slave 机制。这种说法正确吗?

下面我为上下文添加技术信息:

服务器 A:

服务器 B:

0 投票
1 回答
373 浏览

mysql - 警告:选项 --database 已被使用

运行 mysqlbinlog 将二进制日志从一台服务器加载到另一台服务器。

不断收到消息:

警告:已使用选项 --database。它可以过滤部分事务,但无论如何都会包含 GTID。

嗯——好吗?所以??

好吧,也许这是一个愚蠢的问题,但是我应该如何区分我想要的数据库的“GTID”和我不想要的数据库的“GTID”?换句话说,如何在关闭这个烦人的警告的同时指定特定数据库的事务?

尝试添加“--include-gtids”参数,但我认为它需要一个 GTID 列表。我没有 GTID 列表。我有一个数据库。为什么这么复杂?

0 投票
1 回答
133 浏览

mysql - MySQL 在 DDL 语句期间是否会停止整个集群?

最近,我读到基于 Galera 的 MySQL 集群在默认情况下对 DDL 使用称为全顺序隔离 ( https://galeracluster.com/library/documentation/schema-upgrades.html#toi ) 的概念,它会暂停整个集群上的写入,直到它在所有节点上提交。

MySQL 如何处理原生异步复制中的 DDL?它是否也会停止其他模式的写入?

0 投票
2 回答
2766 浏览

mysql - 如何在 mysql 5.7 中完全禁用 GTID?

由于我的 mysql 数据库仅用于小型 Web 应用程序,因此我不需要任何复制功能。在监视时,我注意到一个名为thread/sql/compress_gtid_table. 在倾倒一些桌子时,mysqldump我收到了这个警告:

我怎么能确定,所有 GTID 功能都被完全禁用并且不会造成开销?

这是我的配置: