InnoDB導入StoneDB 此場景是利用mysqldump從InnoDB導出,然後再導入StoneDB,在導入StoneDB前,需要對導出文件做如下修改。 1)修改存儲引擎 CREATE TABLE `t_user` ( xxx ) ENGINE=InnoDB; CREATE TABLE `t_ ...
InnoDB導入StoneDB
此場景是利用mysqldump從InnoDB導出,然後再導入StoneDB,在導入StoneDB前,需要對導出文件做如下修改。
1)修改存儲引擎
CREATE TABLE `t_user` (
xxx
) ENGINE=InnoDB;
CREATE TABLE `t_user` (
xxx
) ENGINE=stonedb;
2)去掉鎖表語句
導出文件會輸出"LOCK TABLES...WRITE",這是因為導出時預設使用了參數"--add-locks",由於StoneDB沒有鎖表語句,需要將導出文件的鎖表語句去掉。
LOCK TABLES `t_user` WRITE;
UNLOCK TABLES;
3)去掉USING BTREE
StoneDB的索引結構是LMSTREE,InnoDB的索引結構是BTREE,如果是從其他客戶端導出的文本,建表語句中如果有索引欄位,通常會含有"USING BTREE",導入StoneDB需要去掉。
4)去掉索引
在StoneDB中是不需要創建索引的,如果一個表有很多個索引,反而需要額外維護,可以將導出文件中的索引定義去掉。
StoneDB導入StoneDB
此場景是利用mysqldump從StoneDB導出,然後再導入StoneDB,在使用mysqldump時,需要註意如下幾個事項。
1)使用mysqldump導出時會有如下報錯,這是因為導出參數"--lock-all-tables"是預設的,表示導出期間鎖表。但由於StoneDB沒有鎖表語句,可以使用參數"--single-transaction"規避。
Got error: 1031: Table storage engine for 'STONEDB' doesn't have this option when doing LOCK TABLES
2)導入數據時會有如下報錯,這是因為導出參數"--add-locks"是預設的,會在導出文件輸出"LOCK TABLES...WRITE",導出時可以使用參數"--skip-add-locks"規避。
ERROR 1031 (HY000): Table storage engine for 'STONEDB' doesn't have this option
註:使用Percona的物理備份工具xtrabackup備份StoneDB時,有如下提示,說明xtrabackup不支持StoneDB備份。
innobackupex --defaults-file=/stonedb/install/stonedb.cnf --user=root --password=MySQL_123 --socket=/stonedb/install/tmp/mysql.sock --databases=ztpch.customer --no-timestamp /backup
Warning: "ztpch.customer" uses engine "STONEDB" and will not be backed up.