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 
  • >最新バージョンのダウンロードインストール:https://www.percona.com/downloads/XtraBackup/LATEST/
  • >この実験では2.4バージョンのダウンロードアドレスを使用します.https://www.percona.com/downloads/Percona-XtraBackup-2.4/LATEST/
  • 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にすでに存在するファイルをコピーする必要がある場合は、エラーが発生します.
  • バックアップ生成された関連ファイル
  • innobackupexバックアップを使用すると、xtrabackupを呼び出してすべてのInnoDBテーブルをバックアップし、テーブル構造定義に関するすべての関連ファイル(.frm)、MyISAM、MERGE、CSV、ARCHIVEテーブルの関連ファイルをコピーします.また、トリガとデータベース構成情報に関するファイルもバックアップします.これらのファイルは、時間名のディレクトリに保存され、バックアップ時にinnobackupexはバックアップディレクトリに次のファイルを作成します.
    (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               |
    +--------------------+
    
  • 2バックアップフォルダ
  • を作成
    root:~ # mkdir /xbackup
    # xbackup 
  • 3バックアップ
  • 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 |
    +------------------+-----------+
    
  • 開始終了lsn号
  • バージョン情報
  • 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
    
  • 4還元
  • 注:リストア時に別のホストでサービスを停止する必要があります
    root:~ # systemctl stop  mariadb.service 
    root:~ # rm -rf /var/lib/mysql/*            
    
  • 5ファイルをターゲットホスト
    root:~ # scp -rp /xbackup/ 192.168.64.141:/data/backup/
  • にコピーする.
  • 6リストア1)準備:データが一致していることを確認し、完了したトランザクションをコミットし、未完了のトランザクション
    root:~ # xtrabackup --prepare --target-dir=/data/backup/xbackup
  • をロールバックする.
    2)データベースディレクトリへコピー注意:データベースディレクトリは空でなければならない.MySQLサービスは起動できない.
     root:~ # xtrabackup --copy-back --target-dir=/data/backup/xbackup --datadir=/var/lib/mysql
  • 7権限変更
  • chown -R mysql:mysql /var/lib/mysql/
  • 8サービス開始
  • いくつかの高バージョンバックアップで発生した問題

    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ターゲットホストでファイルを整理する

  • mariadb 1を閉じる)完全バックアップを準備しておく.このオプション--apply-log-only未完了トランザクションのロールバックを阻止する
    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