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

字號:

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