您好,登錄后才能下訂單哦!
數據庫備份
1 冷備(cp)
2 LVM快照備份
lvcreate -s -n rhel6node1 -L 2G /dev/vg_kvm/rhel6base
3 熱備
mysqldump -hserip -u用戶名 -p密碼 數據庫名 > 目錄名/xxx.sql
數據庫名的表示方式
--all-databases 備份服務器上的所有數據
數據庫名 備份一個庫的所有數據
數據庫名 表名 備份一個表的所有數據
-B 數據庫名1 數據庫名2 備份幾個庫的所有數據
完整恢復
mysql -hlocalhost -uroot -p123 [數據庫名] < xxx.sql
4 增量備份
1 binlog日志加腳本實現增量備份
1 使用mysql自帶binlog日志功能實現對數據的增量備份
2 安裝第3方軟件提供增量備份工具對數據做增量備份
------------------------------------------------------------------
使用binlog日志增量備份/增量恢復
binlog日志的使用
mysql服務有4種日志文件:錯誤日志、查詢日志、慢查詢日志
、binlog日志
binlog日志 (二進制日志)
記錄客戶端連接自己之后,執行的除查詢之外的sql命令。
默認沒開啟binlog日志
service mysql stop
vim /etc/my.cnf
[mysqld]
Log-bin=/logdir/plj
:wq
mkdir /logdir
chown mysql /logdir
service mysql start
cd /var/lib/mysql/
www-bin.000001 binlog日志文件
500M+
www-bin.000002
www-bin.index 日志的索引文件
查看binlog日志文件內容
mysqlbinlog binlog日志文件名
手動生成新binlog日志文件方式?
mysql> flush logs;
mysql -hlocalhost -uroot -p123 -e "flush logs"
service mysql restart
binlog記錄SQL命令的方式?
1 字符偏移量
2 時間點
mysqlbinlog 【選項】 binlog日志文件名
時間點
--start-datetime="2015-12-16 14:20:30" 自己去庫里找時間
--stop-datetime="2015-12-16 17:20:30" 自己去庫里找時間
字符偏移量
--start-position=數字 自己去庫里找偏移量
--stop-position=數字 自己去庫里找偏移量
mysqlbinlog --start-position=385 --stop-position=1134 plj.000010 | mysql -hlocalhost -uroot -p123 【數據庫名】
vim /shell/newlogfilebak.sh
#!/bin/bash
if [ ! -e /logbak ];then
mkdir /logbak
fi
mysql -hlocalhost -uroot -p123 -e "flush logs" &> /dev/null
cd /logdir
for file in `sed '$d' plj.index`
do
name=`echo $file | awk -F "/" '{print $3}'`
if [ ! -e /logbak/$name ];then
cp $name /logbak/
fi
done
:wq
00 18 * * 1 /shell/bakadb.sh &> /dev/null
00 19 * * 2-7 /shell/newfillogbak.sh
2 三方插件xtrabackup增量備份
yum -y install perl-Time-HiRes perl-DBD-MySQL
rpm -ivh percona-xtrabackup-2.1.6-702.rhel6.x86_64.rpm
增量備份/增量恢復命令 xtrabackup_56
備份過程中不鎖庫表
備份時只備份表記錄,不備份表結構。
使用xtrabackup_56增量備份時,必須有一次完整備份,這樣再備份時,才能知道哪些數據是新產生的。
xtrabackup:C程序,支持InnoDB/XtraDB
xtrabackup_56 <選項>
選項
--backup 備份數據
--prepare 準備恢復數據
--target-dir=目錄名 備份目錄
--datadir=數據庫目錄 備份的源文件
--incremental-basedir=目錄名 增量備份時,指定上一次備份文件存儲的目錄
--incremental-dir=目錄名 準備恢復數據時,指定使用那個備份目錄下的數據做恢復
1001 5
xtrabackup_56 --backup --datadir=/var/lib/mysql --target-dir=/onedir
2002 7
xtrabackup_56 --backup --datadir=/var/lib/mysql --target-dir=/new1 --incremental-basedir=/onedir
3003 10
xtrabackup_56 --backup --datadir=/var/lib/mysql --target-dir=/new2 --incremental-basedir=/new1
mysql > delete from testdb.a;
drop table testdb.a;
增量恢復
1 、準備恢復數據
xtrabackup_56 --prepare --datadir=/var/lib/mysql --target-dir=/onedir
xtrabackup_56 --prepare --datadir=/var/lib/mysql --target-dir=/onedir --incremental-dir=/new1
xtrabackup_56 --prepare --datadir=/var/lib/mysql --target-dir=/onedir --incremental-dir=/new2
2、被備份文件拷貝回數據庫目錄下對應的位置
cp /onedir/testdb/a.ibd /var/lib/mysql/testdb/
3、重啟數據庫服務器 service mysql restart
xtrabackup工作過程
lsn 日志序列號
/var/lib/mysql/
ibdata1
ib_logfile0
ib_logfile1
ibdata1
ibdata1.delta
ibdata1.meta
xtrabackup_checkpoints
xtrabackup_logfile
a.ibd
a.ibd.delta a.ibd.meta
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。