本文共 4001 字,大约阅读时间需要 13 分钟。
day05 增量备份备份与增量恢复
一、启用binlog日志 实现时时增量备份1.1 binlog日志介绍: 又被称为二进制日志 是mysql数据库服务日志文件的一种。记录连接服务器后,执行的除查询之外的sql命令。mysql>查看的 : show desc select 写的: insert update delete1.2 启用binlog日志
#vim /etc/my.cnf[mysqld]server_id=id号 #1-255log-binbinlog_format="mixed" :wq#systemctl restart mysqld默认存储路径 /var/lib/mysql/默认文件名 主机名-bin.000001 >500M主机名-bin.000002 >500M主机名-bin.000003日志索引文件: 主机名-bin.index 记录当前已有的binlog日志文件名。
++++++++++++++++++++++++++++++++ 1.2 查看binlog日志文件内容#mysqlbinlog binlog日志文件名+++++++++++++++++++++++++++启用日志是指定日志文件的存储目录和名称#mkdir /logdir#chown mysql /logdir#vim /etc/my.cnf
[mysqld]server_id=id号 #1-255log-bin=/logdir/pljbinlog_format="mixed" #设置日志文件的记录格式:wq#systemctl restart mysqld#ls /logdir/plj.*++++++++++++++++++++++++++++++1.3 binlog日志文件记录sql命令的方式:时间点pos点++++++++++++++++++++++++++++++执行binlog里记录的sql命令恢复数据?#mysqlbinlog 选项 binlog日志文件名 | mysql -uroot -pabc123时间点 --start-datetime="yyyy-mm-dd hh:mm:ss"
--stop-datetime="yyyy-mm-dd hh:mm:ss"pos点 --start-position=数字
--stop-position=数字#mysqlbinlog --start-position=296 --stop-position=1073 /logdir/plj.000001 | mysql -uroot -pabc123
++++++++++++++++++++++++++++++++++++++++收到生成新的binlog日志文件(默认>500M后自动创建新的)#systemctl restart mysqldmysql> flush logs;#mysql -uroot -pabc123 -e "flush logs"#mysqldump -uroot -pabc123 --flush-logs userdb > userdb.sql删除日志文件
#rm -rf 日志文件名;mysql> reset master;mysql> purge master log to "日志文件名";+++++++++++++++++++++++++++++++++++++++++binlog日志1 binlog日志介绍2 启用binlog#vim /etc/my.cnf[mysqld]server_id=11log-bin【=目录名/文件名】binlog_format="mixed":wq#systemctl restart mysqld3 查看日志文件内容 #mysqlbinlog binlog文件名4 binlog文件是如何记录sql命令
时间点pos5 执行binlog文件里记录的sql命令恢复数据
#mysqlbinlog 选项 binlog文件名 | mysql -uroot -pabc1236 手动创建日志文件
7 删除日志文件
+++++++++++++++++++++++++++++++++++++++1 在12数据库服务器上启用binlog日志:要求如下日志文件存储目录是 /logdir 文件名 master122 把gamedb库的初始数据保存在日志文件编号1里。create database gamedb;create table gamedb.t1(id int);insert into gamedb.t1 values(100);insert into gamedb.t1 values(200);insert into gamedb.t1 values(300);3 其他数据保存在日志文件编号1之后的文件里insert into gamedb.t1 values(400);insert into gamedb.t1 values(500);insert into gamedb.t1 values(600);insert into gamedb.t1 values(700);delete from gamedb.t1 where id=200 or id=3004 使用binlog日志恢复删除的数据。++++++++++++++++++++++++++++++++++++++++++
二、使用第3方软件percona提供的命令innobackupex做增量备份2.1 安装软件包 percona2.2 命令格式#innobackupex <选项>选项--user--password--databases--no-timestamp--apply-log --copy-back支持事务 和 事务回滚
ls /var/lib/mysql 事务日志文件ibdataLSN 日志序列号
ib_logfile0 sql命令ib_logfile1完全备份
#innobackupex --user root --password abc123 --databases="系统库列表 存储数据库" 备份目录名 --no-timestamp#rm -rf /var/lib/mysql
#mkdir /var/lib/mysql完全恢复数据
#innobackupex --user root --password abc123 --databases="系统库列表 存储数据库" --apply-log 备份目录名#innobackupex --user root --password abc123 --databases="系统库列表 存储数据库" --copy-back 备份目录名
#ls /var/lib/mysql/#chown -R mysql:mysql /var/lib/mysql#systemctl stop mysqld#systemctl start mysqld#mysql -uroot -pabc123mysql>show databases;+++++++++++++++++++++++++++++++++++--incremental 目录名--incremental-basedir=目录名增量备份(必须先有一次备份,通常会先做一次完全备份)
#innobackupex --user root --password abc123 --databases="系统库列表 存储数据库" --incremental 目录名 --incremental-basedir=目录名 --no-timestamp+++++++++++++++++++++++++++++++++
--incremental-dir=目录名--redo-only#rm -rf /var/lib/mysql#mkdir /var/lib/mysql增量恢复1恢复日志文件#innobackupex --user root --password abc123 --databases="系统库列表 存储数据库" --apply-log --redo-only /allbak#innobackupex --user root --password abc123 --databases="系统库列表 存储数据库" --apply-log --redo-only /allbak --incremental-dir=目录
#innobackupex --user root --password abc123 --databases="系统库列表 存储数据库" --apply-log --redo-log /allbak --incremental-dir=目录
xtraback_checkpositions lsn
2恢复数据
#innobackupex --user root --password abc123 --databases="系统库列表 存储数据库" --copy-back 完全备份目录名#chown -R mysql:mysql /var/lib/mysql
3重启服务
#systemctl stop mysqld#systemctl start mysqld转载于:https://blog.51cto.com/20214843/2056247