Linux數(shù)據(jù)庫:計劃備份mysql數(shù)據(jù)庫

字號:

1:mysql是我們使用最多的數(shù)據(jù)庫,如果在日常中正確的對mysql數(shù)據(jù)進行備份,下面我們就來做這事,通過腳本來實現(xiàn)
    ##################################################
    #!/bin/bash
    #backup My databases
    #by luox at 2008-10-24
    source /home/cacti/.bash_profile
    PATH=/home/cacti/local/mysql5.0.22/bin:/home/cacti/local/php5.2.6/bin:/home/cacti/local/apache2.2.9/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    #date +%Y-%m-%d
    #backup bbs database
    mysqldump -S /home/cacti/tmp/mysql.sock -u bbsuser -p’pDdWShDzwXSLzSCB’ --default-character-set=gbk --opt --extended-insert=false --hex-blob bbsuser >/home/cacti/backup/bbsuser_bak_`date +%Y-%m-%d`.sql
    #compress the bak files
    bzip2 /home/cacti/backup/bbsuser_bak_`date +%Y-%m-%d`.sql
    #remove 4 week old bak files
    find /home/cacti/backup/ -name ’*.bz2’ -ctime +28 -exec rm {} \;
    通過上面的腳本就可以實現(xiàn)備份數(shù)據(jù),簡單介紹一下mysqldump這個命令的使用(上文中粗體bbsuser指的是數(shù)據(jù)庫名)
    -S 指定數(shù)據(jù)庫使用的sock文件,一個系統(tǒng)中可以運行多個不同端口的mysql,如果要連接這個數(shù)據(jù)庫就需要用到這個參數(shù)來指定sock文件
    -u 指定用戶,在這里,如果我們備份bbsuser數(shù)據(jù)庫,只需要用到bbsuser這個用戶就可以了。當然root用戶也可以,只不過我們寫在腳本里當然用權(quán)限小點更佳
    -p 指定密碼,使用’’將密碼括起來
    --default-character-set= 用于設置數(shù)據(jù)庫的格式,這和數(shù)據(jù)庫使用默認的語言有關,可以連接到數(shù)據(jù)庫里使用show variables;來查看當前,一般有utf8 gbk
    --opt 實施備份可能是最常用的方法,因為備份速度上的優(yōu)勢
    --extended-insert=false 是為了導出為多行Insert,不然可能因為Insert語句過長出錯
    --hex-blob 使用十六進制格式導出二進制字符串字段
    -A, --all-databases Dump all the databases. This will be same as --databases with all databases selected. 可以用于備份所有數(shù)據(jù)庫
    PS:使用date +%Y-%m-%d 可以顯示出當天的日期,我們在備份時也加個這參數(shù)可以起很好的標識備份文件日期作用。如果在mysqldump中引用date需要使用`date +%Y-%m-%d`
    2:bzip2 可以將文件壓縮成bz2的文件,并且刪除掉原來的,
    3:通過find來查找,然后根據(jù)時間,如果多于28天(4周)就進行刪除。
    4:接下來還可以將這個腳本執(zhí)行放到Crontab中,讓腳本一天運行一次,就可以對數(shù)據(jù)進行很好的備份了。
    #backup my database
    5 0 * * * /home/cacti/backup/backupmysql.sh >/dev/null 2>&1
    3:數(shù)據(jù)庫的導入:
    /home/cacti/local/mysql5.0.22/bin/mysql -S /home/cacti/tmp/mysql.sock -ubbsuser -p’pDdWShDzwXSLzSCB’ bbsuser