使用mysqldump遷移TaurusDB數據
注意對于mysqlpump工具,由于在并行備份場景有coredump問題,不建議您使用,推薦您使用mysqldump工具遷移。
遷移準備
TaurusDB支持開啟公網訪問功能,通過彈性IP進行訪問。您也可通過彈性云主機的內網訪問TaurusDB。
- 準備彈性云主機或可通過公網訪問TaurusDB。
- 在準備的彈性云主機或可訪問TaurusDB數據庫的設備上,安裝MySQL客戶端。
如何獲取相應安裝包及完成安裝,請參見如何安裝MySQL客戶端。
說明該彈性云主機或可訪問TaurusDB數據庫的設備需要安裝和TaurusDB數據庫服務端相同版本或更高版本的數據庫客戶端,MySQL數據庫或客戶端會自帶mysqldump和mysql工具。
導出數據
要將源數據庫遷移到TaurusDB數據庫,需要先對其進行導出。
注意
相應導出工具需要與數據庫引擎版本匹配。
數據庫遷移為離線遷移,您需要停止使用源數據庫的應用程序。
步驟 1 登錄已準備的彈性云主機,或可訪問TaurusDB數據庫的設備。
步驟 2 使用mysqldump將元數據導出至SQL文件。
注意MySQL數據庫是TaurusDB數據庫服務管理所必須的數據庫,導出元數據時,禁止指定--all-database參數,否則會造成數據庫故障。
mysqldump --databases < DB_NAME > --single-transaction --order-by-primary --hex-blob --no-data --routines --events --set-gtid-purged=OFF -u < DB_USER > -p -h < DB_ADDRESS > **-P ** < DB_PORT > *|sed -e 's/DEFINER[ ] =[ ] [^ ] / /' -e 's/DEFINER[ ]*=. FUNCTION/FUNCTION/' -e 's/DEFINER[ ] =. PROCEDURE/PROCEDURE/' -e 's/DEFINER[ ] =. TRIGGER/TRIGGER/' -e 's/DEFINER[ ] =.EVENT/EVENT/' > <BACKUP_FILE>
- DB_NAME為要遷移的數據庫名稱。
- DB_USER為數據庫用戶。
- DB_ADDRESS為數據庫地址。
- DB_PORT為數據庫端口。
- BACKUP_FILE為導出生成的文件名稱*。*
根據命令提示輸入數據庫密碼。
示例如下:
mysqldump --databases gaussdb --single-transaction --order-by-primary --hex-blob --no-data --routines --events --set-gtid-purged=OFF -u root -p -h 192.xx.xx.xx -P 3306 |sed -e 's/DEFINER[ ]*=[ ]*[^*]**/*/' -e 's/DEFINER[ ]*=.*FUNCTION/FUNCTION/' -e 's/DEFINER[ ]*=.*PROCEDURE/PROCEDURE/' -e 's/DEFINER[ ]*=.*TRIGGER/TRIGGER/' -e 's/DEFINER[ ]*=.*EVENT/EVENT/' > dump-defs.sql
Enter password:
命令執行完會生成“dump-defs.sql”文件。
步驟 3 使用mysqldump將數據導出至SQL文件。
注意MySQL數據庫是TaurusDB數據庫服務管理所必須的數據庫,導出元數據時,禁止指定--all-database參數,否則會造成數據庫故障。
mysqldump --databases < DB_NAME > --single-transaction --hex-blob --set-gtid-purged=OFF --no-create-info --skip-triggers -u < DB_USER > -p -h < DB_ADDRESS > -P < DB_PORT > -r < BACKUP_FILE >
以上命令的參數說明如步驟2所示。
根據命令提示輸入數據庫密碼。
示例如下:
mysqldump --databases gaussdb --single-transaction --hex-blob --set-gtid-purged=OFF --no-create-info --skip-triggers -u root -p -h 192.xx.xx.xx -P 3306 -r dump-data.sql
命令執行完會生成“dump-data.sql”文件。
導入數據
通過彈性云主機或可訪問TaurusDB數據庫的設備,用相應客戶端連接TaurusDB數據庫實例,將導出的SQL文件導入到TaurusDB數據庫。
注意如果源數據庫中包含觸發器、存儲過程、函數或事件調用,則需確保導入前設置目標數據庫參數log_bin_trust_function_creators=ON
步驟 1 導入元數據到TaurusDB數據庫。
mysql -f -h <DB_ADDRESS> -P < DB_PORT > -u root **-p < ** <BACKUP_DIR> /dump-defs.sql
- DB_ADDRESS為TaurusDB數據庫實例的IP地址。
- DB_PORT為當前數據庫實例的端口。
- BACKUP_DIR為“dump-defs.sql”所在目錄。
示例如下:
mysql -f -h 172.xx.xx.xx -P 3306 -u root -p < dump-defs.sql
Enter password:
步驟 2 導入數據到TaurusDB數據庫。
mysql -f -h <DB_ADDRESS> -P < DB_PORT > -u root -p **< ** <BACKUP_DIR> /dump-data.sql
- DB_ADDRESS為TaurusDB數據庫實例的IP地址。
- DB_PORT為當前數據庫實例的端口。
- BACKUP_DIR為“dump-data.sql”所在目錄。
示例如下:
mysql -f -h 172.xx.xx.198 -P 3306 -u root -p < dump-data.sql
Enter password:
步驟 3 使用MySQL工具連接TaurusDB數據庫實例,查看遷移結果。
mysql> show databases;
示例中,名為my_db的數據庫已經被導入了:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| my_db |
| mysql |
| performance_schema |
+--------------------+
4 rows in set (0.00 sec)