MySQL データベースのデータをバックアップおよび復元する方法

目次

1.MySQLのバックアップ

バックアップ方法

完全バックアップ

差分バックアップ

増分バックアップ

2. 一般的なバックアップ方法

物理コールドスタンバイ

特別なバックアップ ツール mysqldump または mysqlhotcopy

増分バックアップのバイナリ ログを有効にする

サードパーティツールのバックアップ

3. MySQL の完全バックアップ

4. データベース完全バックアップの分類

物理的なコールド バックアップとリカバリ

mysqldumpのバックアップとリカバリ

5. 物理的なコールド バックアップとリカバリ

現在のデータベースを確認してください

まずデータベースサービスをシャットダウンします

関連する圧縮ツールのインストール

バックアップ用にデータファイルを解凍します

データを別のファイルに削除する

次にデータを解凍して復元します

ディレクトリに切り替えて、ファイルが復元されているかどうかを確認します。

サービスを開始して正常に開始できるかどうかを確認します

データが存在するかどうかを確認する

6. mysqldump のバックアップとリカバリ (ウォーム バックアップ)

完全バックアップを実行するには、完全なリポジトリを指定します

MySQL サーバー内のすべてのデータベースの完全バックアップを作成します。

指定したライブラリ内の一部のテーブルの完全バックアップ

バックアップファイルを表示する方法

データ復旧を実行する

ソースを使用してデータベースを復元する

データベース障害のシミュレーション

データベースを復元する

データが復旧したかどうかを確認する

mysql ステートメントを使用してデータベースを復元する

データベースのリカバリを実行する

データベースにログインして復元されているかどうかを確認します

7. 増分バックアップ

まずバイナリログ機能を有効にします

データベース MySQL サービスを再起動します

バイナリログファイルをバックアップする

バイナリログファイルの内容を表示する

更新すると新しいバイナリ ログ ファイルが生成されます

データベースに入って新しいデータを作成します

新しいデータを作成してバイナリ ログ ファイルの内容を追加します

新しいバイナリ ログ ファイルを表示する


1.MySQLのバックアップ

バックアップの主な目的は災害復旧であり、アプリケーションのテスト、データ変更のロールバック、履歴データのクエリも実行できます。、監査など、ログはバックアップの復元において非常に重要な役割を果たします。

MySQL ログのデフォルトの保存場所は、/etc/local/mysql/data ディレクトリ内のログ ファイルです。

データ バックアップは、物理バックアップと論理バックアップに分けることができます。物理バックアップは、データベース オペレーティング システムの物理ファイル (データ ファイルやログ ファイルなど) のバックアップです。このタイプのバックアップは、必要な大規模なデータベースに適しています。問題が発生したときにすぐに復元できる重要なデータベース

コールド バックアップ (オフライン バックアップ): データベースが閉じているときに実行されます (tar)

ホット バックアップ (オンライン バックアップ): データベースは実行中であり、データベースのログ ファイル (MySQLbackup) に依存します。

ウォーム バックアップ: データベースがロックされている (書き込み可能ではなく読み取り可能) 間にバックアップ操作 (MySQLdump) を実行します。

バックアップ方法

バックアップ方法には、完全バックアップ、差分バックアップ、増分バックアップの 3 つがあります。

完全バックアップ

データの完全バックアップ、つまりデータベース全体、データベース構造、ファイル構造のバックアップが毎回実行され、保存されるのはバックアップ完了時点のデータベースであり、差分バックアップやバックアップの基礎となります。増分バックアップ。完全バックアップのバックアップおよびリカバリ操作は非常にシンプルで便利ですが、データの重複が多く、大量のディスク領域を消費し、バックアップ時間も非常に長くなります。

毎回フルバックアップを実行すると、バックアップファイルの容量が大きくなり、重複データも大量に含まれることになりますので、リストアする場合はフルバックアップファイルを直接使用してください。

差分バックアップ

