MySQL 利用binlog增量备份+还原实例

一,什么增量备份 – 增量备份,就是将新增加的数据进行备份。假如你一个数据库,有10G的数据,每天会增加10M的数据,数据库每天都要备份一次,这么多数据是不是都要备份呢?还是只要备份增加的数据呢,很显然,我只要备份增加的数据。这样减少服务器的负担

一,什么是增量备份

增量备份,就是将新增加的数据进行备份。假如你一个数据库,有10G的数据,每天会增加10M的数据,数据库每天都要备份一次,这么多数据是不是都要备份呢?还是只要备份增加的数据呢,很显然,我只要备份增加的数据。这样减少服务器的负担。

二,启用binlog

vi my.cnf

log-bin=/var/lib/mysql/mysql-bin.log,如果是这样的话log-bin=mysql-bin.log默认在datadir目录下面

[root@BlackGhost mysql]# ls |grep mysql-bin
mysql-bin.000001
mysql-bin.000002
mysql-bin.000003
mysql-bin.000004
mysql-bin.000005
mysql-bin.000006
mysql-bin.index

启动后会产生mysql-bin这样的文件,每启动一次,就会增加一个或者多个。

mysql-bin.000002这样文件存放的是数据库每天增加的数据,所有数据库的数据增量都在这里面。

三,查看mysql-bin.000002这样的文件里面到底是什么东西

[root@BlackGhost mysql]# mysqlbinlog   /var/lib/mysql/mysql-bin.000002 > /tmp/add.sql

下面还有一个重要索引文件就是mysql-bin.index

Java代码
[root@BlackGhost mysql]# cat mysql-bin.index      ./mysql-bin.000001      ./mysql-bin.000002      ./mysql-bin.000003     ./mysql-bin.000004     ./mysql-bin.000005      ./mysql-bin.000006    
[root@BlackGhost mysql]# cat mysql-bin.index ./mysql-bin.000001 ./mysql-bin.000002 ./mysql-bin.000003 ./mysql-bin.000004 ./mysql-bin.000005 ./mysql-bin.000006

四,增量备份和增量还原

1,增量备份

既然我们知道了,mysql里面新增加的数据在mysql-bin这样的文件里面,我们只要把mysql-bin这样的文件进行备份就可以了。

cp /var/lib/mysql/mysql-bin* /data/mysql_newbak/

2,增量还原,讲几个常用的,比较有用的

a),根据时间来还原 –start-date,–stop-date

[root@BlackGhost mysql]# /usr/local/mysql/bin/mysqlbinlog –start-date=”2010-09-29 18:00:00″ –stop-date=”2010-09-29 23:00:00″ /var/lib/mysql/mysql-bin.000002 |mysql -u root -p

根据条件看一下数据

Java代码
[root@BlackGhost mysql]# /usr/local/mysql/bin/mysqlbinlog  –start-date=”2010-09-29 18:00:00″  –stop-date=”2010-09-29 23:00:00″  /var/lib/mysql/mysql-bin.000002  //下面是部分内容,其实也就是一些对数据进行操作的sql语句  # 
b),根据起始位置来还原,–start-position,–stop-position

[root@BlackGhost mysql]# /usr/local/mysql/bin/mysqlbinlog –start-position=370 –stop-position=440  /var/lib/mysql/mysql-bin.000002 |mysql -u root -p

//查看插入的内容,根a)中是一样的

[root@BlackGhost mysql]# /usr/local/mysql/bin/mysqlbinlog –start-position=370 –stop-position=440  /var/lib/mysql/mysql-bin.000002

–start-position=370 –stop-position=440 这里面数字从哪儿来的呢?
# at 370
#100929 21:35:25 server id 1  end_log_pos440Query    thread_id=1    exec_time=0    error_code=0
SET TIMESTAMP=1285767325/*!*/;

上面的红色加粗的就是,一个是start-position,一个是stop-position

c),根据数据库名来进行还原 -d

在这里是小写的d,请不要把它和mysqldump中的-D搞混了。哈哈。

[root@BlackGhost mysql]# /usr/local/mysql/bin/mysqlbinlog -d test  /var/lib/mysql/mysql-bin.000002

查看内容,请参考a)

d),根据数据库所在IP来分-h

[root@BlackGhost mysql]# /usr/local/mysql/bin/mysqlbinlog -h 192.1681.102  /var/lib/mysql/mysql-bin.000002

查看内容,请参考a)

e),根据数据库所占用的端口来分-P

有的时候,我们的mysql用的不一定是3306端口,注意是大写的P

[root@BlackGhost mysql]# /usr/local/mysql/bin/mysqlbinlog -P 13306  /var/lib/mysql/mysql-bin.000002

查看内容,请参考a)

f),根据数据库serverid来还原–server-id

