MYSQL增量备份与恢复
vim /etc/my.cnf
在[mysqld]下添加
max_binlog_size = 1024000 //二进制日志最大1M
要进行mysql的增量备份,首先要开启二进制日志功能
方法一:
在/etc/my.cnf文件中的[mysqld]下,添加
log-bin = mysql-bin
方法二:
使用mysqld --log-bin = 文件存放路径/文件前缀,然后重新启动mysql服务。
mysql增量恢复的方法:
一般恢复:
mysqlbinlog [--no-defaults] 增量备份文件 | mysql -uroot -p密码
基于时间点的恢复:
从日志开头截止到某个时间点的恢复:
mysqlbinlog [--no-defaults] --stop-datetime='年-月-日 小时:分钟:秒' 二进制日志 | mysql -uroot -p密码
从某个时间点到日志结尾的恢复:
mysqlbinlog [--no-defaults] --start-datetime='年-月-日 小时:分钟:秒' 二进制日志 | mysql -uroot -p密码
从某个时间点到某个时间的恢复:
mysqlbinlog [--no-defaults] --start-datetime='年-月-日 小时:分钟:秒' --stop-datetime='年-月-日 小时:分钟:秒 二进制日志 | mysql -uroot -p密码
基于位置的恢复:
mysqlbinlog --stop-position='操作id' 二进制日志 | mysql -uroot -p密码
mysqlbinlog --start-position='操作id' 二进制日志 | mysql -uroot -p密码
[root@localhost ~]# vim /opt/mysql_bak_zengbei.sh //shell脚本增量备份
#!/bin/bash
#MYSQL数据库增量备份脚本。
#设置登录变量
MY_USER="root"
MY_PASS="111111"
MY_HOST="localhost"
MY_CONN="-u$MY_USER -p$MY_PASS -h$MY_HOST"
#定义备份路径、工具、二进制日志前缀、二进制日志存放路径
BF_TIME="$(date +%Y%m%d)"
BF_DIR="/mysql_bak/zengbei/$BF_TIME"
CMD="/usr/bin/mysqladmin"
QZ="mysql-bin"
LOG_DIR="/var/lib/mysql"
#拷贝二进制日志
[ -d $BF_DIR ] || mkdir-p $BF_DIR
$CMD $MY_CONN flush-logs
/bin/cp -p $(ls $LOG_DIR/$QZ.* | awk -v RS="" '{print $(NF-2)}') $BF_DIR
案例:
[root@localhost ~]# mysql -uroot -p111111
创建数据库
MariaDB [(none)]> create database client;
使用数据库
MariaDB [(none)]> use client
创建数据表
MariaDB [auth]> create table user_info (身份证 int(20),姓名 char(20),性别 char(2),用户ID号 int(110),资费 int(10));
插入数据到数据表
MariaDB [auth]> insert into user_info values ('000000001','孙空武','男','011','100');
MariaDB [auth]> insert into user_info values ('000000002','蓝凌','女','012','98');
MariaDB [auth]> insert into user_info values ('000000003','姜文','女','013','12');
MariaDB [auth]> insert into user_info values ('000000004','关园','男','014','38');
MariaDB [auth]> insert into user_info values ('000000005','罗中昆','男','015','39');
先进行一次完全备份
[root@localhost ~]# mkdir /mysql_bak
[root@localhost ~]# mysqldump -uroot -p111111 client user_info > /mysql_bak/client_user_info-$(date +%F).sql
[root@localhost ~]# mysqldump -uroot -p111111 client > /mysql_bak/client-$(date +%F).sql
先进行一次日志回滚(生成新的日志)
[root@localhost ~]# ls /var/lib/mysql/
aria_log.00000001 client ib_logfile1 mysql.sock
aria_log_control ibdata1 mysql performance_schema
auth ib_logfile0 mysql-bin.000001 mysql-bin.index test
[root@localhost ~]# cd /var/lib/mysql
[root@localhost mysql]# mysqladmin -uroot -p111111 flush-logs
[root@localhost mysql]# ls
aria_log.00000001 client ib_logfile1 mysql-bin.000002 performance_schema
aria_log_control ibdata1 mysql mysql-bin.index test
auth ib_logfile0 mysql-bin.000001 mysql.sock
继续录入新的数据
[root@localhost ~]# mysql -uroot -p111111
MariaDB [(none)]> use client
MariaDB [client]> insert into user_info values('6','蓝精灵','男','16','78');
MariaDB [client]> insert into user_info values('7','红头发','女','17','23');
MariaDB [client]>select * from user_info;
+-----------+-----------+--------+-------------+--------+
| 身份证 | 姓名 | 性别 | 用户ID号 | 资费 |
+-----------+-----------+--------+-------------+--------+
| 1 | 孙空武 | 男 | 11 | 100 |
| 2 | 蓝凌 | 女 | 12 | 98 |
| 3 | 姜文 | 女 | 13 | 12 |
| 4 | 关园 | 男 | 14 | 38 |
| 5 | 罗中昆 | 男 | 15 | 39 |
| 6 | 蓝精灵 | 男 | 16 | 78 |
| 7 | 红头发 | 女 | 17 | 23 |
+-----------+-----------+--------+-------------+--------+
ctrl + D退出
进行增量备份
[root@localhost mysql]# mysqladmin -uroot -p111111 flush-logs
[root@localhost mysql]# ls
aria_log.00000001 client ib_logfile1 mysql-bin.000002 mysql.sock
aria_log_control ibdata1 mysql mysql-bin.000003 performance_schema
auth ib_logfile0 mysql-bin.000001 mysql-bin.index test
[root@localhost mysql]# mysqlbinlog --no-defaults mysql-bin.000002
内容省略。。。。。。
[root@localhost mysql]# cp -p mysql-bin.000002 /mysql_bak/
模拟误操作删除user_info表
[root@localhost mysql]# mysql -uroot -p111111 -e'drop table client.user_info;'
[root@localhost mysql]# mysql -uroot -p111111 -e'select * from client.user_info;'
ERROR 1146 (42S02) at line 1: Table 'client.user_info' doesn't exist
恢复完全备份
[root@localhost mysql]# mysql -uroot -p111111 client < /mysql_bak/client-20191014-1414.sql
[root@localhost mysql]# mysql -uroot -p111111 -e'select * from client.user_info;'
+-----------+-----------+--------+-------------+--------+
| 身份证 | 姓名 | 性别 | 用户ID号 | 资费 |
+-----------+-----------+--------+-------------+--------+
| 1 | 孙空武 | 男 | 11 | 100 |
| 2 | 蓝凌 | 女 | 12 | 98 |
| 3 | 姜文 | 女 | 13 | 12 |
| 4 | 关园 | 男 | 14 | 38 |
| 5 | 罗中昆 | 男 | 15 | 39 |
+-----------+-----------+--------+-------------+--------+
恢复增量备份
[root@localhost mysql]# mysqlbinlog --no-defaults /mysql_bak/mysql-bin.000002 | mysql -uroot -p111111
[root@localhost mysql]# mysql -uroot -p111111 -e'select * from client.user_info;'
+-----------+-----------+--------+-------------+--------+
| 身份证 | 姓名 | 性别 | 用户ID号 | 资费 |
+-----------+-----------+--------+-------------+--------+
| 1 | 孙空武 | 男 | 11 | 100 |
| 2 | 蓝凌 | 女 | 12 | 98 |
| 3 | 姜文 | 女 | 13 | 12 |
| 4 | 关园 | 男 | 14 | 38 |
| 5 | 罗中昆 | 男 | 15 | 39 |
| 6 | 蓝精灵 | 男 | 16 | 78 |
| 7 | 红头发 | 女 | 17 | 23 |
+-----------+-----------+--------+-------------+--------+
[root@localhost ~]# mysql -uroot -p111111 -e'drop table client.user_info;'
[root@localhost ~]# mysql -uroot -p111111 -e'select * from client.user_info;'
ERROR 1146 (42S02) at line 1: Table 'client.user_info' doesn't exist
[root@localhost ~]# mysql -uroot -p111111 client < /mysql_bak/client-20191014-1414.sql
[root@localhost ~]# mysqlbinlog --no-defaults /mysql_bak/mysql-bin.000002
基于时间点的恢复:
--stop-datetime
仅恢复到2019-10-14 14:22:53之前的数据,不再恢复“红头发”的信息
[root@localhost ~]# mysqlbinlog --no-defaults --stop-datetime='2019-10-14 14:22:53' /mysql_bak/mysql-bin.000002 | mysql -uroot -p111111
[root@localhost ~]# mysql -uroot -p111111 -e'select * from client.user_info'
+-----------+-----------+--------+-------------+--------+
| 身份证 | 姓名 | 性别 | 用户ID号 | 资费 |
+-----------+-----------+--------+-------------+--------+
| 1 | 孙空武 | 男 | 11 | 100 |
| 2 | 蓝凌 | 女 | 12 | 98 |
| 3 | 姜文 | 女 | 13 | 12 |
| 4 | 关园 | 男 | 14 | 38 |
| 5 | 罗中昆 | 男 | 15 | 39 |
| 6 | 蓝精灵 | 男 | 16 | 78 |
+-----------+-----------+--------+-------------+--------+
仅恢复“红头发”,跳过“蓝精灵”的信息
--start-datetime
[root@localhost ~]# mysql -uroot -p111111 -e'drop table client.user_info;'
[root@localhost ~]# mysql -uroot -p111111 -e'select * from client.user_info;'
ERROR 1146 (42S02) at line 1: Table 'client.user_info' doesn't exist
[root@localhost ~]# mysql -uroot -p111111 client < /mysql_bak/client-20191014-1414.sql
[root@localhost ~]# mysqlbinlog --no-defaults --start-datetime='2019-10-14 14:22:53' /mysql_bak/mysql-bin.000002 | mysql -uroot -p111111
[root@localhost ~]# mysql -uroot -p111111 -e'select * from client.user_info;'
+-----------+-----------+--------+-------------+--------+
| 身份证 | 姓名 | 性别 | 用户ID号 | 资费 |
+-----------+-----------+--------+-------------+--------+
| 1 | 孙空武 | 男 | 11 | 100 |
| 2 | 蓝凌 | 女 | 12 | 98 |
| 3 | 姜文 | 女 | 13 | 12 |
| 4 | 关园 | 男 | 14 | 38 |
| 5 | 罗中昆 | 男 | 15 | 39 |
| 7 | 红头发 | 女 | 17 | 23 |
+-----------+-----------+--------+-------------+--------+
基于位置的恢复:
--stop-possion
[root@localhost ~]# mysql -uroot -p111111 -e'drop table client.user_info;'
[root@localhost ~]# mysql -uroot -p111111 -e'select * from client.user_info;'
ERROR 1146 (42S02) at line 1: Table 'client.user_info' doesn't exist
[root@localhost ~]# mysql -uroot -p111111 client < /mysql_bak/client-20191014-1414.sql
[root@localhost ~]# mysqlbinlog --no-defaults --stop-position='468' /mysql_bak/mysql-bin.000002 | mysql -uroot -p111111
[root@localhost ~]# mysql -uroot -p111111 -e'select * from client.user_info'
+-----------+-----------+--------+-------------+--------+
| 身份证 | 姓名 | 性别 | 用户ID号 | 资费 |
+-----------+-----------+--------+-------------+--------+
| 1 | 孙空武 | 男 | 11 | 100 |
| 2 | 蓝凌 | 女 | 12 | 98 |
| 3 | 姜文 | 女 | 13 | 12 |
| 4 | 关园 | 男 | 14 | 38 |
| 5 | 罗中昆 | 男 | 15 | 39 |
| 6 | 蓝精灵 | 男 | 16 | 78 |
+-----------+-----------+--------+-------------+--------+
--start-possion
[root@localhost ~]# mysql -uroot -p111111 -e'drop table client.user_info;'
[root@localhost ~]# mysql -uroot -p111111 -e'select * from client.user_info;'
ERROR 1146 (42S02) at line 1: Table 'client.user_info' doesn't exist
[root@localhost ~]# mysql -uroot -p111111 client < /mysql_bak/client-20191014-1414.sql
[root@localhost ~]# mysqlbinlog --no-defaults --start-position='538' /mysql_bak/mysql-bin.000002 | mysql -uroot -p111111
[root@localhost ~]# mysql -uroot -p111111 -e'select * from client.user_info'
+-----------+-----------+--------+-------------+--------+
| 身份证 | 姓名 | 性别 | 用户ID号 | 资费 |
+-----------+-----------+--------+-------------+--------+
| 1 | 孙空武 | 男 | 11 | 100 |
| 2 | 蓝凌 | 女 | 12 | 98 |
| 3 | 姜文 | 女 | 13 | 12 |
| 4 | 关园 | 男 | 14 | 38 |
| 5 | 罗中昆 | 男 | 15 | 39 |
| 7 | 红头发 | 女 | 17 | 23 |
+-----------+-----------+--------+-------------+--------+
MYSQL增量备份与恢复的更多相关文章
- MySQL增量备份与恢复实例【转】
小量的数据库可以每天进行完整备份,因为这也用不了多少时间,但当数据库很大时,就不太可能每天进行一次完整备份了,这时候就可以使用增量备份.增量备份的原理就是使用了mysql的binlog日志.本次操作的 ...
- MySQL增量备份与恢复实例
小量的数据库可以每天进行完整备份,因为这也用不了多少时间,但当数据库很大时,就不太可能每天进行一次完整备份了,这时候就可以使用增量备份.增量备份的原理就是使用了mysql的binlog日志. 本次操作 ...
- 七、linux-mysql下mysql增量备份与恢复
1.备份的意义 运维工作:保护公司的数据 . 网站7*24小时服务 但相当来说,数据更加重要,而数据最核心的就是数据库数据,所以数据库的备份和恢复就显得十分重要. 2.备份的几个参数 mys ...
- MySQL 完整和增量备份与恢复
MySQL 完全备份与恢复 1.数据备份的重要性 在企业中数据的价值至关重要,数据保障了企业的业务的运行,因此数据的安全性及可靠性是运维的重中之重,任何数据的丢失都有可能会对企业产生严重的后果.造成数 ...
- Percona XtraBackup 实现全备&增量备份与恢复【转】
percona-xtrabackup主要是有两个工具,其中一个是xtrabackup,一个是innobackupex,后者是前者封装后的一个脚本.在针对MySQL的物理备份工具中,大概是最流行也是最强 ...
- MYSQL的备份与恢复--逻辑备份mysqldump
目录 0.备份与恢复概述 1.逻辑备份-完整备份与恢复 2.逻辑备份-增量备份与恢复 (1)环境准备 (2)恢复全量数据 (3)恢复增量备份 3.新来的开发妹子删了库! (1)模拟环境准备 (2)全备 ...
- MYSQL的备份与恢复--物理备份xrabackup
目录 1.数据库完整备份与恢复 (1)环境准备 (2)完全备份恢复流程 2.数据库增量备份与恢复 (1)增量和差异概述 (2)增量备份和恢复 3.数据库差异备份与恢复 4.简单命令进行物理备份 5.实 ...
- 2020重新出发,MySql基础,MySql数据库备份与恢复
@ 目录 MySQL数据库备份与恢复 数据库为什么需要备份 MySQL备份类型 MySQL热备份及恢复 逻辑备份 mysqldump SELECT INTO-OUTFILE mydumper 裸文件备 ...
- MySQL的备份与恢复
Linux下的mysql的备份与恢复 备份: 比如我们要备份mysql中已经存在的名为linux的数据库,要用到命令mysqldump 命令格式如下: [root@linuxsir01 root]# ...
随机推荐
- netbean out of memory java heap space
When run test file in netbean. all dependency and resource are right, but it raise up java.lang.OutO ...
- MYSQL 查询脚本优化
业务需要,优化一段多表查询脚本. 总结下来,采取以下步骤. 分析语句 分析语句,了解逻辑,是否可以先优化逻辑. 查询语句的查询范围,是否是全表查询,如果是,尽量优化为按索引查询. 查看语句数量,是否有 ...
- mysql数据库的水平分表与垂直分表实例讲解
mysql语句的优化有局限性,mysql语句的优化都是围绕着索引去优化的,那么如果mysql中的索引也解决不了海量数据查询慢的状况,那么有了水平分表与垂直分表的出现(我就是记录一下自己的理解) 水平分 ...
- Docker基础(下)
Docker基础(下) 链接:https://pan.baidu.com/s/1u8Tg5qB4ZZHEK6GqCJkjwg 提取码:u8hb 复制这段内容后打开百度网盘手机App,操作更方便哦 5. ...
- Python网络编程UDP服务器与客服端简单例子
[转载] https://blog.csdn.net/hu330459076/article/details/7868028 UDP服务器代码: #!/usr/bin/env python # -*- ...
- java while循环
/* while 循环有一个标准格式,还有一个扩展格式 标准格式: while(条件表达式){ 循环体 } 扩展格式: 初始化语句; while(条件判断){ 循环体 步进表达式 } */ publi ...
- Python3.5-20190507-廖老师-自我笔记-迭代
可以使用for x in 数据 的那么 这个数据就是可迭代对象. 通过计算生成下一个值的数据就是生成器 可以使用next(数据) 来计算出下一个值的数据就是迭代器(生成器属于迭代器) -------- ...
- jquery-ui拖拽对齐线位置不对的操作
1,在draggable的drag中直接获取$(this).offset()来给对齐线设置top和left: 2,在draggable的drag中直接获取event的clientX去和event的of ...
- PHP curl_reset函数
curl_reset— 重置libcurl会话句柄的所有选项. 说明 void curl_reset ( resource $ch ) 该函数将重新初始化cURL的所有选项值(默认值). 注意:cur ...
- Kubernetes v1.16 对API的更改
前段时间安装Kubernetes v1.16.2,然后从v1.14版本的拷贝yaml文件过来执行,很多都报没有相应的api,查看一下新版本的api admissionregistration.k8s. ...