新聞中心
數(shù)據(jù)備份是數(shù)據(jù)庫的數(shù)據(jù)保護(hù)措施之一,數(shù)據(jù)備份可以使用工具輕松實(shí)現(xiàn),結(jié)合定時(shí)任務(wù)也能一定程度上保證我們數(shù)據(jù)的安全。下面教你用mysqldump & xtrabackup 備份數(shù)據(jù)庫的簡(jiǎn)陋方法

網(wǎng)站前端頁面設(shè)計(jì)會(huì)用DIV+CSS架構(gòu),布局出來的網(wǎng)站外觀簡(jiǎn)潔大氣。HTML靜態(tài),HTML5建站+CSS3網(wǎng)站,自適應(yīng)電腦、手機(jī)、平板,符合用戶體驗(yàn)的習(xí)慣,更容易與用戶產(chǎn)生互動(dòng)。專業(yè)網(wǎng)絡(luò)公司的服務(wù)理念是“高性價(jià)比建站,讓企業(yè)網(wǎng)站具備營銷價(jià)值,促進(jìn)長期合作共贏模式”。
mysqldump的簡(jiǎn)單用法
#備份(導(dǎo)出)所有數(shù)據(jù)庫的數(shù)據(jù)和結(jié)構(gòu)(注意:這種方式備份,還原時(shí),無需先創(chuàng)建數(shù)據(jù)庫,可直接導(dǎo)入)
mysqldump -u root -p 'password' --all-databases > all.sql
#備份指定數(shù)據(jù)庫(db1和db2)
mysqldump -u root -p 'password' ---databases db1 db2 > db1-db2.sql
#恢復(fù)(導(dǎo)入)所有庫
mysql -u root -p 'password' #導(dǎo)入某個(gè)庫(只導(dǎo)入db1這個(gè)數(shù)據(jù)庫,db2不導(dǎo)入)
mysql -u root -p 'password' db1
xtrabackup工具(不支持mysql5.7)
介紹,能對(duì)InnoDB引擎進(jìn)行增量備份(備份是不加鎖),對(duì)MyISAM引擎全量備份(備份時(shí)會(huì)鎖寫)
第一:安裝xtrabackup
wget https://www.percona.com/redir/downloads/percona-release/redhat/percona-release-0.1-4.noarch.rpm
rpm -ivh percona-release-0.1-4.noarch.rpm
yum clean all
yum makecache
yum install percona-xtrabackup.x86_64 -y
第二:備份數(shù)據(jù)庫
#指定mysql的配置文件,指定mysql的用戶,指定密碼,指定用于存放備份的路徑(注意:前提是my.cnf文件內(nèi)指定了data的存放目錄)
#注意:innobackupex 不支持mysql 5.1的innodb備份
[root@iptables ~]# cat /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
innobackupex --defaults-file=/etc/my.cnf --user=root --password /mnt/mysqlback
第二:prepare數(shù)據(jù)庫(預(yù)備份–apply-log)
#創(chuàng)建完的備份之后的數(shù)據(jù)還不能馬上用于還原,需要回滾未提交事務(wù),前滾提交事務(wù),讓數(shù)據(jù)庫文件保持一致性
innobackupex --defaults-file=/etc/my.cnf --user=root --password --apply-log /mnt/mysqlback/2018-05-15
#成功后會(huì)輸出,成功后備份可以被用來還原數(shù)據(jù)庫了
#prepare的過程,其實(shí)是讀取備份文件夾中的配置文件,然后innobackupex重做已提交事務(wù),回滾未提交事務(wù),之后數(shù)據(jù)就被寫到了備份的數(shù)據(jù)文件(innodb)中,并重建日志文件
#--user-memory 指定prepare階段可使用的內(nèi)存大小,默認(rèn)為10MB,內(nèi)存多則快
第三:恢復(fù)數(shù)據(jù)庫
注意,還原是先關(guān)閉服務(wù),如果服務(wù)是啟動(dòng)的,那么就不能還原到datadir,并且datadir 必須是為空的,因?yàn)椤nnobackupex –copy-back 不會(huì)覆蓋已存在的文件
#innobackupex 使用 --copy-back 來還原備份(recovery)
innobackupex --defaults-file=/etc/my.cnf --user=root --password --copy-back /mnt/mysqlback/2018-05-15
#innobackupex 會(huì)根據(jù)my.cnf的配置,將所有備份數(shù)據(jù)復(fù)制到my.cnf里面指定的 datadir 路徑下
#如果恢復(fù)成功,則有如下提示
第四:修改datadir目的的權(quán)限,啟動(dòng)數(shù)據(jù)庫
#默認(rèn)情況下是通過root用戶恢復(fù)數(shù)據(jù),所以mysql數(shù)據(jù)文件夾目錄是root權(quán)限,需要修改為數(shù)據(jù)庫程序的所有者權(quán)限
chown -R mysql:mysql datadir
附:備份壓縮和流
#使用流特性,需要指定--stream 選項(xiàng),使用tar備份(推薦方法)
innobackupex --defaults-file=/etc/my.cnf --user=root --password --stream=tar /mnt/mysqlback | gzip - > /mnt/mysqlback.tar.gz
#可用參數(shù),--parallel=4 加速備份,這個(gè)選項(xiàng)指定xtrabackup備份文件的線程數(shù)
#解壓提取tar流文件,必須加 -i 參數(shù),不然不可使用
tar -xizf /mnt/mysqlback.tar.gz
示例,備份mysql的boke數(shù)據(jù)庫,并恢復(fù)
1:對(duì)mysql的boke庫進(jìn)行備份
innobackupex --defaults-file=/etc/my.cnf --user=root --password=111222 --database=boke --stream=tar /mnt/ 2>/mnt/back_data/boke.log | gizp 1>/mnt/back_data/boke.tar.gz
#說明
2>/mnt/back_data/boke.log #innobackupex的輸出信息,寫入日志文件,便于查閱核對(duì),備份是否成功
1>/mnt/back_data/boke.tar.gz #打包壓縮存儲(chǔ)到該文件中
2:此處可以寫一個(gè)腳本備份(back.sh)
#!/bin/sh
echo "開始備份----"`date`
LOG=boke_`date +%F-%H%M`.log
STR=boke_`date +%F-%H%M`.tar.gz
innobackupex --defaults-file=/etc/my.cnf --user=root --password=111222 --database=boke --stream=tar /mnt/back_data/ 2>/mnt/back_data/$LOG | gzip 1>/mnt/back_data/$STR
echo "備份完成---"`date`
3:數(shù)據(jù)恢復(fù)
1:先停止數(shù)據(jù)庫
2:解壓
tar -izxvf /mnt/back_data/boke.tar.gz -C /mnt/back_data/db/ #沒有db,需要mkdir /mnt/back_data/db/ 創(chuàng)建哦
3:恢復(fù)(確保datadir為空)
innobackupex --defaults-file=/etc/my.cnf --user=root --password=111222 --apply-log /mnt/back_data/db/
innobackupex --defaults-file=/etc/my.cnf --user=root --password=111222 --copy-back /mnt/back_data/db/
4:賦權(quán)
chown -R mysql:mysql /var/lib/mysql #這個(gè)目錄是my.cnf 里面指定的datadir路徑
5:?jiǎn)?dòng)數(shù)據(jù)庫
新聞標(biāo)題:使用mysqldump&xtrabackup對(duì)數(shù)據(jù)庫進(jìn)行備份
地址分享:http://www.dlmjj.cn/article/cogcecg.html


咨詢
建站咨詢
