Prodcutバックエンドの完全バックアップと増分バックアップのセットアップを組み合わせてスクリプトを作成し、日曜日に残りのすべての日に完全バックアップと増分バックアップをトリガーします。
このプロセスでは、完全バックアップファイルからファイルのLSN番号を読み取ることができるはずです。
バックアップをxbstream形式に圧縮するようにスクリプトを設定したので、1つのファイルですべてのデータが圧縮されます。
ここで問題となるのは、完全なxbstreamファイルからLSNまたは単一の情報ファイルを抽出または読み取る方法です。
これにはログファイルを使用できますが、より信頼性の高いソリューションが必要でした。
ありがとうございました。
XtraBackupは、抽出する必要のある_xtrabackup_info
_だけでなく、STDERRにも最新のLSNを記録します。
_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)
_