我有一个包含复合主键的表格,结构如下:
创建表field_name_test
(
id_type
varchar(128)NOT NULL DEFAULT'',
desc
varchar(128)NOT NULL DEFAULT'',
deleted
tinyint(4)NOT NULL DEFAULT'0',
type_id
int(10)unsigned NOT NULL,
rev_id
int(10)unsigned NOT NULL,
lang
varchar(32)NOT NULL DEFAULT'',
delta
int(10)unsigned NOT NULL,
fname_value
varchar(255)DEFAULT NULL,
fname_format
varchar(255)DEFAULT NULL,
PRIMARY KEY(id_type
,type_id
,rev_id
,deleted
,delta
,lang
),
KEY id_type
(id_type
),
KEY desc
(desc
),
KEY deleted
(deleted
),
KEY type_id
(type_id
),
KEY rev_id
(rev_id
),
KEY lang
(lang
),
KEY fname_format
(fname_format
)
)ENGINE = InnoDB DEFAULT CHARSET = utf8
我正在运行pt-o-s-c来更改表的排序规则,并且它与其他表一起工作正常,但是这个表正在给出以下错误:
pt-online-schema-change --execute --password=#### --user=#### --socket=#### --port=#### --chunk-time=1 --recursion-method=none --no-drop-old-table --alter "CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci , CHANGE desc desc varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci , CHANGE id_type id_type varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci , CHANGE lang lang varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci , ROW_FORMAT=DYNAMIC , LOCK=SHARED, ALGORITHM=COPY" D=db,t=field_name_test,h=localhost
找不到奴隶。如果主机######有从属,请参阅--recursion-method
没有检查从站滞后,因为没有找到从站并且未指定--check-slave-lag
操作,尝试,等待:
copy_rows,10,0.25
create_triggers,10,1
drop_triggers,10,1
swap_tables,10,1
update_foreign_keys,10,1
改变db
。field_name_test
...
创建新表...
创建新表db._field_name_test_new确定。
改变新表...
已更改db
。_field_name_test_new
确定
2017-09-15T09:18:47创造触发器......
2017-09-15T09:18:47创建触发器确定。
2017-09-15T09:18:47复制约3843064行...
2017-09-15T09:18:47掉线触发......
2017-09-15T09:18:47掉线触发OK
2017-09-15T09:18:47放下新桌子......
2017-09-15T09:18:47新桌子好了。
db
。field_name_test
未被更改
2017-09-15T09:18:47将行从db
。field_name_test
复制到db
时出错。_field_name_test_new
:2017-09-15T09:18:47在db.field_name_test的第1块复制行时出错,因为MySQL仅使用了390个字节的PRIMARY索引而不是497.请参阅 - [no] check-plan文档以获取更多信息。
我在Galera 3节点集群中运行。
所以我对pt-o-s-c的担忧如下:
1)对于上述情况,可以采用哪些解决方案?
2)是否可以在同一个数据库中运行并行pt-o-s-c?
如果您需要任何其他输入,请告诉我。提前谢谢。