ホームページ >データベース >mysql チュートリアル >xtrabackup を使用して mysql データベースをバックアップする方法に関するガイダンス

xtrabackup を使用して mysql データベースをバックアップする方法に関するガイダンス

巴扎黑
巴扎黑オリジナル
2017-07-19 11:32:031167ブラウズ

xtrabackupはperconaが提供するmysqlバックアップツールで、データベースに接続してデータベースデータをバックアップする物理バックアップツールです。 innodb ストレージ エンジンの場合、完全バックアップと増分バックアップがサポートされます。 myisam ストレージ エンジンは増分バックアップのみをサポートします。 xtrabackup の innodb の増分バックアップは、テーブル スペースの LSN に基づいているため、テーブル スペースは複数のデータ ブロックに分割され、データ ブロック データが変更されると、対応するシーケンス番号が付けられます。シーケンス番号が更新されます。完全バックアップはすべてのデータ ブロックをバックアップすることを意味しますが、増分バックアップは完全バックアップの最後のデータ ブロックのシリアル番号に基づいて、最新のデータ ブロックのシリアル番号までバックアップします。 myisam はテーブルスペースをサポートしていないため、増分バックアップを実行できません。

Xtrabackup は、percona が提供する mysql データベース バックアップ ツールです。公式の紹介によると、これは innodb および xtradb データベースのホット バックアップを実行できる世界で唯一のオープン ソース ツールでもあります。

Xtrabackup には主に 2 つのツールが含まれています:

xtrabackup: innodb および xtradb テーブル内のデータのホット バックアップ用のツールです。他のタイプのテーブルおよびデータ テーブル構造をバックアップすることはできません。カプセル化された Perl スクリプトは、MyISAM テーブルとデータ テーブル構造をバックアップおよび復元できます。


xtrabackup によってバックアップされたデータはデータ復元を実行しています。事前に次の点に注意する必要があります:

  • 増分バックアップがある場合は、増分バックアップと完全バックアップをマージする必要があります。復元する前にバックアップします。

  • トランザクションをサポートするテーブルのバックアップの場合は、最初にトランザクション ログのロールバックとコミット操作を実行する必要があります。

  • 複数の連続したバックアップがある場合。操作では、トランザクション ログをコミットするだけでよく、ロールバックする必要はありません。トランザクションのロールバックは、すべてのバックアップ操作が合成された後にのみ実行できます。

  • この記事では、詳細な実験手順を通じて xtrabackup の使用方法を示します。

    実験手順

    centos7 仮想マシン、データベースの mariadb-5.5.52 バージョンをインストールし、まず SQL スクリプトを通じて hellodb テスト ライブラリをインポートします。これには学生データ テーブルが含まれます。この実験は学生に対して実行されます。 table、コマンドは次のとおりです:
  1. mysql -uroot < hellodb.sql

  2. xtrabackup をインストールするには、公式 Web サイトからインストール パッケージをダウンロードし、yum を通じてインストールします。ダウンロード サイトは次のとおりです。インストール プロセスはここでは説明しません。

  3. xtrabackup_binlog_info: バイナリ ログの内容を記録します。バックアップ タイプ、開始および終了 lsn 番号などの情報

xtrabackup_info: すべてのライブラリをバックアップするかどうか、圧縮するかどうか、バックアップによって実行されたコマンドなどの詳細なバックアップ情報を記録します


xtrabackup_logfile: トランザクション ログを記録します。これはバイナリ ファイルなので表示できません


    1. First;データベースでバイナリ ログが有効になっていることを確認します。有効になっているかどうかを確認するには、mysql -uroot < hellodb.sql

  1. 安装xtrabackup,可以从官方网站下载安装包,然后通过yum进行安装,下载站点为:,此处不再演示安装过程;

  2. xtrabackup的主要命令为innobackupex,通过innobackupex --help或者man手册可以获取到帮助信息;

  3. 数据库已经导入,此时可以进行数据库的备份操作,先进行数据库的全量备份和恢复:

  • xtrabackup_binlog_info:记录二进制日志的内容;

  • xtrabackup_checkpoints:记录备份类型,开始和结束的lsn编号等备份信息;

  • xtrabackup_info:记录更详细的备份信息,如是否为所有库备份,是否压缩,备份执行的命令等信息;

  • xtrabackup_logfile:记录的是事务日志,为二进制文件,不可查看;

  1. 首先确保数据库已经开启二进制日志,通过show global variables like 'log_bin';命令可以看到是否已经开启,通过show binary logs;可以看到目前正在使用的二进制日志是哪一个;

  2. 通过xtrabackup进行备份,数据备份到/data/backup目录下,备份完成会在指定目录下生成一个以当前时间命名的文件夹:
    innobackupex -u root /data/backup

  3. 文件夹内容如下:
    xtrabackup を使用して mysql データベースをバックアップする方法に関するガイダンス

  4. 此时就备份成功了,然后演示数据库的恢复操作。注意:恢复之前需要首先停止数据库服务:
    innobackupex --apply-log 2017-07-13_21-02-07/ #首先进行事务日志的提交和回滚     innobackupex --copy-back 2017-07-13_21-02-07/ #进行数据恢复,会自动把数据恢复到mysql的数据目录下show global variables like 'log_bin';

    を使用します。どのバイナリ ログが現在有効であるかを確認できます。使用中;
  5. xtrabackup によるバックアップ。バックアップが完了すると、現在の時刻に基づいた名前のフォルダーが
  6. innobackupex に生成されます。 -u root /data/backup
  7. フォルダーの内容は次のとおりです:
