Innobackupex:如何从 xbstream 压缩备份中提取单个文件
-
28-09-2020 - |
题
我们正在为我们的产品后端编写完整和增量备份设置的混合脚本,周日触发所有剩余日期的完整备份和增量备份。
在这个过程中,我们应该能够从完整备份文件中读取到文件的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)
不隶属于 dba.stackexchange