14.12 进度报告选项

有两个选项可以控制mysqlbackup的进度报告功能: --show-progress--progress-interval

  • --show-progress[={stderr|stdout|file:FILENAME|fifo:FIFONAME|table|variable}]

    命令行格式 --show-progress[=destinations]
    类型 枚举
    有效值

    stderr

    stdout

    file:FILENAME

    fifo:FIFONAME

    table

    variable

    该选项指示mysqlbackup定期输出称为其操作进度指示器的简短进度报告。

    该选项的参数控制进度指示器发送到的目的地:

    • stderr:进度指示器被发送到标准错误流。该报告嵌入在带有时间戳的mysqlbackup INFO 消息中。例如:

       130607 12:22:38 mysqlbackup: INFO: Progress: 191 of 191 MB; state: Completed

    • stdout:进度指示器被发送到标准输出流。每个进度指示器后打印一个换行符。

    • file:FILENAME:进度指示器被发送到一个文件。每个新的进度报告都会覆盖该文件,并且该文件包含最新的进度指示器,后跟一个换行符。

    • fifo:FIFONAME:进度指示器被发送到文件系统 FIFO。每个进度指示器后打印一个换行符。

      警告

      如果没有进程读取FIFO, mysqlbackup进程在执行结束时挂起。

    • table:进度指示器发送到mysql.backup_progress表。这需要连接到 MySQL 服务器,因此仅在备份正在运行的 MySQL 实例时有效。mysqlbackup首先将进度报告的一行添加到 mysql.backup_progress表中,然后用最新的进度指示器更新该行。进度指示器存储在表的 current_status列中。

      如果备份锁定了 MySQL 实例(例如,通过发出一条语句),则在 MySQL 实例解锁之前 FLUSH TABLES WITH READ LOCK ,进度报告不会传递到表中。mysql.backup_progress

    • variable:进度指示器被发送到系统变量 backup_progress

      警告

      backup_progress尚未为 MySQL 服务器定义 系统变量 。用户需要创建自己的插件来定义变量。有关用户插件的更多信息,请参阅 MySQL 插件 API

    当没有为 指定参数时 --show-progress,进度指示器被发送到stderr

    --show-progress通过在命令行上多次 指定选项,可以将进度报告到多个目的地。例如,以下命令行 stderr向一个名为 的文件 报告备份命令的进度meb_output

    mysqlbackup --show-progress --show-progress=file:meb_output --backup-dir=/full-backup
                backup

    进度指示器是指示mysqlbackup 操作的执行进度的短字符串。进度指示器由一个或多个测量操作进度的仪表组成。例如:

    Progress: 100 of 1450 MB; state: Copying .ibd files

    这表明到目前为止已经复制或处理了总共1450兆字节中的100兆字节, mysqlbackup当前正在复制InnoDB数据文件(.ibdfiles)。

    进度指示器字符串以 开头 Progress:,后跟一个或多个测量进度的仪表。如果存在多个仪表,则它们以分号分隔。不同类型的仪表包括:

    • 总数据表:它始终是进度指示器中的第一个表。它的格式为:

      DATA of TOTAL UNIT

      DATATOTAL 是无符号十进制整数, UNIT是 MB(兆字节)、KB(千字节)或字节(1MB=1024KB 和 1KB=1024 字节)。

      根据mysqlbackup 操作的不同,total data meter 有两个略有不同的含义:

      • 复制或处理的数据量以及mysqlbackup操作 要复制或处理的数据总量 。例如:

        Progress: 200 of 1450 MB

        例如,当操作为 时, backup指示器表示从 1450MB 中复制 200MB。但是当操作是针对,例如, validateor incremental时,这意味着从 1450MB 中处理了 200MB。

      • 复制或处理的数据总量以及操作结束时将复制的总量的估计值。随着命令执行的进行,估计总数会根据服务器上的数据进行更新。

        对于诸如 backup之类的某些操作,无法在执行开始时准确知道将复制或处理多少数据。因此,总数据表显示备份总数据的估计量。估计在命令执行期间更新。例如:

        Progress: 200 of 1450 MB

        其次是:

        Progress: 200 of 1550 MB

        当在服务器上添加 100MB 的数据时。

        如果操作成功,最终进度指示器会显示操作结束时复制的实际数据量。

    • Compression meter:它表示压缩比的滑动平均值,它是为每个被压缩的数据块定义的(orig_size - compressed_size) / orig_size。例如:

      compression: 40%

      这意味着在压缩之后,数据占用的空间减少了 40%(计算为最后 10 个数据块的平均值)。

      如果为mysqlbackup 操作--compress 启用了 该选项,则压缩表将包含在进度指示器中。在至少压缩了 10 个数据块之前,压缩表的值是不确定的。未定义的仪表值由仪表中的“-”表示:

      compression: -

    • 状态表:它是命令当前正在执行的主要步骤的简短描述。例如:

       state: Copying InnoDB data

       state: Waiting for locks

       state: Copying system tablespace

       state: Copying .ibd files

       state: Copying non-InnoDB data

       state: Completed

    以下是使用不同仪表的进度指示器的一些示例:

    Progress: 300 of 1540 MB; state: Waiting for locks

    Progress: 400 of 1450 MB; state: Copying InnoDB data: compression: 30%

    进度指示器中包含的确切仪表集取决于命令和用于它的选项。

  • --progress-interval=SECONDS

    命令行格式 --progress-interval=SECONDS
    类型 数字
    默认值 2
    最小值 1
    最大值 100000
    单元 第二

    进度报告之间的间隔(以秒为单位)。默认值为两秒。最短间隔为 1 秒,最长允许间隔为 100000 秒。