|
|
# mysql大表在线ddl工具gh-ost
|
|
|
## 特点
|
|
|
* 无触发器
|
|
|
* 轻量级
|
|
|
* 可暂停
|
|
|
* 动态可控
|
|
|
* 可审计
|
|
|
* 可测试
|
|
|
* 可靠
|
|
|
|
|
|
## 常用参数
|
|
|
|
|
|
参数名称 | 说明
|
|
|
--- | ---
|
|
|
--max-load | 执行过程中,gh-ost 会时刻关注负载情况,负载阀值是使用者自己定义,比如数据库的最大连接数,如果超过阀值,gh-ost 不会退出,会等待到负载在阀值以下继续执行。
|
|
|
--critical-load | 这个指的是 gh-ost 退出阀值,当负载超过这个阀值,gh-ost 会停止并退出
|
|
|
--chunk-size | 迁移过程是一步步分批次完成的,这个参数是指事务每次提交的行数,默认是 1000。
|
|
|
--max-lag-millis | 会监控从库的主从延迟情况,如果延迟秒数超过这个阀值,迁移不会退出,等待延迟秒数低于这个阀值继续迁移。
|
|
|
--throttle-control-replicas
|
|
|
和--max-lag-millis 参数相结合,这个参数指定主从延迟的数据库实例。
|
|
|
--switch-to-rbr
|
|
|
当 binlog 日志格式不是 row 时,自动转换日志格式
|
|
|
--initially-drop-ghost-table
|
|
|
gh-ost 执行前会创建两张 xx_ghc 和 xx_gho 表,如果这两张表存在,且加上了这个参数,那么会自动删除原 gh 表,从新创建,否则退出。xx_gho 表相当于老表的全量备份,xx_ghc 表数据是数据更改日志,理解成增量备份。
|
|
|
--initially-drop-socket-file
|
|
|
gh-ost 执行时会创建 socket 文件,退出时不会删除,下次执行 gh-ost 时会报错,加上这个参数会删除老的 socket 文件,重新创建。
|
|
|
--ok-to-drop-table
|
|
|
go-ost 执行完以后是否删除老表,加上此参数会自动删除老表。
|
|
|
--host
|
|
|
数据库实例地址。
|
|
|
--port
|
|
|
数据库实例端口。
|
|
|
--user
|
|
|
数据库实例用户名。
|
|
|
--password
|
|
|
数据库实例密码。
|
|
|
--database
|
|
|
数据库名称。
|
|
|
--table
|
|
|
表名。
|
|
|
--verbose
|
|
|
执行过程输出日志。
|
|
|
--alter
|
|
|
操作语句。
|
|
|
--cut-over
|
|
|
自动执行 rename 操作。
|
|
|
--debug
|
|
|
输出详细日志。
|
|
|
--panic-flag-file
|
|
|
这个文件被创建,迁移操作会被立即终止退出。
|
|
|
--execute
|
|
|
如果确定执行,加上这个参数。
|
|
|
--allow-on-master
|
|
|
整个迁移所有操作在主库上执行,也就是上文介绍的第二种方案:在主库执行。
|
|
|
--throttle-flag-file
|
|
|
此文件存在时操作暂停,删除文件操作会继续。
|
|
|
## Master执行例子
|
|
|
````
|
|
|
|
|
|
```` |
|
|
\ No newline at end of file |