一、MySQL 增量备份概念
使用 mysqldump 进行完全备份,备份的数据中有重复数据,备份时间与恢复时间长。 而增量备份就是备份自上一次备份之后增加或改变的文件或内容。
1、增量备份的特点:
- 没有重复数据,备份量不大,时间短
- 恢复麻烦:需要上次完全备份及完全备份之后所有的增量备份才能恢复,而且要对所 有增量备份进行逐个反推恢复。
MySQL没有提供直接的增量备份办法,可以通过MySQL提供的二进制日志(binary logs)间接实现增量备份。
2、MySQL 二进制日志对备份的意义:
- 二进制日志保存了所有更新或者可能更新数据库的操作。
- 二进制日志在启动 MySQL 服务器后开始记录,并在文件达到 max_binlog_size 所设置的大小或者接收到 flush logs 命令后重新创建新的日志文件。
[root@mysql-master ~]# vim /etc/my.cnf
53 max_binlog_size=1024000 //二进制日志最大1M
- 只需定时执行flush logs方法重新创建新的日志,生成二进制文件序列,并及时把这 些日志保存到安全的地方就完成了一个时间段的增量备份。
要进行 MySQL 的增量备份,首先要开启二进制日志功能,开启 MySQL 的二进制日志功能。
方法一:
MySQL 的配置文件的[mysqld]项中加入 log-bin=文件存放路径/文件前缀,如log-bin=mysql-bin,然后重启 mysqld 服务。默认此配置存在。
方法二:
使用 mysqld –log-bin=文件存放路径/文件前缀 重新启动 mysqld 服务 每周选择服务器负载较轻的时间段,或者用户访问较少的时间段进行备份。
二、MySQL 增量恢复
1、应用场景
(1)人为的 SQL 语句破坏了数据库
(2)在进行下一次全备之前发生系统故障导致数据库数据丢失
(3)在主从架构中,主库数据发生了故障
2、增量恢复的方法
(1)一般的恢复:备份的二进制日志内容全部恢复
格式:
mysqlbinlog [--no-defaults] 增量备份文件 | mysql -u 用户名 -p 密码
(2)基于时间点的恢复:便于跳过某个发生错误的时间点实现数据恢复
格式:
从日志开头截止到某个时间点的恢复:
mysqlbinlog [--no-defaults] --stop-datetime=’年-月-日 小时:分钟:秒’ 二进制日志 | mysql -u用户名 -p密码
从某个时间点到日志结尾的恢复:
mysqlbinlog [--no-defaults] --start-datetime=’年-月-日 小时:分钟:秒’ 二进制日志 | mysql -u用户名 -p密码
从某个时间点到某个时间点的恢复:
mysqlbinlog [--no-defaults] --start-datetime=’年-月-日 小时:分钟:秒’ --stop-datetime=’年-月-日 小时:分钟:秒’ 二进制日志 | mysql -u 用户名 -p 密码
(3)基于位置的恢复:可能在同一时间点既有错误的操作也有正确的操作,基于位置 进行恢复更加精准
格式:
mysqlbinlog --stop-position=’操作 id’ 二进制日志 |mysql -u 用户名 -p 密码
mysqlbinlog --start-position=’操作 id’ 二进制日志 |mysql -u 用户名 -p 密码
三、制定企业备份策略的思路
1、确定当前 mysql 是处于哪种表类型下工作的,它们支持事物处理还是非事物的,因为我 们需要根据不同的特点来做一些设置。
2、要选择备份的形式是完全备份还是增量备份,它们各有优缺点。
3、为了保证恢复的完整性,我们得开启 binary log 功能,同时 binlog 给恢复工作也带来了很 大的灵活性,可以基于时间点或是位置进行恢复。考虑到数据库性能,我们可以将 binlog 文件保存到其他安全的硬盘中。
4、正如最初所提到的,备份操作和应用服务得到同时运行,这样就十分消耗系统资源了, 会导致数据库服务性能下降,这就要求我们选择一个合适的时间(比如在应用负担很小的时 候)再来进行备份操作。
5、不是备份完就万事大吉,我们还得确认备份是否可用,所以之后的恢复测试是完全有必 要的。
- 根据数据更新频繁,则应该较为频繁的备份
- 数据重要,则在有适当更新时进行备份
- 在数据库压力小的时段进行备份,如一周一次完全备份,然后每天进行增量备份
- 中小公司,全备一般可一天一次
- 大公司可每周进行一次全备,每天进行一次增量备份
- 尽量为企业实现主从复制架构
四、MySQL 企业备份案例
需求描述:
北京移电通信公司的用户信息数据库为 client,用户资费数据表为 user_info 请为该公司每周进行完全备份
每天为该公司进行增量备份文章来源:https://www.toymoban.com/news/detail-466493.html
新增加的用户信息如表所示文章来源地址https://www.toymoban.com/news/detail-466493.html
身份证 | 姓名 | 性别 | 用户ID号 | 资费 |
---|---|---|---|---|
000000006 | 孙空悟 | 男 | 016 | 10 |
000000007 | 蓝精灵 | 女 | 017 | 91 |
000000008 | 姜姜 | 女 | 018 | 23 |
000000009 | 关云长 | 男 | 019 | 37 |
0000000010 | 罗钢 | 男 | 020 | 36 |
安装 mysql(yum 方式)
[root@mysql-server ~]# yum -y install mariadb-server mariadb mariadb-libs
[root@mysql-server ~]# systemctl enable mariadb.service
[root@mysql-server ~]# systemctl start mar
到了这里,关于Mysql数据库增量备份与恢复的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!