Mysql

xtrabackup 不複製二進制日誌文件 (mysql-bin.xxxxx) 我應該手動複製它們嗎?solveds○一世v和dsolved

  • February 15, 2018

在我按照 DigitalOcean https://www.digitalocean.com/community/tutorials/how-to-create-hot-backups-of-mysql-databases-with-percona-xtrabackup-on-ubuntu-14中提到的步驟之後-04 …我無法達到預期的結果。

我正在使用啟用了二進制日誌選項的伺服器

log_bin = /var/log/mysql/mariadb-bin

log_bin_index = /var/log/mysql/mariadb-bin.index

我執行以下操作以使用 innobackupex 命令備份我的數據庫,如下所示

innobackupex --user=$username  --password=$password --no-timestamp /data/backups/new_backup

然後我做應用日誌來應用複制的事務

innobackupex --apply-log /data/backups/new_backup

但是一旦我:

1-停止我的mysql伺服器

2-將我的 /var/lib/mysql/* 移動到 /tmp/mysql/

3-使用 sudo innobackupex –copy-back /data/backups/new_backup 恢復(加上更改所有權)我的備份

我無法再次啟動 mysql 服務,因為 /var/lib/mysql/ 現在沒有二進制日誌 mysql-bin.xxxxxx。

這是我的 /var/lib/mysql/ 目錄的樣子

user@pc1:~$ ll /var/lib/mysql/
total 1205264
drwxr-xr-x  6 mysql mysql      4096 Jan 13 01:19 ./
drwxr-xr-x 45 root  root       4096 Oct 10 14:13 ../
drwx------  2 mysql mysql     73728 Jan  8 05:02 1bd3e0294da19198/
-rw-rw----  1 mysql mysql     16384 Jan  8 05:09 aria_log.00000001
-rw-rw----  1 mysql mysql        52 Jan  8 05:09 aria_log_control
-rw-r--r--  1 root  root          0 Oct 10 14:10 debian-10.0.flag
-rw-rw----  1 mysql mysql  79691776 Feb 11 06:22 ibdata1
-rw-rw----  1 mysql mysql 536870912 Feb 11 06:22 ib_logfile0
-rw-rw----  1 mysql mysql 536870912 Oct 10 14:14 ib_logfile1
-rw-rw----  1 mysql mysql         0 Oct 10 14:10 multi-master.info
drwxr-xr-x  2 mysql root       4096 Oct 10 14:10 mysql/
-rw-rw----  1 mysql mysql  45143857 Jan  8 04:54 mysql-bin.000002
-rw-rw----  1 mysql mysql       728 Jan  8 04:55 mysql-bin.000003
-rw-rw----  1 mysql mysql  35315670 Jan  8 05:08 mysql-bin.000004
-rw-rw----  1 mysql mysql      2513 Jan  8 05:09 mysql-bin.000005
-rw-rw----  1 mysql mysql     32133 Jan 12 23:43 mysql-bin.000006
-rw-rw----  1 mysql mysql     46855 Feb 11 06:22 mysql-bin.000007
-rw-rw----  1 mysql mysql         5 Jan 13 01:19 mysql.pid
-rw-rw----  1 mysql mysql      1961 Jan 13 01:19 mysql-slow.log
-rw-------  1 root  root         15 Oct 10 14:10 mysql_upgrade_info
drwx------  2 mysql mysql      4096 Oct 10 14:10 performance_schema/

這是修復後的

user@pc1:~$ ll /var/lib/mysql/
total 1147036
drwxr-x--- 6 mysql mysql      4096 Feb 11 06:33 ./
drwxr-xr-x 3 mysql mysql      4096 Feb 11 06:31 ../
drwxr-x--- 2 mysql mysql     65536 Feb 11 06:33 1bd3e0294da19198/
-rw-r----- 1 mysql mysql       419 Feb 11 06:33 backup-my.cnf
-rw-r----- 1 mysql mysql  79691776 Feb 11 06:33 ibdata1
-rw-r----- 1 mysql mysql 536870912 Feb 11 06:33 ib_logfile0
-rw-r----- 1 mysql mysql 536870912 Feb 11 06:33 ib_logfile1
-rw-r----- 1 mysql mysql  12582912 Feb 11 06:33 ibtmp1
drwxr-x--- 2 mysql mysql      4096 Feb 11 06:33 mysql/
drwxr-x--- 2 mysql mysql      4096 Feb 11 06:33 performance_schema/
-rw-r----- 1 mysql mysql        33 Feb 11 06:33 xtrabackup_binlog_info
-rw-rw-r-- 1 mysql mysql        38 Feb 11 06:33 xtrabackup_binlog_pos_innodb
-rw-r----- 1 mysql mysql       115 Feb 11 06:33 xtrabackup_checkpoints
-rw-r----- 1 mysql mysql       552 Feb 11 06:33 xtrabackup_info
-rw-r----- 1 mysql mysql   8388608 Feb 11 06:33 xtrabackup_logfile

目前我沒有使用 Master-Slave 進行複制,但我想要二進制日誌,我的情況只有在我將 mysql-bin.xxxxx 從 /tmp/mysql/ 複製到 /var/lib/mysql/ 以使 mysql 服務成為時才有效能夠啟動!,或者當我禁用日誌選項並手動執行一些操作時,例如更改 /var/log/mysql/mariadb-bin.index 以指向 mysql-bin.000001 我認為這很複雜,而不是 xtrabackup專為。

我必須禁用二進制日誌選項嗎?

我必須同步數據庫旁邊的二進制日誌文件嗎?

我如何從恢復的版本重建二進制日誌文件?

更新$$ solved $$

感謝 hmkael 和 Michael Coburn

Michael Coburn 提到:因為我使用的是 MariaDB,所以我必須使用 MariaDB Backup 而不是 Percona XtraBackup,xtrabackup 和/或它的複制不會複製二進制日誌。

以下連結中的更多資訊:

https://www.percona.com/forums/questions-discussions/percona-xtrabackup/50864-i-failed-how-to-setup-a-slave-for-replication-please-help

如果您的備份來自啟用了二進制日誌記錄的伺服器,xtrabackup 將在目標目錄中創建一個名為 xtrabackup_binlog_info 的文件。該文件包含二進制日誌文件名和二進制日誌中與準備好的備份對應的確切點的位置。

在啟動 MySQL 伺服器之前,您必須將此二進制日誌複製回原始文件夾

引用自:https://dba.stackexchange.com/questions/197829