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