mysql的備份-徹底備份

mysql的備份分爲:徹底備份,增量備份 mysql

記錄下徹底備份吧。 sql

創建backup.sh,內容以下 shell

date_str=`date +%Y%m%d`
cd /date2/backup
/usr/local/mysql/bin/mysqldump -h localhost -u root -ppassword --socket=/tmp/mysql.sock -R -E -e\
        --max-allowed-packet=1048076 --net-buffer-length=16384 database\
        | gzip > /data2/backup/db_$date_str.sql.gz
在shell下\換行
創建目錄
data2/backup
這個目錄用於存放備份文件
文件格式db_2012-10-11.sql.gz

上述shell含義:
/usr/local/mysql/bin/mysqldump           mysqldump的命令
-h localhost     --host=host_name,-h host_name
從給定主機的MySQL服務器轉儲數據。默認主機是localhost。
-u root -ppassword
 --password[=password],-p[password]
鏈接服務器時使用的密碼。若是你使用短選項形式(-p),不能在選項和密碼之間有一個空格。若是在命令行中,忽略了--password或-p選項後面的 密碼值,將提示你輸入一個。
--socket=/tmp/mysql.sock
  --socket=path,-S path
當鏈接localhost(爲默認主機)時使用的套接字文件。
-R
    --routines,-R
在轉儲的數據庫中轉儲存儲程序(函數和程序)。使用---routines產生的輸出包含CREATE PROCEDURE和CREATE FUNCTION語句以從新建立子程序。可是,這些語句不包括屬性,例如子程序定義者或建立和修改時間戳。這說明當重載子程序時,對它們進行建立時定義者應設置爲重載用戶,時間戳等於重載時間。

若是你須要建立的子程序使用原來的定義者和時間戳屬性,不使用--routines。相反,使用一個具備mysql數據庫相應權限的MySQL帳戶直接轉儲和重載mysql.proc表的內容。
-E
 --extended-insert,-e
使用包括幾個VALUES列表的多行INSERT語法。這樣使轉儲文件更小,重載文件時能夠加速插入。
 --max-allowed-packet=1048076
 max_allowed_packet
客戶端/服務器之間通訊的緩存區的最大大小。最大爲1GB。
 --net-buffer-length=16384
   net_buffer_length
客戶端/服務器之間通訊的緩存區的初始大小。當建立多行插入語句時(如同使用選項--extended-insert或--opt),mysqldump建立長度達net_buffer_length的行。若是增長該變量,還應確保在MySQL服務器中的net_buffer_length變量至少這麼大。
還可使用--set-variable=var_name=value或-O var_name=value語法設置變量。然而,如今不同意使用該語法。
   ---database,-B
轉儲幾個數據庫。一般狀況,mysqldump將命令行中的第1個名字參量看做數據庫名,後面的名看做表名。使用該選項,它將全部名字參量看做數據庫名。
CREATE DATABASE IF NOT EXISTS db_name和USE db_name語句包含在每一個新數據庫前的輸出中。
| gzip > /data2/backup/db_$date_str.sql.gz
將文件存儲至/data2/backup,並gzip

能夠將當天的備份文件傳輸至另外一臺ftp 數據庫

ftp -n<<!
open 192.168.1.5
user whua password
binary
hash
cd /data/back
lcd /data2/backup/db
prompt
mput db_$date_str.sql.gz
close
bye
!

刪除一個星期前備份數據 緩存

date_l_m=`date   -d   -7day   +%Y%m%d`
rm -f  /data2/backup/db/db_$date_l_m.sql.gz


能夠在天天晚上12點執行.bachup.sh 服務器


建議使用增量備份 socket

相關文章
相關標籤/搜索