MySQL之mysqldump的使用


一、mysqldump 簡介

mysqldump 是 MySQL 自帶的邏輯備份工具。

它的備份原理是通過協議連接到 MySQL 數據庫,將需要備份的數據查詢出來,將查詢出的數據轉換成對應的insert 語句,當我們需要還原這些數據時,只要執行這些 insert 語句,即可將對應的數據還原。

二、備份命令

2.1 命令格式

mysqldump [選項] 數據庫名 [表名] > 腳本名

mysqldump [選項] --數據庫名 [選項 表名] > 腳本名

mysqldump [選項] --all-databases [選項]  > 腳本名

2.2 選項說明

參數名 縮寫 含義
--host -h 服務器IP地址
--port -P 服務器端口號
--user -u MySQL 用戶名
--pasword -p MySQL 密碼
--databases   指定要備份的數據庫
--all-databases   備份mysql服務器上的所有數據庫
--compact   壓縮模式,產生更少的輸出
--comments   添加注釋信息
--complete-insert   輸出完成的插入語句
--lock-tables   備份前,鎖定所有數據庫表
--no-create-db/--no-create-info   禁止生成創建數據庫語句
--force   當出現錯誤時仍然繼續備份操作
--default-character-set   指定默認字符集
--add-locks   備份數據庫表時鎖定數據庫表

2.3 實例

備份所有數據庫:

mysqldump -uroot -p --all-databases > /backup/mysqldump/all.db

備份指定數據庫:

mysqldump -uroot -p test > /backup/mysqldump/test.db

備份指定數據庫指定表(多個表以空格間隔)

mysqldump -uroot -p  mysql db event > /backup/mysqldump/2table.db 

備份指定數據庫排除某些表

mysqldump -uroot -p test --ignore-table=test.t1 --ignore-table=test.t2 > /backup/mysqldump/test2.db

三、還原命令

3.1 系統行命令

mysqladmin -uroot -p create db_name 
mysql -uroot -p  db_name < /backup/mysqldump/db_name.db

注:在導入備份數據庫前,db_name如果沒有,是需要創建的; 而且與db_name.db中數據庫名是一樣的才可以導入。

3.2 soure 方法

mysql > use db_name
mysql > source /backup/mysqldump/db_name.db

3.3再Linux操作命令同步數據庫數據
#linux sh
#!/bin/bash
DATABASE=XXX (數據庫名稱)
BACKUP_PATH=/home/zqm/backup/(linux環境需要backup路徑)
CURRENT_TIMESTAME=$(date +%Y%m%d_%H:%M:%S)
 
PROD_HOST=" 127.0.0.1" (數據庫服務器地址)
PROD_DB_USERNAME= name (數據庫登錄用戶名)
PROD_DB_PASSWORD=”password“(數據庫登錄用戶密碼)
 
TEST_HOST=" 127.0.0.2" (數據庫服務器地址)
TEST_DB_USERNAME= name (數據庫登錄用戶名)
TEST_DB_PASSWORD=”password“(數據庫登錄用戶密碼)
 
PORTAL_HOST=" 127.0.0.3" (數據庫服務器地址)
PORTAL_DB_USERNAME=name (數據庫登錄用戶名)
PORTAL_DB_PASSWORD=”password“(數據庫登錄用戶密碼)
 
