web-dev-qa-db-ja.com

Innobackupex:xbstream圧縮バックアップから個々のファイルを抽出する方法

Prodcutバックエンドの完全バックアップと増分バックアップのセットアップを組み合わせてスクリプトを作成し、日曜日に残りのすべての日に完全バックアップと増分バックアップをトリガーします。

このプロセスでは、完全バックアップファイルからファイルのLSN番号を読み取ることができるはずです。

バックアップをxbstream形式に圧縮するようにスクリプトを設定したので、1つのファイルですべてのデータが圧縮されます。

ここで問題となるのは、完全なxbstreamファイルからLSNまたは単一の情報ファイルを抽出または読み取る方法です。

これにはログファイルを使用できますが、より信頼性の高いソリューションが必要でした。

ありがとうございました。

1
Uday

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)
_
2
akuzminsky