我有主从复制数据库。 我有一个 10m 行的表。我按月设置分区,例如 p_201701、p_201702、.. 并包括“p_future”。在 master 中,我计划将我的分区 'p_future' 重组为 'p_201711' 和 'p_future'。我计划使用以下查询进行重组。
- 运行此查询时对我的数据库有何影响?
- 它会阻止我的表插入、更新或不插入吗?
- 对我的复制从站有什么影响?
..
ALTER TABLE tbl_history
REORGANIZE PARTITION p_future INTO(
PARTITION p_201711 VALUES LESS THAN (TO_DAYS('2017-12-01')),
PARTITION p_future VALUES LESS THAN MAXVALUE
);
感谢您的回答。
最佳答案
(听起来你读了我的 http://mysql.rjweb.org/doc.php/partitionmaint )
如果您在需要 LESS THAN '2017-12-01'
分区之前执行 REORGANIZE
,几乎不会产生任何影响。这是因为 p_future
应该是空的,并且没有任何内容存储到新分区中。
我说“几乎没有影响”是因为表上会有一些短暂的元锁等,但没有数据可以挖掘。
该技术有点“故障安全”,因为如果您未能运行查询,一切都会继续工作。新行(错误地)进入 p_future,SELECTs
将找到它们。最终,您需要运行脚本(它会更慢)以创建新分区并将行从 p_future 移动到其中。
您用 [replication] 标记了它,但应该不会对 on/by replication 产生影响。对于 Galera,TOI 应该是执行 ALTER
的正确方法。
关于mysql - Reorganize MariaDB table partition 有什么影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47302160/