percona-xtrabackupはデータベースの完全、増分バックアップとリストア(いくつかのバージョンの問題とピットを含む)を実現します.
10514 ワード
注:バージョン変更
xtrabackupバージョンが2.4にアップグレードされた後、以前の2.1と比較して大きな変化がありました:innobackupex機能はすべてxtrabackupに統合され、binaryプログラムは1つしかありません.また、互換性を考慮するため、innobackupexはxtrabackupのソフトリンクとして機能しています.すなわち、xtrabackuは現在、非Innodbテーブルバックアップをサポートしており、Innobackupexは次のバージョンで削除されています.xtrabackupでinnobackupexを置き換えることをお勧めします
ここでmariadb 5.5、centos 7のデフォルトバージョンで、より高いバージョンでは多くのバージョンの問題が深刻です。
個人テストデータベースバージョン10以上xtrabackupは使用できません
今回はデータベース5.5バージョンを使用してホスト10.4バージョンのリカバリが可能
まずxtrabackupをインストールします
yum install percona-xtrabackup EPEL
yum install /root/percona-xtrabackup-24-2.4.13-1.el7.x86_64.rpm # yum
使用方法:バックアップ
:innobackupex [option] BACKUP-ROOT-DIR
オプションの説明:--user:このオプションはバックアップアカウントを表します--password:このオプションはバックアップのパスワードを表します--host:このオプションはバックアップデータベースのアドレスを表します--databases:このオプションが受け入れるパラメータはデータベース名で、複数のデータベースを指定する場合は、互いにスペースで区切る必要があります;たとえば、「xtra_test dba_test」というように、データベースを指定するときに、テーブルのみを指定することもできます.たとえば、「mydatabase.mytable」です.このオプションはinnodbエンジンテーブルに対して無効ですか、またはすべてのinnodbテーブル--defaults-fileをバックアップします.このオプションは、MySQL構成をどのファイルから読み込むかを指定します.コマンドラインの最初のオプションの場所--incremental:このオプションは、インクリメンタルバックアップを作成することを示します.--incremental-basedir--incremental-basedir:このオプションは、前回のフルバックアップまたはインクリメンタルバックアップのディレクトリとして指定する必要があります.--incrementalと同時に使用する--incremental-dir:このオプションは、リストア時にインクリメンタルバックアップするディレクトリ--include=nameを表します:テーブル名を指定し、フォーマット:databasename.tablename-apply-log:一般的に、バックアップが完了した後も、バックアップされたデータにはコミットされていないトランザクションやコミットされたがデータファイルに同期されていないトランザクションが含まれている可能性があるため、リカバリ操作にはデータが使用できません.このため、データファイルは一貫性のない状態で処理されます.このオプションは、コミットされていないトランザクションをロールバックし、コミットされたトランザクションをデータファイルに同期することによってデータファイルを一貫性のある状態にします.use-memory:--apply-logオプションとともにprepareバックアップを使用する場合、crashrecovery割り当てのメモリサイズ、単位バイト、1 MB、1 M、1 G、1 GBなども使用できます.推奨1 G--export:個別のテーブルをエクスポートしてから他のMysqlにインポートすることを示します--redo-only:このオプションはprepare base full backupで、インクリメンタルバックアップをマージするときに使用しますが、最後のインクリメンタルバックアップのマージは含まれません.
元に戻す
:innobackupex --copy-back [ ] BACKUP-DIR
オプション
innobackupex--move-back[オプション][--defaults-group=GROUP-NAME]BACKUP-DIRオプション説明:--copy-back:データ復旧時にバックアップデータファイルをMySQLサーバのdatadir--move-backにコピーする:このオプションは--copy-backと似ています.唯一の違いはファイルをコピーせず、ファイルを目的地に移動することです.このオプションでbackupファイルを削除するには、注意しなければなりません.使用シーン:十分なディスク領域がない同僚はデータファイルとBackupコピーを保持します
1.datadirディレクトリは空でなければなりません.innobackupex--force-non-emptydirectoriesオプションの指定を指定しない限り、--copy-backup選択は2を上書きしません.実行中のインスタンスrestoreをdatadirディレクトリに3.ファイルのプロパティが保持されるため、ほとんどの場合、インスタンスを起動する前にファイルの所有者をmysqlに変更する必要があります.これらのファイルはバックアップを作成するユーザーchown-R mysql:mysql/data/mysqlに属します.ユーザーがinnobackupexを呼び出す前に4-force-non-empty-directoriesを完了する必要があります.このパラメータを指定すると、innobackupex--copy-backまたは--move-backオプションが空でないディレクトリにファイルを転送するようになります.既存のファイルは上書きされません.--copy-backおよび--move-backファイルがバックアップディレクトリからdatadirにすでに存在するファイルをコピーする必要がある場合は、エラーが発生します.
(1)xtrabackup_info:innobackupexツール実行時の関連情報、バージョン、バックアップオプション、バックアップ時間、バックアップLSN(log sequence numberログシリアル番号)、BINLOGの場所を含む
(2)xtrabackup_checkpoints:バックアップタイプ(フルまたはインクリメンタルなど)、バックアップステータス(preparedステータスであるかどうかなど)、およびLSN範囲情報.各InnoDBページ(通常16 kサイズ)には、ログシリアル番号LSNが含まれます.LSNはデータベースシステム全体のシステムバージョン番号であり、各ページに関連するLSNは、このページが最近どのように変更されたかを示すことができる.
(3)xtrabackup_binlog_info:MySQLサーバが現在使用しているバイナリログファイルをバックアップするまでのバイナリログイベントの場所でbinlogベースのリカバリを実現
(4)backup-my.cnf:バックアップコマンドで使用する構成オプション情報
(5)xtrabackup_logfile:生成されたログファイルをバックアップする
1フルバックアップリストア
root:~ # mysqlshow
+--------------------+
| Databases |
+--------------------+
| hellodb |
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
root:~ # mkdir /xbackup
# xbackup
root:~ # xtrabackup --backup --target-dir=/xbackup
......
190506 12:38:27 Executing UNLOCK TABLES
190506 12:38:27 All tables unlocked
190506 12:38:27 Backup created in directory '/xbackup/'
190506 12:38:27 [00] Writing /xbackup/backup-my.cnf
190506 12:38:27 [00] ...done
190506 12:38:27 [00] Writing /xbackup/xtrabackup_info
190506 12:38:27 [00] ...done
xtrabackup: Transaction log of lsn (1628321) to (1628321) was copied.
190506 12:38:27 completed OK!
root:~ # mysql -e 'show master logs;'
+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| mysql-bin.000001 | 245 |
+------------------+-----------+
root:~ # cat /xbackup/xtrabackup_info
uuid = c991e905-6fb9-11e9-83d3-000c29f89546
name =
tool_name = xtrabackup
tool_command = --backup --target-dir=/xbackup
tool_version = 2.4.13
ibbackup_version = 2.4.13
server_version = 5.5.60-MariaDB
start_time = 2019-05-06 12:45:33
end_time = 2019-05-06 12:45:35
lock_time = 0
binlog_pos = filename 'mysql-bin.000001', position '245'
innodb_from_lsn = 0
innodb_to_lsn = 1628321
partial = N
incremental = N
format = file
compact = N
compressed = N
encrypted = N
root:~ # systemctl stop mariadb.service
root:~ # rm -rf /var/lib/mysql/*
root:~ # scp -rp /xbackup/ 192.168.64.141:/data/backup/
root:~ # xtrabackup --prepare --target-dir=/data/backup/xbackup
2)データベースディレクトリへコピー注意:データベースディレクトリは空でなければならない.MySQLサービスは起動できない.
root:~ # xtrabackup --copy-back --target-dir=/data/backup/xbackup --datadir=/var/lib/mysql
chown -R mysql:mysql /var/lib/mysql/
いくつかの高バージョンバックアップで発生した問題
root:~ # xtrabackup --backup --target-dir=/data/backup/
xtrabackup: recognized server arguments:
xtrabackup: recognized client arguments: --backup=1 --target-dir=/data/backup/
190506 12:07:38 version_check Connecting to MySQL server with DSN 'dbi:mysql:;mysql_read_default_group=xtrabackup' (using password: NO).
190506 12:07:38 version_check Connected to MySQL server
190506 12:07:38 version_check Executing a version check against the server...
190506 12:07:38 version_check Done.
190506 12:07:38 Connecting to MySQL server host: localhost, user: not set, password: not set, port: not set, socket: not set
Using server version 10.4.4-MariaDB
xtrabackup version 2.4.13 based on MySQL server 5.7.19 Linux (x86_64) (revision id: 3e7ca7c)
xtrabackup: uses posix_fadvise().
xtrabackup: cd to /var/lib/mysql/
xtrabackup: open files limit requested 0, set to 1024
xtrabackup: using the following InnoDB configuration:
xtrabackup: innodb_data_home_dir = .
xtrabackup: innodb_data_file_path = ibdata1:12M:autoextend
xtrabackup: innodb_log_group_home_dir = ./
xtrabackup: innodb_log_files_in_group = 2
xtrabackup: innodb_log_file_size = 50331648
InnoDB: Number of pools: 1
InnoDB: Unsupported redo log format. The redo log was created with MariaDB 10.4.4. Please follow the instructions at http://dev.mysql.com/doc/refman/5.7/en/upgrading-downgrading.html
2インクリメンタルバックアップとフルバックアップの組み合わせ
準備:
root:~ # mkdir /xbackup/{base,inc1,inc2}
root:~ # tree /xbackup/
/xbackup/
├── base #
├── inc1 #
└── inc2 #
3 directories, 0 files
1フル・バックアップ
root:~ # xtrabackup --backup --target-dir=/xbackup/base
2初めてデータを修正し、2つのレコードを追加
insert teachers (name,age)value('xiaoming',30);
insert teachers (name,age)value('xiaoqiang',40);
3初回インクリメンタルバックアップ
root:~ # xtrabackup --backup --target-dir=/xbackup/inc1 --incremental-basedir=/xbackup/base
----------------------------
xtrabackup: Transaction log of lsn (1628972) to (1628972) was copied.
190506 13:34:40 completed OK!
4 2回目のデータ変更、2つのレコードの追加
insert teachers (name,age)value('xiaohong',20);
insert teachers (name,age)value('xiaowang',30);
MariaDB [hellodb]> select * from teachers;
+-----+---------------+-----+--------+
| TID | Name | Age | Gender |
+-----+---------------+-----+--------+
| 1 | Song Jiang | 45 | M |
| 2 | Zhang Sanfeng | 94 | M |
| 3 | Miejue Shitai | 77 | F |
| 4 | Lin Chaoying | 93 | F |
| 5 | xiaoming | 30 | NULL |
| 6 | xiaoqiang | 40 | NULL |
| 7 | xiaohong | 20 | NULL |
| 8 | xiaowang | 30 | NULL |
+-----+---------------+-----+--------+
5 2回目のインクリメンタル・バックアップ
root:~ # xtrabackup --backup --target-dir=/xbackup/inc2 --incremental-basedir=/xbackup/inc1
6コピーファイル
root:~ # scp -r /xbackup/* 192.168.64.141:/data/backup
7ターゲットホストでファイルを整理する
root:~ # xtrabackup --prepare --apply-log-only --target-dir=/data/backup/base
)1回目のインクリメンタルバックアップを完全バックアップroot:~ # xtrabackup --prepare --apply-log-only --target-dir=/data/backup/base --incremental-dir=/data/backup/inc1
3にマージする)2回目のインクリメンタルバックアップを完全バックアップにマージする:最後のリストアにオプションを追加する必要はありません--apply-log-only root:~ # xtrabackup --prepare --target-dir=/data/backup/base --incremental-dir=/data/backup/inc2
4)整理したファイルをmariadbディレクトリにコピーする
root:~ # rm -rf /var/lib/mysql/*
root:~ # xtrabackup --copy-back --target-dir=/data/backup/base --datadir=/var/lib/mysql
5)リストア属性:chown-R mysql:mysql/var/lib/mysql 6)サービス開始:systemctl start mariadb
転載先:https://blog.51cto.com/9019400/2389813