在数据库的配置文件中,都有一个serverid并且同一集群中serverid是不能相同的。

[root@BlackGhost mysql]# /usr/local/mysql/bin/mysqlbinlog –server-id=1  /var/lib/mysql/mysql-bin.000002

查看内容,请参考a)

注意:上面的几个例子,我都是一个一个说的,其实可以排列组合的。例如

[root@BlackGhost mysql]# /usr/local/mysql/bin/mysqlbinlog –start-position=”2010-09-29 18:00:00″ -d test -h 127.0.0.1 /var/lib/mysql/mysql-bin.000002 |mysql -u root -p

五,后续

增量备份的时候,有一点让人不爽,就是mysql-bin这样的文件,每启动一次mysql就会增加一些,如果你不去管他的话,时间长了,他会把你的磁盘占满。

./mysqldump –flush-logs -u root  myblog > /tmp/myblog.sql

备份myblog数据库,清除增量备份里面的有关myblog的数据

./mysqldump –flush-logs -u root  –all-databases > /tmp/alldatabase.sql

备份所有数据库,清除增量备份

mysql-bin.index的起索引作用,因为增量的数据不一定在一个mysql-bin000这样的文件里面,这个时候,我们就要根据mysql-bin.index来找mysql-bin这样的增量文件了。

如果mysql里面做了这样的配置binlog-do-db=test1,增量备份里面只会有test1这个数据库的数据

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/1699154.html

(0)
上一篇 2025年2月19日 14:16:00
下一篇 2025年2月19日 14:16:18

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 如何配置phpstudy

    通过八个步骤配置 PHPstudy,包括:安装软件、配置 Apache 服务器、选择 PHP 版本、配置 MySQL 数据库、创建 MySQL 用户、配置 PHPMyAdmin、配置其他组件(可选)并完成配置。 如何配置 PHPstudy …

    2025年2月23日
    100
  • php开发环境的配置过程

    配置 PHP 开发环境涉及以下步骤:安装 PHP安装 Web 服务器(如 Apache 或 Nginx)安装数据库(如 MySQL 或 PostgreSQL)配置 PHP.ini 文件安装 Composer安装 PHP IDE(如 Visu…

    2025年2月23日
    100
  • php环境配置教程

    PHP 环境配置包括六个步骤:安装 PHP 扩展:下载扩展包、解压、修改 php.ini、重启 Web 服务器。安装 MySQL 扩展:安装 MySQL 客户端、下载扩展包、解压、修改 php.ini、重启 Web 服务器。安装 Compo…

    2025年2月23日
    100
  • php内部函数是什么有哪些

    PHP内部函数是PHP预定义的函数,直接可调用,是PHP核心的组成部分。常见的功能类别及函数包括:字符串处理(strlen、strpos、substr、str_replace、strtolower)、数组处理(count、array_pus…

    2025年2月23日
    100
  • PHP 503错误与防火墙有关吗?

    PHP 503 错误“服务不可用”有可能与防火墙有关,但不是唯一可能性:火墙规则严格会导致 HTTP 请求被拦截或延迟,从而触发服务器超时。火墙资源不足或受到 DDoS 攻击时会导致请求无法及时处理。火墙配置不当会影响负载均衡器或反向代理等…

    2025年2月23日
    100
  • php5升级php7连接mysql数据库失败

    原因: php5使用mysql_connect函数来进行Mysql数据库的连接操作,但是你会发现,这个方法用到php7上不灵了。原因很简单,php7已经摒弃了这个函数,现在php7大概用两种连接MySQL数据库的方法。 方法一: 使用函数连…

    2025年2月23日
    100
  • php7连接不上mysql

    1、添加php.ini文件 新版的PHP7中,没有php.ini,需要自己创建。新版有两个php.ini-development和php.ini-production文件,复制一个然后重命名为php.ini就可以了。 2、修改php.ini…

    2025年2月23日
    100
  • php7 mysql扩展安装方法详解

    php mysql安装方法:首先下载mysql扩展;然后解压并使用phpize工具初始化;接着进行configure,并执行“make && make install”;最后添加内容为“extension=pdo_mysql…

    2025年2月23日
    100
  • PHP7如何安装mysql的扩展模块

    本篇文章给大家介绍一下php7中安装mysql的扩展模块的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 相对与PHP5,PHP7的最大变化是移除了mysql扩展,推荐使用mysqli或者pdo_mysql,实际上在…

    2025年2月23日
    100
  • php7连接MySQL如何制作简易查询程序

    本篇文章给大家介绍一下php7连接mysql制作简易查询程序的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 简易教程 假设我们制作的是分班情况查询程序,将使用PHP7的环境以PDO的方式连接MySQL。 通过学号和…

    2025年2月23日 编程技术
    100

发表回复

登录后才能评论