Gau*_*ani 5 mysql replication alter-table percona
我有一个 Percona MySQL 集群,有一个主节点和几个从节点。他们每个人都运行 MySQL 的“Ver 14.14 Distrib 5.5.40-36.1”。复制是基于行的。
我仅对从属设备的其中一张表运行了更改查询。计划是在所有从服务器上运行此查询,然后进行主切换,因为我们无法承受在主服务器上锁定表。
查询是:
ALTER TABLE order_item_units
MODIFY parent_id BIGINT(20) unsigned ;
Run Code Online (Sandbox Code Playgroud)
并在我使用检查从站时发布此信息show slave status
,我看到复制被破坏并出现以下错误:
表“database_name.order_item_units”的第 3 列无法从“int”类型转换为“bigint(20) unsigned”类型
当我检查该列时,它确实转换为BIGINT
.
现在我无法解决这个问题。我确实停止了奴隶并启动了奴隶,没有帮助。没有停止奴隶和 MySQL 重新启动,没有帮助。做了一个跳过计数器,也没有帮助。
要么该列不应该被转换,那么错误就是正确的,但可能根本不应该有任何错误。
如果列确实被转换了,那么为什么会出现错误?
任何线索我在这里错过了什么?
小智 2
根据您的具体情况设置slave_conversion_type=ALL_NON_LOSSY
会有所帮助。在从站上执行以下命令:
STOP SLAVE;
SET GLOBAL SLAVE_TYPE_CONVERSIONS=ALL_NON_LOSSY;
START SLAVE;
SHOW SLAVE STATUS\G
Run Code Online (Sandbox Code Playgroud)
从文档中:
此模式允许不需要截断或对源值进行其他特殊处理的转换;也就是说,它允许目标类型比源类型具有更宽范围的转换。
归档时间: |
|
查看次数: |
4844 次 |
最近记录: |