17.3 使用 MySQL 企业备份日志

MySQL Enterprise Backup 除了将消息输出到 stderr流和日志文件之外,每次备份的进度和历史记录也会记录到备份服务器上的 mysql.backup_progressmysql.backup_history表中(要跳过更新两个表,请使用 --no-history-loggingbackup 命令的选项).

backup_progress桌子

表中的每一行都backup_progress记录了状态更改或来自正在运行的备份作业的消息。该 backup_progress表包含以下列:

mysql> DESCRIBE mysql.backup_progress;
+---------------+---------------+------+-----+----------------------+--------------------------------------------------+
| Field         | Type          | Null | Key | Default              | Extra                                            |
+---------------+---------------+------+-----+----------------------+--------------------------------------------------+
| id            | int           | NO   | PRI | NULL                 | auto_increment                                   |
| backup_id     | bigint        | NO   | MUL | NULL                 |                                                  |
| tool_name     | varchar(4096) | NO   |     | NULL                 |                                                  |
| error_code    | int           | NO   |     | NULL                 |                                                  |
| error_message | varchar(4096) | NO   |     | NULL                 |                                                  |
| current_time  | timestamp(3)  | NO   |     | CURRENT_TIMESTAMP(3) | DEFAULT_GENERATED on update CURRENT_TIMESTAMP(3) |
| current_state | varchar(200)  | NO   |     | NULL                 |                                                  |
+---------------+---------------+------+-----+----------------------+--------------------------------------------------+
7 rows in set (0.00 sec)

对于 MySQL Enterprise Backup 8.0.19 及更高版本:backup_progress表为 InnoDB 格式。

对于 MySQL Enterprise Backup 8.0.18 及更早版本:backup_progress表为 CSV 格式。可以用mysql.CSV客户端查询表,也可以用应用程序或脚本 解析对应的

以下是一些使用 backup_progress表中信息的方法:

  • 使用该backup_id值查询单个备份操作的不同阶段的所有信息,并在表中找到同一备份的对应行 (该行 仅在备份完成后 backup_history写入表中)。backup_history

  • 检查触发备份 tool_name的完整 mysqlbackup命令的列,包括使用的所有选项。

  • 使用error_codeerror_message值跟踪已发生的任何错误,并查看备份操作是否应因任何严重错误而终止。

  • 使用current_timecurrent_state值来跟踪操作的进度。它们还允许您测量备份的每个阶段需要多长时间,这有助于您规划未来的备份。

backup_history桌子

表中的每一行都记录了由mysqlbackup命令backup_history生成的一个完整备份的详细信息 。该 表包含以下列: backup_history

mysql> mysql> DESCRIBE mysql.backup_history;
+---------------------------+---------------+------+-----+---------------------+-------+
| Field                     | Type          | Null | Key | Default             | Extra |
+---------------------------+---------------+------+-----+---------------------+-------+
| backup_id                 | bigint(20)    | NO   | PRI | NULL                |       |
| tool_name                 | varchar(4096) | NO   |     | NULL                |       |
| start_time                | timestamp     | NO   |     | 0000-00-00 00:00:00 |       |
| end_time                  | timestamp     | NO   |     | 0000-00-00 00:00:00 |       |
| binlog_pos                | bigint(20)    | NO   |     | NULL                |       |
| binlog_file               | varchar(255)  | NO   |     | NULL                |       |
| compression_level         | int(11)       | NO   |     | NULL                |       |
| engines                   | varchar(100)  | NO   |     | NULL                |       |
| innodb_data_file_path     | varchar(2048) | NO   |     | NULL                |       |
| start_lsn                 | bigint(20)    | NO   |     | NULL                |       |
| end_lsn                   | bigint(20)    | NO   |     | NULL                |       |
| backup_type               | varchar(50)   | NO   |     | NULL                |       |
| backup_format             | varchar(50)   | NO   |     | NULL                |       |
| mysql_data_dir            | varchar(2048) | NO   |     | NULL                |       |
| innodb_data_home_dir      | varchar(2048) | NO   |     | NULL                |       |
| innodb_log_group_home_dir | varchar(2048) | NO   |     | NULL                |       |
| backup_destination        | varchar(4096) | NO   |     | NULL                |       |
| lock_time                 | double(7,3)   | NO   |     | NULL                |       |
| exit_state                | varchar(10)   | NO   |     | NULL                |       |
| last_error                | varchar(4096) | NO   |     | NULL                |       |
| last_error_code           | int(11)       | NO   |     | NULL                |       |
| start_time_utc            | bigint(20)    | NO   |     | NULL                |       |
| end_time_utc              | bigint(20)    | NO   |     | NULL                |       |
| consistency_time_utc      | bigint(20)    | NO   |     | NULL                |       |
| meb_version               | varchar(20)   | NO   |     | 0.0.0               |       |
| server_uuid               | varchar(36)   | NO   |     | NULL                |       |
+---------------------------+---------------+------+-----+---------------------+-------+
26 rows in set (0.01 sec)
警告

因为成功的备份总是记录在 表中,命令阶段的 backup_history失败 不会反映在表中。检查mysqlbackup的输出以查看操作是否完全完成而没有错误 总是很重要的 。apply-logbackup-and-apply-logbackup_history

以下是有关 backup_history表格某些列的信息,以及使用这些信息的一些方法:

  • tool_name列记录了触发备份的完整 mysqlbackup命令,包括使用的所有选项。

  • 您可以使用选项end_lsn指定最新备份的值作为下一次增量备份的起始 LSN 值 --start-lsn。(为增量备份指定起始 LSN 值的替代方法是使用该 --incremental-base选项)。

  • binlog_pos列给出了二进制日志的位置,直到日志事件已被备份覆盖。因为以前的backup_history表是csv格式,不能 NULL直接注册值,所以如果不开启binary logging,-1则在列中输入一个值;这同样适用于用于记录NULL值的其他列。

  • 的 值为、、 或 backup_type之一 。 FULLPARTIALDIFFERENTIALINCREMENTALTTS

  • 的值backup_formatIMAGE(对于单文件备份)或 DIRECTORY(对于目录备份)之一。

  • 使用显示备份设置的值(例如 mysql_data_dirinnodb_data_home_dirbackup_destination)确认备份使用的是正确的源目录和目标目录。

  • 的 值为exit_state或 。如果is 和 is ,则备份操作成功;如果不是这种情况,请参阅 和 以获取最新的操作错误。要检索该备份操作的完整错误列表,请转至该表。 SUCCESSFAILUREexit_stateSUCCESSlast_error'NO_ERROR'last_errorlast_error_codebackup_progress