mysql dump 导入导出_使用mysqldump导入导出数据
DRDS支持MySQL官方數(shù)據(jù)導(dǎo)出工具mysqldump。本文圍繞DRDS數(shù)據(jù)導(dǎo)入導(dǎo)出的幾種常見場景對操作步驟和注意事項進行說明。mysqldump命令的詳細說明請參見MySQL官方文檔。
mysqldump 適合小數(shù)據(jù)量(低于1000萬)的離線導(dǎo)入導(dǎo)出。
場景一:從MySQL導(dǎo)入到DRDS
從MySQL導(dǎo)入數(shù)據(jù)到DRDS,請按照以下步驟進行操作。
1.從MySQL中導(dǎo)出數(shù)據(jù)到文本文件。
輸入以下命令,從MySQL中導(dǎo)出表結(jié)構(gòu)和數(shù)據(jù)。假設(shè)導(dǎo)出文件為 dump.sql。
mysqldump-h ip-P port-u user-ppassword--default-character-set=char-set--net_buffer_length=10240--no-create-db--skip-add-locks--skip-lock-tables--skip-tz-utc--set-charset[--hex-blob][--no-data]database[table1 table2 table3...]>dump.sql
參數(shù)說明如下,請根據(jù)實際情況輸入:
參數(shù)名 說明 是否必選ip DRDS實例的 IP。 ??
port DRDS實例的端口。 ?
user DRDS的用戶名。 ??
password DRDS的密碼,注意前面有個-p,之間沒有空格。 ??
char-set 指定的編碼。 ??
--hex-blob 使用十六進制格式導(dǎo)出二進制字符串字段。如果有二進制數(shù)據(jù)就必須使用本選項。影響的字段類型包括 BINARY、VARBINARY、BLOB。 ?
--no-data 不導(dǎo)出數(shù)據(jù)。 ?
table 指定導(dǎo)出某個表。默認導(dǎo)出該數(shù)據(jù)庫所有的表。
2.修改建表語句。
從MySQL導(dǎo)出的數(shù)據(jù)文件包含每個表的建表語句。如果直接在在DRDS上執(zhí)行這些建表語句,會在DRDS上建立一個單表。如果要對某個表進行分庫分表,那么需要手工對建表語句進行修改。
3.導(dǎo)入數(shù)據(jù)文件到DRDS。您可以通過如下兩種方式導(dǎo)入數(shù)據(jù)文件到DRDS:
通過mysql -h ip -P port -u user --default-character-set=char-set命令登錄目標DRDS,執(zhí)行source /yourpath/dump.sql命令將數(shù)據(jù)導(dǎo)入到目標DRDS。
直接通過mysql -h ip -P port -u user --default-character-set=char-set< /yourpath/dump.sql命令將數(shù)據(jù)導(dǎo)入到目標DRDS。
上述兩個命令中default-character-set要設(shè)置成實際的數(shù)據(jù)編碼。如果是Windows平臺,source命令指定的文件路徑需要對分隔符轉(zhuǎn)義。
第一種方式會把所有的步驟回顯到屏幕上,速度略慢,但是可以觀察導(dǎo)入過程。
導(dǎo)入的時候,由于某些PDRDS和MySQL實現(xiàn)上的不同,可能會報錯,錯誤信息類似ERROR 1231 (HY000): [a29ef6461c00000][10.117.207.130:3306][****]Variable @saved_cs_client can't be set to the value of @@character_set_client。此類錯誤信息并不影響導(dǎo)入數(shù)據(jù)的正確性。
場景二:從一個DRDS導(dǎo)入到另一個DRDS
假設(shè)您之前有一個測試環(huán)境的DRDS,測試完畢以后,需要把測試過程中的一些表結(jié)構(gòu)和數(shù)據(jù)導(dǎo)入到生產(chǎn)環(huán)境中的DRDS中,那么可以按照以下步驟進行操作。
從源DRDS中導(dǎo)出數(shù)據(jù)到文本文件。請參見場景一第1步。
導(dǎo)入數(shù)據(jù)文件到DRDS。請參見場景一第3步。
手動創(chuàng)建Sequence對象。
mysqldump并不會導(dǎo)出DRDS中的Sequence對象,所以如果在源DRDS中使用了Sequence對象,并且需要在目標DRDS中繼續(xù)使用相同的Sequence對象,則需要手工在目標DRDS中創(chuàng)建同名的Sequence的對象。具體步驟如下:
a. 在源DRDS上執(zhí)行SHOW SEQUENCES,獲取當前DRDS中的Sequence對象的狀態(tài)。
b. 在目標DRDS數(shù)據(jù)庫上通過CREATE SEQUENCE命令創(chuàng)建新的Sequence對象。
場景三:從DRDS導(dǎo)出數(shù)據(jù)到MySQL
從DRDS導(dǎo)出數(shù)據(jù)到MySQL,和在DRDS之間相互導(dǎo)入數(shù)據(jù)的過程類似,也分為以下幾個步驟。
從源DRDS中導(dǎo)出表結(jié)構(gòu)和數(shù)據(jù)。請參見場景一第1步。
手動修改拆分表的DDL語句。
DRDS中拆分表的建表語句和MySQL并不兼容。為了后續(xù)導(dǎo)入到MySQL中,需手動修改導(dǎo)出的SQL文件,刪除以下關(guān)鍵字:
DBPARTITION BY hash(partition_key):
TBPARTITION BY hash(partition_key):
TBPARTITIONS N
BROADCAST
例如一個拆分表語句導(dǎo)出如下:
CREATE TABLE multi_db_single_tbl
(idint,
name varchar(30),
primary key(id))dbpartitionbyhash(id);
需修改成以下語句:
CREATE TABLE multi_db_single_tbl
(idint,
name varchar(30),
primary key(id));
導(dǎo)入修改以后的文件。請參見場景一第3步。
總結(jié)
以上是生活随笔為你收集整理的mysql dump 导入导出_使用mysqldump导入导出数据的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java如何读取下拉列表的值_java
- 下一篇: java统计行列和字数的函数_JAVA使