Mysql の大きな SQL ファイルの高速リカバリ ソリューションの共有

Mysql の大きな SQL ファイルの高速リカバリ ソリューションの共有

序文

MySQL データベースを使用する過程では、データベースのバックアップと復元が必要になることがよくあります。最も簡単で便利な方法は、SQL データ ファイルをエクスポートおよびインポートしてバックアップと復元を完了することです。ただし、プロジェクトが大きくなるにつれて、データの量はますます大きくなり、復元のたびに頭痛の種になります。

最近、プロジェクトから 5GB のデータベースをダウンロードしてローカルに復元したところ、40~50 分かかりました。今後のデータ拡張を考えると、データ量が増え、復元コストも増えるので、調べてみたところ、以下の設定で復元効率を向上できることがわかりました。

1. バックアップパラメータを変更する

まず、データベースをバックアップする際のパラメータを変更して、リカバリ効率を向上させる必要があります。

mysqldump --extended-insert

mysqldump の --extended-insert パラメータはバッチ挿入を示し、複数の挿入ステートメントを 1 つのステートメントにマージします。バックアップのインポート効率は、--extended-insert をオンにしていない場合と比べて 3 ~ 4 倍異なります。

--extended-insert=false を使用してエクスポートされた sql ファイル データは、1 行に 1 つの挿入ステートメントがあり、実行効率が非常に低いです。

--extended-insert=true でエクスポートされたテーブルは下図のようになります。非常に長い挿入文がバッチで挿入されます。

2. MYSQLクイック挿入パラメータを調整する

データベース ストレージ エンジンが MYISAM の場合、このパラメータを 512M または 256M に設定できます。MyISAM は特別なツリー キャッシュを使用してバッチ挿入を高速化します。

関連ドキュメント: https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_bulk_insert_buffer_size

デフォルト値は8M = 8388608バイトです

挿入バッファサイズを確認する

'%bulk%' のような変数を表示します。

挿入バッファサイズを設定する(グローバル)

グローバル bulk_insert_buffer_size を 1024*1024*512 に設定します。

挿入バッファサイズを設定する(セッション)

bulk_insert_buffer_size を 1024*1024*256 に設定します。

Mysqlを再起動したときに保持される値を設定する必要がある場合は、この設定をmy.cnfに追加する必要があります。

[mysqld]
バルク挿入バッファサイズ = 256M

3. 検査項目を閉じる

Innodb エンジンの場合、一部のシステム チェックをオフにして、より高速な挿入ソリューションを実現できます。

//自動コミットをオフにする SET autocommit=0;

// ユニークチェックをオフにする set unique_checks = 0;

//外部キーチェックをオフにする SET foreign_key_checks=0;

// バックアップ時に --extended-insert パラメータを有効にする

Innodb バルクデータロードに関する関連ドキュメント: https://dev.mysql.com/doc/refman/5.7/en/optimizing-innodb-bulk-data-loading.html

4. 練習

上記の最適化を行うと、MySQL のリカバリ効率が即座に向上します。上記のパラメータの最適化を行う前は、データベースの復元に毎回 40 分かかっていました。設定後は、約 16 分しかかかりません。私のデータベース ファイルの容量は約 5 GB です。

今のところはこれですべてです。Tiguan に関するより良い解決策や提案があれば、ぜひ私と話し合ってください。コーディングを楽しんでください。

要約する

以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。

以下もご興味があるかもしれません:
  • MySQL5.7 mysqldump バックアップとリカバリの実装
  • MySQLデータを復元する2つの方法
  • 単一のMySQLテーブルを復元する手順
  • MySQL データベースのバックアップとリカバリの実装コード
  • MySQLはmysqldump+binlogを使用して、削除されたデータベースの原理分析を完全に復元します。
  • MySQLデータのバックアップとリカバリの実装方法の分析
  • Windows で削除された MySQL 8.0.17 のルート アカウントとパスワードを回復する方法
  • MySQL のスケジュールされたバックアップ、削除、および回復機能を実装するシェル スクリプト
  • MySQL バイナリログデータ復旧: 誤ってデータベースを削除した場合の詳細な説明
  • MySQL の完全なデータベース バックアップからデータベースとテーブルを復元する方法
  • 時点に基づくMySQLクイックリカバリソリューション

<<:  DockerとDocker-Composeの使用例

>>:  Vue の双方向イベントバインディング v-model の原理についての簡単な説明

推薦する

HTTP ステータス コード

このステータス コードは、リクエストのステータスに関する情報を提供し、サイトとリクエストされたページ...

Vueのprops設定の詳細な説明

<テンプレート> <div class="demo">...

MySQL ストアド プロシージャの in、out、inout パラメータの例と概要

ストアドプロシージャ1. ストアドプロシージャを作成し、グローバル変数を表示する mysql>...

JavaScript の基礎におけるデータ型の詳細な説明

目次1. データ型1.1 なぜデータ型が必要なのか? 1.2 変数のデータ型1.3 データ型の分類2...

docker+devpi を使用してローカル pypi ソースをビルドする方法

以前、開発で頻繁に pip ダウンロードを使用する必要がありました。pip ソースを国産ソースに変更...

Angularの親子コンポーネント通信の詳細な説明

目次概要1. 入力および出力プロパティの概要2. 入力属性3. プロパティバインディングは親コンポー...

フォームアクションとonSubmitの例

まず、action はフォームの属性です。HTML5 では必須の属性値として定義されています。onS...

vueはEle.me UIを使用してteambitionのフィルタリング機能を模倣します

目次問題の説明一般的な機能効果は次のとおりです。思考分析完全なコード要約する問題の説明Teambit...

ショートビデオ(Douyin)の透かし除去ツールの実装コード

目次1. まず最初のリンクを取得する2. ブラウザでこのリンクを開いてください3. アドレスを開くと...

判定条件を使用してCSSファイルをインポートする

解決策 1: HEAD に次のコードを挿入するなど、HTML ドキュメントで条件付きインポートを使用...

Zabbix による VMware Exsi ホストの監視のグラフィカルな手順

1. 仮想化 vcenter に入り、ブラウザでログインし (クライアントは設定する場所を見つけませ...

Angularコンポーネントの仲介モードの詳細な説明

目次1. 仲介業者モデル2. 例1. 見積コンポーネントに購入ボタンを追加する2. 親コンポーネント...

知らないかもしれないmysqldumpパラメータ

前回の記事で、mysqldump バックアップ ファイルに記録されるタイムスタンプ データは UTC...

Docker の win ping 失敗コンテナ回避ガイド

win docker-desktopを使ってコンテナ開発に接続し、ネットワーク上で色々試してみたいと...

MySQL でデータの重複挿入を回避する 4 つの方法

最も一般的な方法は、フィールドに主キーまたは一意のインデックスを設定することです。重複データを挿入す...