1. 程式人生 > >mysqldump資料備份

mysqldump資料備份

可以通過mysqldump –help 檢視詳細幫助
-d 表示只匯出結構
-t 表示只匯出資料
–single-transaction 我們可以控制備份匯出時,操作在同一事務中,來達到備份資料的一致性和完整

–lock-tables 表示匯出備份時只能鎖定一個庫
–lock-all-tables 需要 dump 的表分別在多個不同的資料庫中,一定要使用“–lock-all-tables”才能確保資料的一致完整性。

1.匯出資料庫
mysqldump –lock-all-tables ximilo_server -u使用者名稱 -p密碼 資料庫名> ximilo_server.sql
若提示 Using a password on the command line interface can be insecure.其實資料已經匯出到當前命令所在目錄
匯出指定表
mysqldump –lock-all-tables ximilo_server 表名1 表名2

寫指令碼

#!/bin/sh
# File: /root/mysql_dump/mysql_back.sh
# Database info
DB_NAME="dbname"
DB_USER="username"
DB_PASS="passsword"
# Others vars
# whereis mysqldump
# IS ` but not '
BIN_DIR="/usr/bin"
BCK_DIR="/data/mysql_data_bak"
DATE=`date +%Y%m%d_%H%M%S`
# TODO
mkdir -p $BCK_DIR
$BIN_DIR/mysqldump --opt -u$DB_USER
-p$DB_PASS $DB_NAME > $BCK_DIR/$DB_NAME.dump_$DATE.sql

然後在crontab中新增任務並執行指令碼

 crontab -e 
 新增以下內容
# 新增一行,root使用者不需要指定執行的使用者名稱,ESC,wq
#第一個數字表示分(minute);
#第二個數字表示時(hour);
#第三個數字表示天(day of month);
#第四個數字表示月(month);
#第五個數字表示分(day of week);
#以上數字為*時表示不限。
* 23 * * *  /data/mysql_data_bak/mysql.sh #表示每天23
時自動備份