# 同步到指定時間的數據,一般情況下不需要直接注釋掉
#/usr/bin/mysql -u$TEST_DB_USERNAME -p$TEST_DB_PASSWORD -h $TEST_HOST -P 3306 $DATABASE < ${BACKUP_PATH}\/clazz_student_renewal_info_20201017_16\:27\:19.sql
#/usr/bin/mysql -u$TEST_DB_USERNAME -p$TEST_DB_PASSWORD -h $TEST_HOST -P 3306 $DATABASE < ${BACKUP_PATH}\/team_20201017_16\:27\:19.sql
#/usr/bin/mysql -u$TEST_DB_USERNAME -p$TEST_DB_PASSWORD -h $TEST_HOST -P 3306 $DATABASE < ${BACKUP_PATH}\/clazz_student_log_20201017_16\:27\:19.sql
#/usr/bin/mysql -u$TEST_DB_USERNAME -p$TEST_DB_PASSWORD -h $TEST_HOST -P 3306 $DATABASE < ${BACKUP_PATH}\/clazz_student_20201017_16\:27\:19.sql
#/usr/bin/mysql -u$TEST_DB_USERNAME -p$TEST_DB_PASSWORD -h $TEST_HOST -P 3306 $DATABASE < ${BACKUP_PATH}\/clazz_20201017_16\:27\:19.sql
 
 
# 同步線上表到預發
#/usr/bin/mysqldump --add-drop-table -u $PORTAL_DB_USERNAME -p$PORTAL_DB_PASSWORD -h $PORTAL_HOST -P 3306 $DATABASE team --skip-lock-tables | /usr/bin/mysql -u$TEST_DB_USERNAME -p$TEST_DB_PASSWORD -h $TEST_HOST -P 3306 $DATABASE
#/usr/bin/mysqldump --add-drop-table -u $PORTAL_DB_USERNAME -p$PORTAL_DB_PASSWORD -h $PORTAL_HOST -P 3306 $DATABASE clazz_student_log --skip-lock-tables | /usr/bin/mysql -u$TEST_DB_USERNAME -p$TEST_DB_PASSWORD -h $TEST_HOST -P 3306 $DATABASE
#/usr/bin/mysqldump --add-drop-table -u $PORTAL_DB_USERNAME -p$PORTAL_DB_PASSWORD -h $PORTAL_HOST -P 3306 $DATABASE clazz_student --skip-lock-tables | /usr/bin/mysql -u$TEST_DB_USERNAME -p$TEST_DB_PASSWORD -h $TEST_HOST -P 3306 $DATABASE
#/usr/bin/mysqldump --add-drop-table -u $PORTAL_DB_USERNAME -p$PORTAL_DB_PASSWORD -h $PORTAL_HOST -P 3306 $DATABASE clazz --skip-lock-tables | /usr/bin/mysql -u$TEST_DB_USERNAME -p$TEST_DB_PASSWORD -h $TEST_HOST -P 3306 $DATABASE
#/usr/bin/mysqldump --add-drop-table -u $PORTAL_DB_USERNAME -p$PORTAL_DB_PASSWORD -h $PORTAL_HOST -P 3306 $DATABASE clazz_student_renewal_info --skip-lock-tables | /usr/bin/mysql -u$TEST_DB_USERNAME -p$TEST_DB_PASSWORD -h $TEST_HOST -P 3306 $DATABASE
 
# 配置表同步
#/usr/bin/mysqldump --add-drop-table -u $PROD_DB_USERNAME -p$PROD_DB_PASSWORD -h $PROD_HOST -P 3306 $DATABASE sell_price --skip-lock-tables | /usr/bin/mysql -u$TEST_DB_USERNAME -p$TEST_DB_PASSWORD -h $TEST_HOST -P 3306 $DATABASE
#/usr/bin/mysqldump --add-drop-table -u $PROD_DB_USERNAME -p$PROD_DB_PASSWORD -h $PROD_HOST -P 3306 $DATABASE sell_multi_cutting --skip-lock-tables | /usr/bin/mysql -u$TEST_DB_USERNAME -p$TEST_DB_PASSWORD -h $TEST_HOST -P 3306 $DATABASE
#/usr/bin/mysqldump --add-drop-table -u $PROD_DB_USERNAME -p$PROD_DB_PASSWORD -h $PROD_HOST -P 3306 $DATABASE sell_user_strategy --skip-lock-tables | /usr/bin/mysql -u$TEST_DB_USERNAME -p$TEST_DB_PASSWORD -h $TEST_HOST -P 3306 $DATABASE
#/usr/bin/mysqldump --add-drop-table -u $PROD_DB_USERNAME -p$PROD_DB_PASSWORD -h $PROD_HOST -P 3306 $DATABASE sell_user_price_config --skip-lock-tables | /usr/bin/mysql -u$TEST_DB_USERNAME -p$TEST_DB_PASSWORD -h $TEST_HOST -P 3306 $DATABASE
 
# 臨時同步幾個表,后面可直接刪除
/usr/bin/mysqldump --add-drop-table -u $PORTAL_DB_USERNAME -p$PORTAL_DB_PASSWORD -h $PORTAL_HOST -P 3306 $DATABASE clazz_student_log(需同步的表名) --skip-lock-tables | /usr/bin/mysql -u$TEST_DB_USERNAME -p$TEST_DB_PASSWORD -h $TEST_HOST -P 3306 $DATABASE
/usr/bin/mysqldump --add-drop-table -u $PROD_DB_USERNAME -p$PROD_DB_PASSWORD -h $PROD_HOST -P 3306 $DATABASE clazz_student --skip-lock-tables | /usr/bin/mysql -u$TEST_DB_USERNAME -p$TEST_DB_PASSWORD -h $TEST_HOST -P 3306 $DATABASE
/usr/bin/mysqldump --add-drop-table -u $PROD_DB_USERNAME -p$PROD_DB_PASSWORD -h $PROD_HOST -P 3306 $DATABASE team --skip-lock-tables | /usr/bin/mysql -u$TEST_DB_USERNAME -p$TEST_DB_PASSWORD -h $TEST_HOST -P 3306 $DATABASE
/usr/bin/mysqldump --add-drop-table -u $PROD_DB_USERNAME -p$PROD_DB_PASSWORD -h $PROD_HOST -P 3306 $DATABASE clazz_teacher_contact_push --skip-lock-tables | /usr/bin/mysql -u$TEST_DB_USERNAME -p$TEST_DB_PASSWORD -h $TEST_HOST -P 3306 $DATABASE
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM