Innobackupex:Como extrair arquivos individuais de backups compactados xbstream
-
28-09-2020 - |
Pergunta
Estamos criando um script de uma combinação de configuração de backup completo e incremental para nosso back-end de produto, com o domingo acionando backup completo e backup incremental em todos os dias restantes.
Neste processo, deveremos ser capazes de ler o número LSN de um arquivo do arquivo de backup completo.
Configuramos o script para compactar o backup no formato xbstream para que resultasse em um único arquivo compactando todos os dados.
Agora a questão é como extrair ou ler o LSN ou um único arquivo de informações do arquivo xbstream completo.
Embora possamos usar o arquivo de log para isso, queríamos uma solução mais confiável.
Obrigado.
Solução
O XtraBackup registra o LSN mais recente não apenas em xtrabackup_info
que você terá que extrair, mas também para 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)
A LSN seria 1948062848
.Encontrar string xtrabackup: The latest check point (for incremental):
na saída.Ver http://bazaar.launchpad.net/~twindb-dev/twindb-agent/trunk/view/head:/twindb.py#L1888 por exemplo:
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
Então, passe 1948062848
com --incremental-lsn=
opção quando você faz uma cópia incremental.Exemplo: 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)