Innobackupex :Comment extraire des fichiers individuels à partir de sauvegardes compressées xbstream
-
28-09-2020 - |
Question
Nous écrivons un mélange de configuration de sauvegarde complète et incrémentielle pour notre backend de produit, le dimanche déclenchant une sauvegarde complète et une sauvegarde incrémentielle tous les jours restants.
Dans ce processus, nous devrions pouvoir lire le numéro LSN d'un fichier à partir du fichier de sauvegarde complet.
Nous avons configuré le script pour compresser la sauvegarde au format xbstream afin d'obtenir un seul fichier compressant toutes les données.
La question est maintenant de savoir comment extraire ou lire le LSN ou un seul fichier d'informations du fichier xbstream complet.
Bien que nous puissions utiliser un fichier journal pour cela, nous souhaitions une solution plus fiable.
Merci.
La solution
XtraBackup enregistre le LSN le plus récent non seulement dans xtrabackup_info
que vous devrez extraire, mais aussi à 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)
Le LSN serait 1948062848
.Rechercher une chaîne xtrabackup: The latest check point (for incremental):
dans la sortie.Voir http://bazaar.launchpad.net/~twindb-dev/twindb-agent/trunk/view/head:/twindb.py#L1888 Par exemple:
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
Ensuite, passez 1948062848
avec --incremental-lsn=
option lorsque vous effectuez une copie incrémentielle.Exemple: 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)