我们正在为我们的产品后端编写完整和增量备份设置的混合脚本,周日触发所有剩余日期的完整备份和增量备份。

在这个过程中,我们应该能够从完整备份文件中读取到文件的LSN号。

我们已设置脚本将备份压缩为 xbstream 格式,这样就会生成一个文件来压缩所有数据。

现在的问题是如何从完整的 xbstream 文件中提取或读取 LSN 或单个信息文件。

尽管我们可以使用日志文件来实现此目的,但我们需要一个更可靠的解决方案。

谢谢。

有帮助吗?

解决方案

XtraBackup 不仅在中记录最新的 LSN xtrabackup_info 您必须提取它,但也提取到 STDERR:

150731 16:33:28  innobackupex: Executing FLUSH NO_WRITE_TO_BINLOG ENGINE LOGS...
150731 16:33:28  innobackupex: Waiting for log copying to finish

xtrabackup: The latest check point (for incremental): '1948062848'
xtrabackup: Stopping log copying thread.
.>> log scanned up to (1948062848)

LSN 将是 1948062848. 。查找字符串 xtrabackup: The latest check point (for incremental): 在输出中。看 http://bazaar.launchpad.net/~twindb-dev/twindb-agent/trunk/view/head:/twindb.py#L1888 例如:

def grep_lsn(output):
    """
    Finds LSN in XtraBackup output
    :param output: string with Xtrabackup output
    :return: LSN
    """
    lsn = None
    for line in output.split("\n"):
        if line.startswith("xtrabackup: The latest check point (for incremental):"):
            lsn = line.split("'")[1]
    return lsn

然后,通过 1948062848--incremental-lsn= 进行增量复制时的选项。例子: http://bazaar.launchpad.net/~twindb-dev/twindb-agent/trunk/view/head:/twindb.py#L1429

if backup_type == 'incremental':
    last_lsn = job["params"]["lsn"]
    xtrabackup_cmd.append("--incremental")
    xtrabackup_cmd.append(".")
    xtrabackup_cmd.append("--incremental-lsn=%s" % last_lsn)
许可以下: CC-BY-SA归因
不隶属于 dba.stackexchange
scroll top