基于pt-osc拷贝表并保持数据同步
文章目录
使用 pt-online-schema-change 拷贝表并保持同步
说明
- pt-osc是percona公司下percona-toolkit中的一款 在线变更表结构 的工具
- 实现原理是基于触发器
- 变更表结构流程:
- 先创建变更表结构后的新表,旧表绑定增、删、改的触发器
- 分段加锁,将旧表的数据插入新表中
- 数据拷贝完成后,新旧表加锁,更改新旧表表名,删除旧表及旧表触发器,完成数据拷贝
- 可以通过 –no-swap-tables –no-drop-old-table –no-drop-triggers 参数,跳过新旧表变更表名,删除触发器,删除旧表这几步
- 通过 –new-table-name 指定执行拷贝时生成的新表表名,实现自定义拷贝后新表表名的目的
参数说明
- –max-load “Threads_running=25”:执行时,查询 Threads_running ,如果超过指定值,则 waiting ,等降低后在继续执行
- Threads_running 查询:show global status like ‘Threads_running’
- –no-drop-old-table:执行结束后,不删除旧表
- –no-drop-triggers:拷贝结束后,不删除旧表触发器
- –no-swap-tables:拷贝结束后,不切换新旧表
- –new-table-name:指定生成的临时新表的表名,需为已存在的表,否则无法继续
- –charset=utf8:指定使用 utf8 编码
- –quiet:无死锁时仅打印 error 和 warning
实践
|
|
文章作者 Xiang
上次更新 2021-04-16