教你使用mysqldump & xtrabackup 備份數據庫的簡單方法

數據備份是數據庫的數據保護措施之一,數據備份可使用工具輕鬆實現,結合定時任務也能必定程度上保證咱們數據的安全。下面教你用mysqldump & xtrabackup 備份數據庫的簡陋方法

mysqldump的簡單用法html

#備份(導出)全部數據庫的數據和結構(注意:這種方式備份,還原時,無需先建立數據庫,可直接導入)
	mysqldump -u root -p 'password' --all-databases > all.sql

 	#備份指定數據庫(db1和db2)
	mysqldump -u root -p 'password' ---databases db1 db2 > db1-db2.sql

	#恢復(導入)全部庫
	mysql -u root -p 'password' < all.sql

	#導入某個庫(只導入db1這個數據庫,db2不導入)
	mysql -u root -p 'password' db1 < db1-db2.sql

xtrabackup工具(不支持mysql5.7)mysql

介紹,能對InnoDB引擎進行增量備份(備份是不加鎖),對MyISAM引擎全量備份(備份時會鎖寫)linux

第一:安裝xtrabackupsql

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

第二:備份數據庫數據庫

#指定mysql的配置文件,指定mysql的用戶,指定密碼,指定用於存放備份的路徑(注意:前提是my.cnf文件內指定了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數據庫(預備份--apply-log)安全

#建立完的備份以後的數據還不能立刻用於還原,須要回滾未提交事務,前滾提交事務,讓數據庫文件保持一致性
	innobackupex --defaults-file=/etc/my.cnf --user=root --password --apply-log /mnt/mysqlback/2018-05-15

	#成功後會輸出,成功後備份能夠被用來還原數據庫了

	#prepare的過程,實際上是讀取備份文件夾中的配置文件,而後innobackupex重作已提交事務,回滾未提交事務,以後數據就被寫到了備份的數據文件(innodb)中,並重建日誌文件
	#--user-memory 指定prepare階段可以使用的內存大小,默認爲10MB,內存多則快

第三:恢復數據庫app

注意,還原是先關閉服務,若是服務是啓動的,那麼就不能還原到datadir,而且datadir 必須是爲空的,由於 innobackupex --copy-back 不會覆蓋已存在的文件工具

#innobackupex 使用 --copy-back 來還原備份(recovery)
	innobackupex --defaults-file=/etc/my.cnf --user=root --password --copy-back /mnt/mysqlback/2018-05-15
	#innobackupex 會根據my.cnf的配置,將全部備份數據複製到my.cnf裏面指定的 datadir 路徑下
	#若是恢復成功,則有以下提示

第四:修改datadir目的的權限,啓動數據庫線程

#默認狀況下是經過root用戶恢復數據,因此mysql數據文件夾目錄是root權限,須要修改成數據庫程序的全部者權限
	chown -R mysql:mysql datadir

附:備份壓縮和流日誌

#使用流特性,須要指定--stream 選項,使用tar備份(推薦方法)
	innobackupex --defaults-file=/etc/my.cnf --user=root --password --stream=tar /mnt/mysqlback | gzip - > /mnt/mysqlback.tar.gz

	#可用參數,--parallel=4 加速備份,這個選項指定xtrabackup備份文件的線程數

	#解壓提取tar流文件,必須加 -i 參數,否則不可以使用
	tar -xizf /mnt/mysqlback.tar.gz

示例,備份mysql的boke數據庫,並恢復

1:對mysql的boke庫進行備份

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的輸出信息,寫入日誌文件,便於查閱覈對,備份是否成功
	1>/mnt/back_data/boke.tar.gz	#打包壓縮存儲到該文件中

2:此處能夠寫一個腳本備份(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:數據恢復

1:先中止數據庫
	2:解壓
	tar -izxvf /mnt/back_data/boke.tar.gz -C /mnt/back_data/db/	#沒有db,須要mkdir /mnt/back_data/db/ 建立哦
	3:恢復(確保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:賦權
	chown -R mysql:mysql /var/lib/mysql	#這個目錄是my.cnf 裏面指定的datadir路徑
	5:啓動數據庫

本文地址:https://www.linuxprobe.com/mysqldump-xtrabackup-linux.html

相關文章
相關標籤/搜索