本文匯總了PolarDB-X 1.0上常見的DDL執(zhí)行問題。
建表的時候執(zhí)行出錯怎么辦?
DDL的執(zhí)行是一個分布式處理過程,出錯可能導(dǎo)致各個分片表結(jié)構(gòu)不一致,所以需要進行手動清理,詳細操作步驟如下:
- PolarDB-X 1.0會提供基本的錯誤描述信息,比如語法錯誤等。如果錯誤信息太長,則會提示您使用SHOW WARNINGS的命令來查看每個分庫執(zhí)行失敗的原因。
- 您可以通過SHOW TOPOLOGY命令來查看物理表的拓撲結(jié)構(gòu)。
SHOW TOPOLOGY FROM multi_db_multi_tbl; +------+-----------------+-----------------------+ | ID | GROUP_NAME | TABLE_NAME | +------+-----------------+-----------------------+ | 0 | corona_qatest_0 | multi_db_multi_tbl_00 | | 1 | corona_qatest_0 | multi_db_multi_tbl_01 | | 2 | corona_qatest_0 | multi_db_multi_tbl_02 | | 3 | corona_qatest_1 | multi_db_multi_tbl_03 | | 4 | corona_qatest_1 | multi_db_multi_tbl_04 | | 5 | corona_qatest_1 | multi_db_multi_tbl_05 | | 6 | corona_qatest_2 | multi_db_multi_tbl_06 | | 7 | corona_qatest_2 | multi_db_multi_tbl_07 | | 8 | corona_qatest_2 | multi_db_multi_tbl_08 | | 9 | corona_qatest_3 | multi_db_multi_tbl_09 | | 10 | corona_qatest_3 | multi_db_multi_tbl_10 | | 11 | corona_qatest_3 | multi_db_multi_tbl_11 | +------+-----------------+-----------------------+ 12 rows in set (0.21 sec)
- 使用
CHECK TABLE tablename
指令來查看邏輯表是否創(chuàng)建成功。比如下面的例子展示了
multi_db_multi_tbl
的某個物理分表沒有創(chuàng)建成功時的情況mysql> check table multi_db_multi_tbl; +-------------------------------------------------+-------+----------+---------------------------------------------------------------------------+ | TABLE | OP | MSG_TYPE | MSG_TEXT | +-------------------------------------------------+-------+----------+---------------------------------------------------------------------------+ | andor_mysql_qatest. multi_db_multi_tbl | check | Error | Table 'corona_qatest_0. multi_db_multi_tbl_02' doesn't exist | +-------------------------------------------------+-------+----------+---------------------------------------------------------------------------+ 1 row in set (0.16 sec)
- 您可以使用冪等的方式重新執(zhí)行建表或刪表操作,該操作會創(chuàng)建或刪除剩余的物理表。
CREATE TABLE IF NOT EXISTS table1 (id int, name varchar(30), primary key(id)) dbpartition by hash(id); DROP TABLE IF EXISTS table1;
建索引失敗或加列失敗怎么辦?
建索引失敗或加列失敗的處理方法跟上面建表失敗的處理類似。詳情請參見如何處理DDL異常 。