xtrabackup を使用して mysql データベースをバックアップする方法に関するガイダンス
  • この時点で、バックアップは成功し、データベースの回復操作が示されます。注: リカバリの前にデータベース サービスを最初に停止する必要があります:
      innobackupex --apply-log 2017-07-13_21-02-07/ #最初にトランザクション ログをコミットしてロールバックします innobackupex --copy-back 2017-07 - 13_21-02-07/ #データ復元を実行すると、データは自動的に mysql データ ディレクトリに復元されます
    • 🎜復元が成功した後は、復元されたデータのすべての所有者とグループは root ユーザーになり、root ユーザーになる必要があります。データベースにログインするには mysql ユーザーである必要があります 🎜🎜🎜🎜 データベースにログインすると、すべてのデータが復元されたことがわかります。 🎜🎜🎜🎜🎜今回は、増分バックアップとリカバリの操作を示します: 🎜🎜🎜🎜🎜実稼働環境では、バイナリ ファイルはポイントインに使用できるため、バイナリ ログとデータ ファイルを別のディスクに配置することをお勧めします。可能な限り損失を確実にするための回復時間 データが少なくなり、バイナリ ファイルも失われると大量のデータが失われる可能性があります 🎜
    • データのセキュリティを確保するために、データの完全バックアップを必ず実行してください。

    1. いくつかの新しい情報をデータベースに挿入し、その後、増分バックアップを実行します。データベース;

    2. 次のコマンドを使用してデータベースの増分バックアップを実行すると、/data/backup ディレクトリに time にちなんだ名前の新しいフォルダーが生成されます:
      innobackupex -u root - p 1234567a --incremental --incremental-basedir=/data/backup/2017-07-13_21-07-23/ /data/backup/innobackupex -u root -p 1234567a --incremental --incremental-basedir=/data/backup/2017-07-13_21-07-23/ /data/backup/

    3. 然后停掉数据库服务,删除数据库目录下的所有数据,进行数据恢复操作,步骤如下:
      innobackupex --apply-log --redo-only 2017-07-13_22-16-19/ #进行全量备份的事务提交,但是不回滚未提交事务,因为未提交事务可能在下次的增量备份中提交     innobackupex --apply-log --redo-only 2017-07-13_22-16-19/ --incremental-dir=2017-07-13_22-18-34/ #进行增量备份和全备份的合成已经事务提交工作     innobackupex --apply-log 2017-07-13_22-16-19/ #对于全备份也没有完成的事务进行回滚操作     innobackupex --copy-back 2017-07-13_22-16-19/ #此时采用全备份即可恢复数据,不再需要增量备份,因为已经进行了备份的合成操作

    4. 次に、データベース サービスを停止し、データベース内のすべてのデータを削除します。データベース ディレクトリにアクセスし、データ回復操作を実行する場合の手順は次のとおりです:

      innobackupex --apply-log --redo-only 2017-07-13_22-16-19/ # 完全バックアップのトランザクションをコミットしますが、コミットされていないトランザクションはロールバックしないでください。コミットされていないトランザクションは次の増分バックアップで送信される可能性があるためです。 innobackupex --apply-log --redo-only 2017-07-13_22-16-19/ --incremental-dir=2017-07-13_22 -18-34/ #増分バックアップを実行する完全バックアップでトランザクション送信作業を合成します innobackupex --apply-log 2017-07-13_22-16-19/ #完全バックアップで完了していないトランザクションのロールバック操作 innobackupex --copy- back 2017-07-13_22- 16-19/ #現時点では、バックアップ合成操作が実行されているため、増分バックアップを使用してデータを復元できます。

    5. また、復元されたデータの所有者とグループを変更し、データベースにログインして完全なデータを確認する必要があります。これで、実験的なデモンストレーションは完了しました。
    注意:🎜🎜🎜🎜

    以上がxtrabackup を使用して mysql データベースをバックアップする方法に関するガイダンスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    声明:
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。