mysqldump -u數據庫用戶名 -p 數據庫名 表名(可忽略) > /備份路徑/備份數據庫名.sql
ySQL數據備份之mysqldump使用
mysqldump常用於MySQL數據庫邏輯備份。
1、各種用法說明
A. 最簡單的用法:
mysqldump -uroot -pPassword [database name] > [dump file]
上述命令將指定數據庫備份到某dump文件(轉儲文件)中,比如:
mysqldump -uroot -p123 test > test.dump
生成的test.dump文件中包含建表語句(生成數據庫結構哦)和插入數據的insert語句。
B. --opt
如果加上--opt參數則生成的dump文件中稍有不同:
. 建表語句包含drop table if exists tableName
. insert之前包含一個鎖表語句lock tables tableName write,insert之后包含unlock tables
C. 跨主機備份
使用下面的命令可以將host1上的sourceDb復制到host2的targetDb,前提是host2主機上已經創建targetDb數據庫:
mysqldump --host=host1 --opt sourceDb| mysql --host=host2 -C targetDb
-C指示主機間的數據傳輸使用數據壓縮
D. 只備份表結構
mysqldump --no-data --databases mydatabase1 mydatabase2 mydatabase3 > test.dump
將只備份表結構。--databases指示主機上要備份的數據庫。如果要備份某個MySQL主機上的所有數據庫可以使用--all-databases選項,如下:
mysqldump --all-databases > test.dump
E. 從備份文件恢復數據庫
mysql [database name] < [backup file name]
2、結合Linux的cron命令實現定時備份
比如需要在每天凌晨1:30備份某個主機上的所有數據庫並壓縮dump文件為gz格式,那么可在/etc/crontab配置文件中加入下面代碼行:
30 1 * * * root mysqldump -u root -pPASSWORD --all-databases | gzip > /mnt/disk2/database_`date '+%m-%d-%Y'`.sql.gz
前面5個參數分別表示分鍾、小時、日、月、年,星號表示任意。date '+%m-%d-%Y'得到當前日期的MM-DD-YYYY格式。
3、一個完整的Shell腳本備份MySQL數據庫示例
#vi /backup/backup.sh
!bin/bash
cd /backup
echo "You are in backup dir"
mv backup* /oldbackup
echo "Old dbs are moved to oldbackup folder"
File = backup-$Now.sql
mysqldump -u user -p password database-name > $File
echo "Your database backup successfully completed"