# osc

# pt-online-schema-change

  • 使用前需要手动下载安装percona-toolkit (v3.0.4或参数兼容版本)
  • 使用前需要指定pt-osc目录参数osc_bin_dir,默认为/usr/local/bin

####参数设置

pt-osc工具的设置参数可以可以通过inception show variables like 'osc%';查看

inception show variables like 'osc%';

支持以下方式设置:

  • 1.通过inception set设置
inception set osc_check_interval = 10;
  • 2.配置config.toml,并通过-config=config.toml指定配置文件启动

# 进程命令

#####查看osc进程

inception get osc processlist;

返回结果:

DBNAME TABLENAME COMMAND SQLSHA1 PERCENT REMAINTIME INFOMATION
test_inc t1 alter table t1 add column c33 int *E53542EFF4E179BE267210114EC5EDBEF9DC5D8F 9 00:36 Copying test_inc.t1: 9% 00:36 remain

#####查看指定osc进程

inception get osc_percent '*E53542EFF4E179BE267210114EC5EDBEF9DC5D8F';

返回结果:

DBNAME TABLENAME SQLSHA1 PERCENT REMAINTIME INFOMATION
test_inc t1 *E53542EFF4E179BE267210114EC5EDBEF9DC5D8F 49 00:14 Copying test_inc.t1: 49% 00:14 remain

#####终止指定osc进程 终止后注意手动清理相关辅助表

inception kill osc '*E53542EFF4E179BE267210114EC5EDBEF9DC5D8F';
-- 或同义词
inception stop alter '*E53542EFF4E179BE267210114EC5EDBEF9DC5D8F';

# 参数说明

参数 默认值 可选范围 说明
osc_on false bool OSC开关
osc_alter_foreign_keys_method none string 对应OSC参数alter-foreign-keys-method
osc_bin_dir /usr/local/bin string pt-online-schema-change脚本的位置
osc_check_alter true bool 对应参数--[no]check-alter
osc_check_interval 5 int 对应参数--check-interval,意义是Sleep time between checks for --max-lag.
osc_check_replication_filters true bool 对应参数--[no]check-replication-filters
osc_chunk_size 1000 int 对应参数--chunk-size
osc_chunk_size_limit 4 int 对应参数--chunk-size-limit
osc_chunk_time 1 int 对应参数--chunk-time
osc_check_unique_key_change v1.0.5 true bool 对应参数--[no]check_unique_key_change,设置是否检查唯一索引
osc_critical_thread_connected 1000 int 对应参数--critical-load中的thread_connected部分
osc_critical_thread_running 80 int 对应参数--critical-load中的thread_running部分
osc_drop_new_table true bool 对应参数--[no]drop-new-table
osc_drop_old_table true bool 对应参数--[no]drop-old-table
osc_max_flow_ctl v1.2.2 -1 int 对应参数--max-flow-ctl. 检查集群暂停流量控制所花费的平均时间 (仅适用于PXC 5.6及以上版本,版本自动判断). -1表示不开启. 非PXC集群会自动忽略该参数
osc_max_lag 3 int 对应参数--max-lag
osc_max_thread_connected 1000 int 对应参数--max-load中的thread_connected部分
osc_max_thread_running 80 int 对应参数--max-load中的thread_running部分
osc_min_table_size 16 int OSC的开关,如果设置为0,则全部ALTER语句都走OSC,如果设置为非0,则当这个表占用空间大小大于这个值时才使用OSC方式。单位为M,这个表大小的计算方式是通过语句: select (DATA_LENGTH + INDEX_LENGTH)/1024/1024 from information_schema.tables where table_schema = "dbname" and table_name = "tablename"来实现的。
osc_print_none false bool 用来设置在Inception返回结果集中,对于原来OSC在执行过程的标准输出信息是不是要打印到结果集对应的错误信息列中,如果设置为1,就不打印,如果设置为0,就打印。而如果出现错误了,则都会打印
osc_print_sql false bool 对应参数--print
osc_sleep v1.2.4 0.0 float 对应参数--sleep
osc_recursion_method processlist string 对应参数recursion_method