目次
特別なバックアップ ツール mysqldump または mysqlhotcopy
ディレクトリに切り替えて、ファイルが復元されているかどうかを確認します。
6. mysqldump のバックアップとリカバリ (ウォーム バックアップ)
完全バックアップを実行するには、完全なリポジトリを指定します
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