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增量备份与恢复的更多相关文章

  1. MySQL增量备份与恢复实例【转】

    小量的数据库可以每天进行完整备份,因为这也用不了多少时间,但当数据库很大时,就不太可能每天进行一次完整备份了,这时候就可以使用增量备份.增量备份的原理就是使用了mysql的binlog日志.本次操作的 ...

  2. MySQL增量备份与恢复实例

    小量的数据库可以每天进行完整备份,因为这也用不了多少时间,但当数据库很大时,就不太可能每天进行一次完整备份了,这时候就可以使用增量备份.增量备份的原理就是使用了mysql的binlog日志. 本次操作 ...

  3. 七、linux-mysql下mysql增量备份与恢复

    1.备份的意义 运维工作:保护公司的数据     .  网站7*24小时服务 但相当来说,数据更加重要,而数据最核心的就是数据库数据,所以数据库的备份和恢复就显得十分重要. 2.备份的几个参数 mys ...

  4. MySQL 完整和增量备份与恢复

    MySQL 完全备份与恢复 1.数据备份的重要性 在企业中数据的价值至关重要,数据保障了企业的业务的运行,因此数据的安全性及可靠性是运维的重中之重,任何数据的丢失都有可能会对企业产生严重的后果.造成数 ...

  5. Percona XtraBackup 实现全备&增量备份与恢复【转】

    percona-xtrabackup主要是有两个工具,其中一个是xtrabackup,一个是innobackupex,后者是前者封装后的一个脚本.在针对MySQL的物理备份工具中,大概是最流行也是最强 ...

  6. MYSQL的备份与恢复--逻辑备份mysqldump

    目录 0.备份与恢复概述 1.逻辑备份-完整备份与恢复 2.逻辑备份-增量备份与恢复 (1)环境准备 (2)恢复全量数据 (3)恢复增量备份 3.新来的开发妹子删了库! (1)模拟环境准备 (2)全备 ...

  7. MYSQL的备份与恢复--物理备份xrabackup

    目录 1.数据库完整备份与恢复 (1)环境准备 (2)完全备份恢复流程 2.数据库增量备份与恢复 (1)增量和差异概述 (2)增量备份和恢复 3.数据库差异备份与恢复 4.简单命令进行物理备份 5.实 ...

  8. 2020重新出发,MySql基础,MySql数据库备份与恢复

    @ 目录 MySQL数据库备份与恢复 数据库为什么需要备份 MySQL备份类型 MySQL热备份及恢复 逻辑备份 mysqldump SELECT INTO-OUTFILE mydumper 裸文件备 ...

  9. MySQL的备份与恢复

    Linux下的mysql的备份与恢复 备份: 比如我们要备份mysql中已经存在的名为linux的数据库,要用到命令mysqldump 命令格式如下: [root@linuxsir01 root]# ...

随机推荐

  1. 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 ...

  2. MYSQL 查询脚本优化

    业务需要,优化一段多表查询脚本. 总结下来,采取以下步骤. 分析语句 分析语句,了解逻辑,是否可以先优化逻辑. 查询语句的查询范围,是否是全表查询,如果是,尽量优化为按索引查询. 查看语句数量,是否有 ...

  3. mysql数据库的水平分表与垂直分表实例讲解

    mysql语句的优化有局限性,mysql语句的优化都是围绕着索引去优化的,那么如果mysql中的索引也解决不了海量数据查询慢的状况,那么有了水平分表与垂直分表的出现(我就是记录一下自己的理解) 水平分 ...

  4. Docker基础(下)

    Docker基础(下) 链接:https://pan.baidu.com/s/1u8Tg5qB4ZZHEK6GqCJkjwg 提取码:u8hb 复制这段内容后打开百度网盘手机App,操作更方便哦 5. ...

  5. Python网络编程UDP服务器与客服端简单例子

    [转载] https://blog.csdn.net/hu330459076/article/details/7868028 UDP服务器代码: #!/usr/bin/env python # -*- ...

  6. java while循环

    /* while 循环有一个标准格式,还有一个扩展格式 标准格式: while(条件表达式){ 循环体 } 扩展格式: 初始化语句; while(条件判断){ 循环体 步进表达式 } */ publi ...

  7. Python3.5-20190507-廖老师-自我笔记-迭代

    可以使用for x in 数据 的那么 这个数据就是可迭代对象. 通过计算生成下一个值的数据就是生成器 可以使用next(数据) 来计算出下一个值的数据就是迭代器(生成器属于迭代器) -------- ...

  8. jquery-ui拖拽对齐线位置不对的操作

    1,在draggable的drag中直接获取$(this).offset()来给对齐线设置top和left: 2,在draggable的drag中直接获取event的clientX去和event的of ...

  9. PHP curl_reset函数

    curl_reset— 重置libcurl会话句柄的所有选项. 说明 void curl_reset ( resource $ch ) 该函数将重新初始化cURL的所有选项值(默认值). 注意:cur ...

  10. Kubernetes v1.16 对API的更改

    前段时间安装Kubernetes v1.16.2,然后从v1.14版本的拷贝yaml文件过来执行,很多都报没有相应的api,查看一下新版本的api admissionregistration.k8s. ...