我有一个具有以下结构的复合主键的表:
CREATE TABLE 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
),
键deleted
( deleted
),
键type_id
( type_id
),
键rev_id
( rev_id
),
键lang
( lang
),
KEY fname_format
( fname_format
)
) 引擎=InnoDB 默认字符集=utf8
我正在运行 pt-osc 来更改表的排序规则,它与其他表一起工作正常,但是这个给出了以下错误:
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
Altering 。...
创建新表...
创建新表 db._field_name_test_new OK。
更改新表...
更改。好的。
2017-09-15T09:18:47 创建触发器...
2017-09-15T09:18:47 创建触发器正常。
2017-09-15T09:18:47 复制大约 3843064 行...db
field_name_test
db
_field_name_test_new
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 仅使用了 PRIMARY 索引的 390 字节而不是 497。有关更多信息,请参阅 --[no]check-plan 文档。
我在 Galera 3 节点集群中运行。
所以我对 pt-osc 有以下担忧:
1)对于上述情况,有哪些解决方案?
2) 是否可以在同一个数据库中运行并行 pt-osc ?
如果您需要任何其他输入,请告诉我。提前致谢。