MySQL 8.0 Redo 归档

0    25    1

Tags:

👉 本文共约1186个字,系统预计阅读时间或需5分钟。

简介

MySQL 的 REDO 日志归档功能在 8.0.17 版本后发布,目的是为了解决使用 MySQL 热备工具比如 mysqlbackup 、xtrabackup 等备份 REDO 日志的速度慢于业务生成 REDO 日志的速度而导致的备份数据不一致问题(未及时备份的 RRDO 日志被提前覆盖写入!)。

MySQL 的 REDO 日志归档功能开启非常简单,只需对参数 innodb_redo_log_archive_dirs 简单设置即可。

其中 redo_archive1 是一个标签,可以随便起名字;/redo_mysql/3306 用来指定 REDO 日志归档存放的位置。

目录权限问题

我在使用的过程中,遇到几个细节问题:

1. REDO 日志归档的目录权限、属主等一定要设置正确,要不然可能会有以下几种错误输出 (MySQL 客户端提示错误,热备工具可能提示警告!):
错误1:ERROR 3844 (HY000): Redo log archive directory '/redo_mysql/3306' does not exist or is not a directory

前期需要创建的目录与相关权限设定如下:

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!

接下来使用 MySQL 管理员用户或者具有 system_variables_admin 权限的用户来在线设置此参数:

使用 mysqlbackup 来发起一个备份:

错误1是由于访问归档目录的属主不具备写权限,修复错误1:确认运行 MySQL 实例的 OS 用户为 ytt 。

给 /redo_mysql/3306 设置属于 OS 用户 ytt 的权限:错误1被修复。

此时使用 mysqlbackup 重新发起一个热备,会产生一个新的错误代码, 我们把它命名为错误2。

错误2:其实是一个警告!根据错误代码内容,提示为无权限操作此目录(OS errno: 13 - Permission denied)。

问题产生的原因是调用 mysqlbackup 的 OS 用户不具备归档日志目录的写权限,必须使用对应的 OS 用户来调用 mysqlbackup 。

以下是解决方法和主动验证步骤。

2. 用于 REDO 日志归档的 MySQL 用户必须有 innodb_redo_log_archive 权限。

3. REDO 日志归档功能除了使用热备工具来调用外,也可以直接在 MySQL 客户端来调用。

对应的归档日志:

期间造点数据,可以看到归档日志的大小变化:由4K增长到128M

4. 激活 REDO 日志归档的会话要保持打开,关闭会话则 REDO 日志不再归档!
5. REDO 日志归档的目录不能属于 MySQL 实例已经确认的目录,比如 datadir,innodb_directories 等等。

参考

https://mp.weixin.qq.com/s/rpyFvStoJABJo67fa1Se2w

标签:

头像

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复

嘿,我是小麦,需要帮助随时找我哦
  • 18509239930
  • 个人微信

  • 麦老师QQ聊天
  • 个人邮箱
  • 点击加入QQ群
  • 个人微店

  • 回到顶部
返回顶部