zoukankan      html  css  js  c++  java
  • GitHub开源MySQL Online DDL工具gh-ost参数解析

    GH-OST版本:1.0.28

    -ALLOW-主 - 主

    允许GH-OST运行在双主复制架构中,与一般-assume-master-host参数一起使用。

    -ALLOW空的特有密钥

    允许GH-OST在数据迁移(迁移)依赖的唯一键可以为NULL,默认为不允许为NULL的唯一键。如果数据迁移(迁移)依赖的唯一键允许NULL值,则可能造成数据不正确,请谨慎使用。

    -ALLOW上主

    允许GH-OST直接运行在主库上。默认GH-OST连接的从库。

    - 字符串

    ALTER语句的体部分,如“ALTER TABLE wing ADD COLUMN id int not null default 0”,使用gh-ost的-alter参数时,写成-alter ADD COLUMN id int not null default 0即可。

    -approve-renamed-columns ALTER

    如果你修改一个列的名字(如change column),gh-ost将识别到并且需要提供重命名列名的原因,默认情况下gh-ost是不继续执行的,除非提供-approve-renamed-columns ALTER

    例如:

    没有添加-approve-renamed-columns ALTER参数,并且修改列名:

    gh-ost -user="wing" -host="127.0.0.1" -port=3306 -database="wing" -table="t" -password="wing" -alter="change column col1 c1 int not null default 0" -assume-rbr -execute 2016-12-07 16:39:55致命gh-ost认为ALTER语句重命名列,如下所示:map [col1:col11]; 作为预防,你被要求确认gh-ost是正确的,并提供--approve-renamed-columns,我们都很高兴。或者您可以跳过重命名的列--skip-renamed-columns,在这种情况下列数据可能会丢失

    没有添加-approve-renamed-columns ALTER参数,并且修改列名为相同名称:

    gh-ost -user="wing" -host="127.0.0.1" -port=3306 -database="wing" -table="t" -password="wing" -alter="change column c1 c1 int not null default 0" -assume-rbr -execute

    迁移wingt鬼桌是wing_t_gho 迁移wing-01:3306; 检查wing-02:3306; 在wing-02上执行迁移开始于Wed Dec 07 17:03:22 +0800 2016 chunk-size:1000; max-lag-millis:1500ms; 最大负荷: ; 临界负荷:nice-ratio:0.000000 throttle-additional-flag-file:/tmp/gh-ost.throttle服务于unix socket:/tmp/gh-ost.wing.t.sock Copy:0/3 0.0%; 应用:0; 积压:0/100; 时间:0s(total),0s(copy); 流光标:mysql-bin.000005:62874; 状态:迁移; ETA:N / A复制:0/3 0.0%; 应用:0; 积压:0/100; 时间:1s(合计),1s(复制); 流光标:mysql-bin.000005:64686; 状态:迁移; ETA:N / A复制:3/3 100.0%; 应用:0; 积压:0/100; 时间:1s(合计),1s(复制); 流光标:mysql-bin.000005:64686; 状态:迁移; ETA:截止日期:3/3 100.0%; 应用:0; 积压:1/100; 时间:2s(合计),1s(复制); 流光标:mysql-bin.000005:69035; 状态:迁移; ETA:由于迁移wingt鬼桌是wing_t_gho 迁移wing-01:3306; 检查wing-02:3306; 在wing-02上执行迁移开始于Wed Dec 07 17:03:22 +0800 2016 chunk-size:1000; max-lag-millis:1500ms; 最大负荷: ; 临界负荷:nice-ratio:0.000000 throttle-additional-flag-file:/tmp/gh-ost.throttle服务于unix套接字:/tmp/gh-ost.wing.t.sock复制:3/3 100.0%; 应用:0; 积压:0/100; 时间:2s(合计),1s(复制); 流光标:mysql-bin.000005:69759; 状态:迁移; ETA:到期

    添加-approve-renamed-columns ALTER参数,并且修改列名:

    gh-ost -user="wing" -host="127.0.0.1" -port=3306 -database="wing" -table="t" -password="wing" -alter="change column col1 c1 int not null default 0" -assume-rbr -execute -approve-renamed-columns ALTER

    迁移wingt鬼桌是wing_t_gho 迁移wing-01:3306; 检查wing-02:3306; 在wing-02上执行迁移开始于Wed Dec 07 16:42:16 +0800 2016 chunk-size:1000; max-lag-millis:1500ms; 最大负荷: ; 临界负荷:nice-ratio:0.000000 throttle-additional-flag-file:/tmp/gh-ost.throttle服务于unix socket:/tmp/gh-ost.wing.t.sock Copy:0/3 0.0%; 应用:0; 积压:0/100; 时间:0s(total),0s(copy); 流光标:mysql-bin.000005:41767; 状态:迁移; ETA:N / A复制:0/3 0.0%; 应用:0; 积压:0/100; 时间:1s(合计),1s(复制); 流光标:mysql-bin.000005:43576; 状态:迁移; ETA:N / A复制:3/3 100.0%; 应用:0; 积压:0/100; 时间:1s(合计),1s(复制); 流光标:mysql-bin.000005:43576; 状态:迁移; ETA:截止日期:3/3 100.0%; 应用:0; 积压:1/100; 时间:2s(合计),1s(复制); 流光标:mysql-bin.000005:47927; 状态:迁移; ETA:由于迁移wingt鬼桌是wing_t_gho 迁移wing-01:3306; 检查wing-02:3306; 在wing-02上执行迁移开始于Wed Dec 07 16:42:16 +0800 2016 chunk-size:1000; max-lag-millis:1500ms; 最大负荷: ; 临界负荷:nice-ratio:0.000000 throttle-additional-flag-file:/tmp/gh-ost.throttle服务于unix套接字:/tmp/gh-ost.wing.t.sock复制:3/3 100.0%; 应用:0; 积压:0/100; 时间:2s(合计),1s(复制); 流光标:mysql-bin.000005:48651; 状态:迁移; ETA:到期

    -assume-master-host字符串

    为GH-OST指定一个主库,格式为 “IP:端口” 或者 “主机名:端口” 默认推荐GH-OST连接从库。

    -assume-RBR

    确认GH-OST连接的数据库实例的binlog_format = ROW的情况下,可以指定-assume-rbr,这样可以禁止从库上运行stop slavestart slave,执行GH-OST用户也不需要SUPER权限。

    -chunk-size int

    在每次迭代中处理的行数量(允许范围:100-100000),默认值为1000。

    -concurrent,行数

    该参数如果为True(默认值),则进行row-copy之后,估算统计行数(使用说明select count(*)方式),并调整ETA时间,否则,开始行副本。

    -conf字符串

    GH-OST的配置文件路径。

    - 关键字加载字符串

    一系列逗号分隔的状态名称=值组成,当MySQL的中状态超过对应的数值,GH-OST将会退出。

    例如:

    -critical-load Threads_connected=20,Connections=1500

    指的是当的MySQL中的状态值threads_connected的> 20,连接> 1500的时候,GH-OST将会由于该数据库严重负载而停止并退出。

    -critical-load-interval-millis int

    当值为0时,当达到-critical-load,GH-OST立即退出。当值不为0时,当达到-critical-load,GH-OST在会-critical-load-interval-millis秒数后,再次进行检查,再次检查依旧达到-critical-load,GH-OST将会退出。

    - 切入字符串

    选择切过类型:原子/两步,原子(默认)类型的切比是github上的算法,两步采用的是Facebook的OSC的算法。

    -cut-over-lock-timeout-seconds int

    GH-OST在割接阶段最大的锁等待时间,当锁超时时,GH-OST的割接将重试。(默认值:3)

    数据库字符串

    数据库名称。

    -debug

    调试模式。

    -default-retries int

    各种操作在panick前重试次数。(默认为60)

    -discard-外国键

    很危险的参数,慎用!

    该参数针对一个有外键的表,在幽灵创建鬼表时,并不会为鬼表创建外键。该参数很适合用于删除外键,除此之外,请谨慎使用。

    -exact,行数

    准确统计表行数(使用select count(*)的方式),得到更准确的预估时间。

    -执行

    实际执行alter&migrate表,默认为不执行,仅仅做测试并退出,如果想要ALTER TABLE语句真正落实到数据库中去,需要明确指定-execute

    -force-命名割接

    如果为true,则“unpostpone | cut-over”交互式命令必须命名迁移的表。

    -heartbeat-interval-millis int

    GH-OST心跳频率值,默认为500。

    -帮帮我

    显示GH-OST的帮助信息。

    -hooks -hint字符串

    任意消息通过GH_OST_HOOKS_HINT注入到钩子中,为了方便起见。

    -hooks-path字符串

    钩文件存放目录(默认为空,即禁用钩).hook会在这个目录下寻找符合约定命名的钩文件来执行。

    -host字符串

    数据库的IP /主机名。(默认值:127.0.0.1)。

    -initially降鬼表

    鬼操作之前,检查并删除已经存在的鬼表。该参数不建议使用,请手动处理原来存在的鬼表。默认不启用该参数,鬼直接退出操作。

    -initially滴老表

    鬼操作之前,检查并删除已经存在的旧表。该参数不建议使用,请手动处理原来存在的鬼表。默认不启用该参数,鬼直接退出操作。

    -initially降插槽文件

    GH-OST强制删除已经存在的套接字文件。该参数不建议使用,可能会删除一个正在运行的GH-OST程序,导致DDL失败。

    -max-lag-millis int

    主从复制最大延迟时间,当主从复制延迟时间超过该值后,GH-OST将采取节流(油门)措施,默认值:1500秒。

    最大负载字符串

    一系列逗号分隔的状态名=值组成,当MySQL的中状态超过对应的值时,GH-OST将采取节流(油门)措施。

    例如:

    -max-load Threads_connected=20,Connections=1500

    指的是当的MySQL中的状态值threads_connected的> 20,连接> 1500的时候,GH-OST将采取节流(油门)措施。

    -migrate-ON-副本

    gh-ost的数据迁移(migrate)运行在从库上,而不是主库上。迁移运行在副本上,而不是在主服务器上运行。这将完成对副本的全面迁移,包括切换(而不是复制副本)

    小比例浮动

    每次块时间段的休眠时间,范围[0.0 ... 100.0]。

    例如:

    0:每个块时间段不休眠,即一个块接着一个块执行;

    1:每行复制1毫秒,则另外休眠1毫秒;

    0.7:每行拷贝10毫秒,则另外休眠7毫秒。

    -ok到丢弃表

    GH-OST操作结束后,删除旧表,默认状态是不删除旧表,会存在_tablename_del表。

    -panic-flag-file字符串

    当这个文件被创建,GH-OST将会立即退出。

    -password字符串

    MySQL的密码。

    -port int

    MySQL的端口。

    -postpone-cut-over-flag-file字符串

    当这个文件存在的时候,GH-OST的割接阶段将会被推迟,直到该文件被删除。

    -安静

    静默模式。

    -replication-lag-query字符串

    检查主从复制延迟的SQL语句,默认gh-ost通过show slave status获取Seconds_behind_master作为主从延迟时间依据。如果使用pt-heartbeat工具,检查主从复制延迟的SQL语句类似于:

    SELECT ROUND(UNIX_TIMESTAMP() - MAX(UNIX_TIMESTAMP(ts))) AS delay FROM my_schema.heartbeat;

    -serve-socket-file字符串

    GH-OST的套接字文件绝对路径。

    -serve-tcp-port int

    GH-OST使用端口,默认为关闭端口。

    -skip-renamed-columns ALTER

    如果你修改一个列的名字(如change column),gh-ost将识别到并且需要提供重命名列名的原因,默认情况下gh-ost是不继续执行的。该参数告诉g​​h-ost跳列的数据迁移,让GH-OST把重命名列作为无关紧要的列。该操作很危险,你会损失该列的所有值。

    例如:

    原始表数据:

    mysql >  select  *  from t;
    + - -  + ------ + ---- + ------ + ------ + ------ + ------- +
    | id | 名字| c1 | col2 | col3 | col4 | col11 |
    + - -  + ------ + ---- + ------ + ------ + ------ + ------- + 
    |  1 | | 22 |    0 |    0 |    0 |     0 |
    |  2 | | 22 |    0 |    0 |    0 |     0 |
    |  3 | | 22 |    0 |    0 |    0 |     0 |
    + - -  + ------ + ---- + ------ + ------ + ------ + ------- +

    执行命令:

    gh-ost -user="wing" -host="127.0.0.1" -port=3306 -database="wing" -table="t" -password="wing" -alter="change column c1 col1 int not null default 0" -assume-rbr -execute -skip-renamed-columns ALTER

    操作后表数据:

    mysql >  select  *  from t;
    + - -  + ------ + ------ + ------ + ------ + ------ + ------- +
    | id | 名字| col1 | col2 | col3 | col4 | col11 |
    + - -  + ------ + ------ + ------ + ------ + ------ + ------- + 
    |  1 | | |    0 |    0 |    0 |     0 |
    |  2 | | |    0 |    0 |    0 |     0 |
    |  3 | | |    0 |    0 |    0 |     0 |
    + - -  + ------ + ------ + ------ + ------ + ------ + ------- + 
    3000秒)

    -stack

    添加错误堆栈追踪。

    -SWITCH到RBR

    让GH-OST自动将从库的binlog_format转换为ROW格式。

    表格字符串

    表名称。

    - 测试上,副本

    在从库上测试gh-ost,包括从库上数据迁移(迁移),数据迁移完成后停止从属,原表和ghost表立刻交换而后立刻交换回来。继续保持停止奴隶,使你可以对比两张表。

    - 试验 - 对 - 副本 - 跳跃副本停

     当-test-on-replica执行时,该参数表示该过程中不停止从站。

    -throttle-additional-flag-file字符串

    当该文件被创建后,GH-OST操作立即停止。该参数可以用在多个GH-OST同时操作的时候,创建一个文件,让所有的GH-OST操作停止,或者删除这个文件,让所有的GH-OST操作恢复。

    -throttle-control-replicas字符串

    列出所有需要被检查主从复制延迟的从库。

    例如:

    -throttle-control-replica=192.16.12.22:3306,192.16.12.23:3307,192.16.13.12:3308

    -throttle-flag-file字符串

    当该文件被创建后,GH-OST操作立即停止。该参数适合控制单个GH-OST操作。-throttle-additional-flag-file string适合控制多个GH-OST操作。

    -throttle-query字符串

    节流查询。每秒钟执行一次。当返回值= 0时不需要节流,当返回值> 0时,需要执行节流操作。该查询会在数据迁移(迁移)服务器上操作,所以请确保该查询是轻量级的。

    - 钨

    告诉GH-OST你正在运行的是一个钨复制拓扑结构。

    用户字符串

    MySQL的用户。

    -verbose

    GH-OST运行时输出详细信息。

    -版

    输出GH-OST版本信息并退出。

  • 相关阅读:
    DButils工具类能够用来获取数据库连接向数据库插入更新删除对象
    Android 实现ActionBar定制
    查看CentOs6.5/7的系统版本号
    安装Was liberty之步骤
    在centOS上安装VNC
    SCP远程拷贝命令
    Was liberty资料总结
    罗杰斯:做你喜欢的工作,你会变成个有钱人
    【Java/csv】一个CSV文件解析类(转载)
    当你的才华还撑不起你的野心时,那你就应该静下心来学习。
  • 原文地址:https://www.cnblogs.com/Sunnynanbing/p/7872204.html
Copyright © 2011-2022 走看看