数据库备份
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
本文出自 “13262050” 博客,请务必保留此出处http://13272050.blog.51cto.com/13262050/1962624
原文:http://13272050.blog.51cto.com/13262050/1962624