博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
实时增量备份 、 XtraBackup 备份 、 MySQL 主从同步
阅读量:5820 次
发布时间:2019-06-18

本文共 4001 字,大约阅读时间需要 13 分钟。

day05 增量备份备份与增量恢复

一、启用binlog日志 实现时时增量备份
1.1 binlog日志介绍: 又被称为二进制日志 是mysql数据库服务日志文件的一种。记录连接服务器后,执行的除查询之外的sql命令。
mysql>
查看的 : show desc select
写的: insert update delete

1.2 启用binlog日志

#vim /etc/my.cnf
[mysqld]
server_id=id号 #1-255
log-bin
binlog_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-255
log-bin=/logdir/plj
binlog_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 mysqld
mysql> 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=11
log-bin【=目录名/文件名】
binlog_format="mixed"
:wq
#systemctl restart mysqld
3 查看日志文件内容
#mysqlbinlog binlog文件名

4 binlog文件是如何记录sql命令

时间点
pos

5 执行binlog文件里记录的sql命令恢复数据

#mysqlbinlog 选项 binlog文件名 | mysql -uroot -pabc123

6 手动创建日志文件

7 删除日志文件

+++++++++++++++++++++++++++++++++++++++
1 在12数据库服务器上启用binlog日志:要求如下
日志文件存储目录是 /logdir 文件名 master12
2 把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=300
4 使用binlog日志恢复删除的数据。

++++++++++++++++++++++++++++++++++++++++++

二、使用第3方软件percona提供的命令innobackupex做增量备份
2.1 安装软件包 percona
2.2 命令格式
#innobackupex <选项>
选项
--user
--password
--databases
--no-timestamp
--apply-log
--copy-back

支持事务 和 事务回滚

ls /var/lib/mysql
事务日志文件
ibdata

LSN 日志序列号

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 -pabc123
mysql>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

你可能感兴趣的文章
Ubuntu设置python3为默认版本
查看>>
日期Calendar/Date的用法
查看>>
JsonCpp 的使用
查看>>
问题账户需求分析
查看>>
JavaSE-代码块
查看>>
爬取所有校园新闻
查看>>
32、SpringBoot-整合Dubbo
查看>>
python面向对象基础
查看>>
HDU 2044 一只小蜜蜂(递归)
查看>>
docker 下 安装rancher 笔记
查看>>
spring两大核心对象IOC和AOP(新手理解)
查看>>
数据分析相关
查看>>
Python LDAP中的时间戳转换为Linux下时间
查看>>
微信小程序蓝牙连接小票打印机
查看>>
环境错误2
查看>>
C++_了解虚函数的概念
查看>>
全新jmeter视频已经上架
查看>>
Windows 8下如何删除无线配置文件
查看>>
解决Windows 7中文件关联和打开方式
查看>>
oracle系列(五)高级DBA必知的Oracle的备份与恢复(全录收集)
查看>>