### pt-online-schema-change

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

####参数设置

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

```sql
inception show variables like 'osc%';
```

支持以下方式设置:

- 1.通过```inception set ```设置

```sql
inception set osc_check_interval = 10;
```

- 2.配置config.toml,并通过```-config=config.toml```指定配置文件启动



#### 进程命令


#####查看osc进程

<!-- sqlsha1 -->
```sql
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进程
```sql
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进程
`终止后注意手动清理相关辅助表`
```sql
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_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_recursion_method                   | processlist    | string | 对应参数recursion_method