最後の完全バックアップ以降に変更されたすべてのファイルをバックアップします。バックアップ時点は最後の完全バックアップからであり、バックアップ データの量はますます大きくなります。データを復元するときは、最後の完全バックアップと最適な差分バックアップのみを復元する必要があります。

各差分バックアップは最後の完全バックアップの後にデータをバックアップするため、重複したデータが表示される可能性があります。リストアする場合は、フルバックアップデータをリストアしてから、差分バックアップデータをリストアしてください。

増分バックアップ

最後の完全バックアップまたは増分バックアップ以降に変更されたファイルのみがバックアップされます。最後の完全バックアップまたは最後の増分バックアップの時刻が時点として使用されます。バックアップ期間中はデータのみが変更されるため、バックアップされるデータの量は少なく、占有スペースも少なく、バックアップ速度も高速です。ただし、復元する場合は、最後の完全バックアップと最後の増分バックアップの間のすべての増分を順番に復元する必要があります。途中のバックアップ データが破損すると、データが失われます。各増分バックアップはバックアップです。最後に完了した完全バックアップ時間

各増分バックアップでは、最後の完全バックアップまたは増分バックアップの後にデータがバックアップされます。データの重複はなく、データの復元に追加のディスク領域を占有することはありません。完全バックアップと増分バックアップは順番に復元する必要があります。

2. 一般的なバックアップ方法

物理コールドスタンバイ

バックアップ中はデータベースを閉じ、データベースファイル(tar)を直接パッケージ化するため、バックアップ速度が速く、リカバリも最も簡単です。

特別なバックアップ ツール mysqldump または mysqlhotcopy

一般的に使用される論理バックアップ ツール mysqlhotcopy である Mysqldump は、MyISAM テーブルと ARCHIVE テーブルをバックアップする機能のみを備えています。

増分バックアップのバイナリ ログを有効にする

増分バックアップを実行するには、バイナリ ログを更新する必要があります

MySQL は増分バックアップをサポートしており、増分バックアップを実行する場合はバイナリ ログを有効にする必要があります。バイナリ ログ ファイルは、バックアップ ポイントの実行後に行われたデータベースの変更を回復するために必要な情報のコピーをユーザーに提供します。増分バックアップ (最後の完全バックアップまたは増分バックアップ以降に発生したデータ変更を含む) を実行する場合は、バイナリ ログを更新する必要があります。

サードパーティツールのバックアップ

無料の MySQL ホット バックアップ ソフトウェア Percona XtraBackup mysqlbackup

3. MySQL の完全バックアップ

  • データベース全体、データベース構造、ファイル構造のバックアップです。

  • 保存されるのはバックアップ完了時のデータベースです。

  • 差分バックアップと増分バックアップの基礎です

  • MySQL の完全バックアップの長所と短所

1. 利点: バックアップとリカバリの操作が簡単で便利

2. 短所: データの重複が多く、バックアップ領域を多く消費し、バックアップと復元に時間がかかります。

4. データベース完全バックアップの分類

物理的なコールド バックアップとリカバリ

MySQL データベースを閉じ、tar コマンドを使用してデータベース フォルダーを直接パッケージ化し、既存の MySQL ディレクトリを直接置き換えます。

mysqldumpのバックアップとリカバリ

MySQL に付属のバックアップ ツールを使用すると、MySQL を簡単にバックアップできます。指定したライブラリとテーブルを SQL スクリプトとしてエクスポートできます。コマンド mysq| を使用して、バックアップ データをインポートします。

5. 物理的なコールド バックアップとリカバリ

現在のデータベースを確認してください

コマンド: データベースを表示します。

テーブルを表示します。

まずデータベースサービスをシャットダウンします

再度コールドバックアップを実行する

命令:systemctl stop firewalld

関連する圧縮ツールのインストール

コマンド: yum -y install xz

バックアップ用にデータファイルを解凍します

コマンド:tar Jcvf /opt/mysql_all_$(date +%F).tar.xz /usr/local/mysql/data

データを別のファイルに削除する

