/usr/bin/mysqldump --opt -ubatsing -pbatsingpw -hlocalhost timepusher > /mnt/mysqlbackup/db_`date +
%f`.sql
#!/bin/sh
# database info
db_user=
"batsing"
db_pass=
"batsingpw"
db_host=
"localhost"
db_name=
"timepusher"
# others vars
bin_dir=
"/usr/bin"
#the mysql bin path
bck_dir=
"/mnt/mysqlbackup"
#the backup file directory
date=
`date +%f`
# todo
#/usr/bin/mysqldump --opt -ubatsing -pbatsingpw -hlocalhost timepusher > /mnt/mysqlbackup/db_`date +%f`.sql
$bin_dir/mysqldump --opt -u$db_user -p$db_pass -h$db_host
$db_name
>
$bck_dir/db_$date.sql
#還原資料庫
#用mysql-front匯入前一天的 *.sql 檔案即可恢復資料
儲存檔案或上傳到 /usr/local/apache/htdocs/timepusher/sqlbak/sqlautobak.sh
1、進入到該指令碼檔案目錄 chmod +x sqlautobak.sh 新增執行許可權,否則會報錯 permission denied2、./sqlautobak.sh ,如果是在windows編寫上傳的檔案可能會報錯
/bin/sh^m: bad interpreter: no such file or directory 這是不同系統編碼格式引起的:在
windows系統中編輯的 .s**件可能有不可見字元,所以在
linux系統下執行會報以上異常資訊。可以在windows上使用notepad++轉換成unix格式(選單中選擇:編輯》檔案格式轉換》轉換成unix)
3、修改後上傳繼續執行 ./sqlautobak.sh ,沒有報錯。再檢視匯出的sql檔案。
1、檢視匯出來的sql檔案,發現其檔案大小非常大,mysqldump也提供了生成gzip壓縮檔案的引數設定2、sqlautobak.sh修改為如下
#!/bin/sh
# database info
db_user=
"batsing"
db_pass=
"batsingpw"
db_host=
"localhost"
db_name=
"timepusher"
# others vars
bin_dir=
"/usr/bin"
#the mysql bin path
bck_dir=
"/mnt/mysqlbackup"
#the backup file directory
date=
`date +%f`
# todo
# /usr/bin/mysqldump --opt -ubatsing -pbatsingpw -hlocalhost timepusher > /mnt/mysqlbackup/db_`date +%f`.sql
# $bin_dir/mysqldump --opt -u$db_user -p$db_pass -h$db_host $db_name > $bck_dir/db_$date.sql
$bin_dir/mysqldump --opt -u$db_user -p$db_pass -h$db_host
$db_name
|gzip
>
$bck_dir/db_$date.sql.zip
# 還原資料庫
# 把 *.sql.zip 使用gunzip 或 本地的解壓軟體 解壓為 *.sql 檔案
# 用mysql-front匯入前一天的 *.sql 檔案即可恢復資料
1、編輯定時任務列表 crontab -e2、插入下面這一行,因為通常來說5點鐘**的訪問量最低。 00 05 * * * /bin/sh
/usr/local/apache/htdocs/timepusher/sqlbak/sqlautobak.sh
#每天早上 5:00am 執行
3、檢視任務是否建立成功 crontab -l
# for details see man 4 crontabs
# example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) or jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (sunday=0 or 7) or sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
如果生成的檔案和解壓出來檢視沒有問題,那麼這個自動定時備份資料庫的指令碼就算是完成了。因為生成的檔案多了會占用一定的空間,所以建議要定期(比如乙個月)清理一下檔案。
$、補充
1、如果該資料庫的使用者沒有分配 鎖表 的許可權,則備份會報錯 when using lock tables 。那是因為mysqldump命令預設在匯出時是要鎖定表的,所以解決方式有兩個。乙個是給該使用者開放 鎖表 的許可權;另乙個是在命令中加上 --skip-lock-tables 這個引數。即是:
$bin_dir/mysqldump --opt -u$db_user -p$db_pass -h$db_host
$db_name --skip-lock-tables| gzip
>
$bck_dir/db_$date.sql.gz
匯入資料庫
mysql>create database abc;
方法一:
選擇資料庫
mysql>use abc;
設定資料庫編碼
mysql>set names utf8;
匯入資料(注意sql檔案的路徑)
mysql>source /home/abc/abc.sql;
方法二:
mysql -u使用者名稱 -p密碼 資料庫名 < 資料庫名.sql
#mysql -uabc_f -p abc < abc.sql
建議使用第二種方法匯入。 MySql匯入和備份
在dos的 mysql安裝目錄 bin 目錄下用下面命令 color red mysql c default character set utf8 u username p databasename h ipaddress sql color 其中username 為mysql使用者名稱,一般為ro...
linux 簡單的mysql備份和匯入
1.匯出整個資料庫 mysqldump u 使用者名稱 p 資料庫名 匯出的檔名 例 mysqldump u dbadmin p myblog home zhangy blog database bak myblog.sql 2.匯出乙個表 mysqldump u 使用者名稱 p 資料庫名 表名 匯...
mysql備份 匯入
mysql備份和匯入 以mysql執行在192.168.2.199 3306,使用者root 為例 安裝mysql會預設安裝mysqldump,手動安裝 yum y install mysql client 1備份所有庫 會備份所有庫,包括mysql自帶的庫,匯入到其他例項的時候可能有問題,不推薦使...