使用大型复合主键

时间:2017-09-15 14:18:18

标签: mysql composite-primary-key percona galera pt-online-schema-change

我有一个包含复合主键的表格,结构如下:

创建表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_typetype_idrev_iddeleteddeltalang),
  KEY id_typeid_type),
  KEY descdesc),
  KEY deleteddeleted),
  KEY type_idtype_id),
  KEY rev_idrev_id),
  KEY langlang),
  KEY fname_formatfname_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 改变dbfield_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新桌子好了。
dbfield_name_test未被更改 2017-09-15T09:18:47将行从dbfield_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?
如果您需要任何其他输入,请告诉我。提前谢谢。

0 个答案:

没有答案