命令:mv /usr/local/mysql/data /opt

次にデータを解凍して復元します

命令:mkdir /usr/local/mysql/data

tar ZXvf /opt/mysql_all_2023-07-18.tar.xz -C /usr/local/mysql/data

ディレクトリに切り替えて、ファイルが復元されているかどうかを確認します。

命令:cd /usr/local/mysql/data

サービスを開始して正常に開始できるかどうかを確認します

コマンド: systemctl start mysqld.service

データが存在するかどうかを確認する

コマンド: データベースを表示します。

テーブルを表示する; 

6. mysqldump のバックアップとリカバリ (ウォーム バックアップ)

完全バックアップを実行するには、完全なリポジトリを指定します

コマンド: mysqldump -u root -p [パスワード] --databases [ライブラリ名] > [バックアップパスファイル名].sql

MySQL サーバー内のすべてのデータベースの完全バックアップを作成します。

コマンド: mysqldump -u root -p[パスワード] --all-databases > [バックアップ パス ファイル名].sql

指定したライブラリ内の一部のテーブルの完全バックアップ

コマンド: mysqldump -u root -p [パスワード] ライブラリ名 [テーブル名 1] [テーブル名 2] ... > [バックアップパスファイル名].sql

バックアップファイルを表示する方法

コマンド: grep -v "^--" /opt/[ファイル名].sql | grep -v "^/" | grep -v "^$"

データ復旧を実行する

mysqldumpを使用してエクスポートしたファイルの場合、インポート方法
①sourceコマンド
②mysqlコマンドを使用できます。

ソースを使用してデータベースを復元する

まずデータベースにログインします

コマンド: mysql -u [ユーザー名] -p [パスワード]

データベース障害のシミュレーション

コマンド: データベース [データベース名] を削除します。

データベースを復元する

コマンド:source [バックアップファイルのフルパス].sql;

データが復旧したかどうかを確認する

コマンド: データベースを表示します。

テーブルを表示します。

mysql ステートメントを使用してデータベースを復元する

データベース障害を再度シミュレートしてデータを失う

コマンド: データベース [データベース名] を削除します。

データベースのリカバリを実行する

データベースを終了し、コマンドラインから復元します。

コマンド: mysql -u[ユーザー名] -p[パスワード] <[バックアップ ファイルへのフル パス].sql

データベースにログインして復元されているかどうかを確認します

コマンド: mysql -u[ユーザー名] -p[パスワード]

データベースを表示します。

テーブルを表示します。

7. 増分バックアップ

まずバイナリログ機能を有効にします

増分バックアップは完全バックアップに基づく必要があるため、増分バックアップを実行する前に、データベース内の現在のデータの完全バックアップを作成して、バックアップの開始時のデータの整合性を確認してください。

コマンド: vim /etc/my.cnf

データベース MySQL サービスを再起動します

コマンド: systemctl restart mysqld

バイナリログファイルをバックアップする

コマンド: cp /usr/local/mysql/data/mysql-bin.000001 /opt

バイナリログファイルの内容を表示する

コマンド:mysqlbinlog --no-defaults --base64-output=decode-rows -v /opt/mysql-bin.000001

バイナリログの注意が必要な部分

1. at: 開始位置の点

2. end_log_pos: 終了位置

3. タイムスタンプ: 210712 11:50:30

4. SQL文

更新すると新しいバイナリ ログ ファイルが生成されます

命令:mysqladmin -uroot -p flush-logs

データベースに入って新しいデータを作成します

コマンド: mysql -u[ユーザー名] -p[パスワード]

新しいデータを作成してバイナリ ログ ファイルの内容を追加します

命令:create database lll;

新しいバイナリ ログ ファイルを表示する

コマンド:mysqlbinlog --no-defaults --base64-output=decode-rows -v /usr/local/mysql/data/mysql-bin.000002

 

おすすめ

転載: blog.csdn.net/Liu_Fang_Hong/article/details/131773530
おすすめ