MySQLスマートバックアップ

MySQLデータベースの完全なバックアップがあり、そこからいくつかのテーブルのみを復元する必要がある場合、多くの人が状況を抱えていると思います。 または、さらに悪いことに、新しいテーブルを上書きせずに、これらのテーブルの古いレコードを復元する必要があります。 また、ダンプに数百メガバイトかかる場合、プロセスはそれほど刺激的ではありません。

この記事では、Sypex Dumperに実装されたスマートバックアップの概念について説明します。 また、使用例を示します。

エントリー


Sypex Dumper 2の開発中に、多くのMySQLバックアップソリューションが分析されました。 そしてまず、当然、完全なmysqldumpのソースコードです。

mysqldumpでは、一連のSQLクエリを使用してファイルが作成されます。これらのファイルは、復元されると、単に区切り文字で分割され、MySQLに「供給」されます。 このようなスキームは、原則として長い間機能しており、実際、標準となっています。 ただし、このようなスキームには次の欠点があります。
  1. すべての設定はmysqldumpで行われ、これらのオプションすべてのチェックに余分な時間を費やす必要があります(一部のオプションはデータ行ごとにチェックされます)。
  2. 主な欠点の1つは最初の段落から続きます-他のオプションを使用してダンプを復元する必要がある場合は、これらのオプションを使用して再バックアップするか、ダンプを手動で「選択」する必要があります。
  3. mysqldumpには多くの設定がありますが、コンソールの性質により、バックアップするオブジェクトの選択を難しくすることは困難です(たとえば、キャッシュのあるテーブルはダンプされず、その構造のみがダンプに入れられます)。
  4. Mysqldumpは各オブジェクトと独立して機能するため、追加のゴミがダンプに頻繁に表示されます(たとえば、空のテーブルのインデックスの有効化/無効化、正しい順序でビューを配置できないために偽のテーブルを追加するなど)。
  5. リカバリー時には、ダンプ用ではなく、SQL照会用に設計されたプログラムが使用されます。このため、より徹底的な構文解析に時間がかかります。
  6. インポートされたすべてのソフトウェアの問題は、エンコーディングの扱いが面倒です。 これは特にRunetで感じられます。

一般に、新しいバックアップの概念を試すことにしました。

理論上のスマートバックアップ


次の原則が特定されています。
  1. ダンプは、必要最小限の情報のみを含む形式で実行されます。
  2. 最小のバックアップオプション、最大の実行速度。
  3. すべての補助SQLクエリ(DROP TABLEなど)をダンプから削除し、リカバリプロセス中に自動的に追加します。
  4. ダンプを復元するときに詳細設定を追加します。
  5. ダンプ専用のSQLパーサー。長いINSERTクエリを短いクエリに分割できます。
  6. ファイル自体にメタ情報を追加します。
  7. エンコーディングの自動で最も重要な修正作業。

そして-技術の問題。 この概念はSypex Dumper 2で実装されています。特殊文字を使用した区切り文字とラベルを使用する特別なダンプ形式も開発されています。 SQLファイルの解析を大幅に高速化できるもの。

たとえば、RAMディスクで解析速度がチェックされ、860 MBのファイルが0.5秒で飲み込まれ、phpMyAdminが同様のファイルで数十分かかりました(どちらの場合もクエリの実行がオフになりました)。

実際のスマートバックアップ


スマートバックアップの優れた機能の1つは、ダンプから個々のテーブル(およびその他のオブジェクト)を復元できることです。 さらに、異なる方法で復元することもできます。 最も単純で古典的なリカバリは、テーブルが削除され、新しいテーブルが作成され、データが注入される場合ですが、より複雑なオプションも可能です。

たとえば、テーブル内のデータの一部が削除または変更されており、それらを復元する必要があるが、同時に、最後のバックアップ以降に新しい行がテーブルに追加され、保存する必要がある場合。 この場合、目的のテーブルを選択し、ダンパーで回復モードを置き換えるだけで十分です。 その結果、ダンパーはダンプ内の行のみを復元し、新しい行はそのまま残ります。 削除された行のみを回復する必要がある場合は、INSERT IGNOREモードを使用できます。



また、ダンパーは、構造が変更されたテーブルにデータを復元できます(列が追加されるか、順序が変更されます)。 すべてのリカバリモードで、テーブルが存在するかどうかがチェックされ、存在しない場合は自動的に作成されます。

もう1つの便利な機能は、名前のプレフィックスを置き換えてテーブルを復元する機能です。
すべてのリカバリ設定(およびバックアップ)を保存して、数回クリックするか、クラウン(デモサイトに便利)で実行できます。

エンコーディング


多くの人が問題を処理するため、別の段落がエンコーディングに当てられます。
Sypex Dumperには非常に高度なエンコード機能があります。 すべてのデータをUTF-8に変換するわけではありませんが、自動モードでは単一のダンプで異なるエンコーディングのテーブルを静かに自動的にダイジェストします。 また、エンコード補正機能も提供します。

有名な商用スクリプトを含む多くのソフトウェアが、エンコード(たとえば、同じvBulletin 4)を適切に処理する方法をまだ知らないのは驚くべきことです。 はい、UTF-8エンコーディングでテーブルを作成し、UTF-8のヘッダーとテンプレートでエンコーディングを行いますが、UTF-8でMySQLへの接続のエンコーディングを設定することを忘れています。 その結果、MySQLはデータがlatin1にあると判断し、latin1からUTF-8に変換しようとします。 そして、そのような「ショール」で最悪なのは、テキストによる検索と並べ替えがうまく機能しないことを除いて、フォーラムが正常に見えるため、すぐに気付かないことです。

ダンパーの助けを借りて、これらの問題は非常に簡単に解決できます。 しかし、これは別の記事のトピックです。

ボーナス


無料のSypex Dumper Proライセンスを取得するための最速のプロモーションコードのボーナスとして:

SX-1ADN-ZXJN
SX-ZIPE-4K4G
SX-TXFE-ZZUF
SX-TGGS-TR8F
SX-OJUS-A9YL
SX-RGL5-HROR
SX-L9A5-BK2R
SX-MNOW-ZOSP
SX-FLFJ-GWIV
SX-6B3I-WMWU
SX-SVZY-TG1K
SX-AUOR-1FGD
SX-VJEQ-9FV5
SX-YTHD-OE9P
SX-LXXB-PRBQ
SX-LRYB-3IHV
SX-C89A-UPPI
SX-PXOI-3SFN
SX-EUF2-IQWH
SX-RWJA-JCZ8
SX-Y4BS-C038
SX-SSFS-KYV0
SX-FUJ0-7AZY
SX-GHLR-8N1Z
SX-PK15-HRIE
SX-I3HJ-9JYR
SX-JPKK-WLBP
SX-6RNH-XY3Q
SX-FV4W-WBKV
SX-7DK9-L9BP
SX-UFNH-MWDG
SX-V2Q8-NI6H
SX-PQT8-TLLN
SX-VSYE-NZOM
SX-0YM6-PGFS
SX-L0TD-WILK
SX-7X9P-LT04
SX-8LOQ-YWQC

ええ、夕方には最初の10個のコードが9分で飛ぶとは思わなかったので、4個ずつ分けて広げます。

そして最後の4つ
SX-IUPV-UUSO
SX-JBBN-9MD9
SX-PFCT-QQ4F
SX-DZZN-9DT1

取得したコードの購読を解除します。後で追加します。

Source: https://habr.com/ru/post/J131797/


All Articles