MySQLデータベースバックアップのさまざまな実装方法の概要

MySQLデータベースバックアップのさまざまな実装方法の概要

この記事では、MySQL データベースのバックアップを実装するさまざまな方法について説明します。ご参考までに、詳細は以下の通りです。

1. バックアップにmysqldumpを使用する

1. すべてのデータベースを完全にバックアップする

mysqldump -u root -p --all-databases > E:/all.sql

MySQL 8 より前では、ストアド プロシージャとイベントは mysql.proc テーブルと mysql.event テーブルに保存されていました。

MySQL 8 以降では、対応するオブジェクトの定義はデータ ディクショナリに保存され、これらのテーブルはバックアップされません。

ストアド プロシージャとイベントを含めるには、次のステートメントを使用します。

mysqldump -u root -p --all-databases --routines --events > E:/all.sql

2. ポイントインタイムリカバリ

ポイントインタイムリカバリを取得するには、--single-transactionと--master-dataを指定する必要があります。

--single-transaction バックアップの前に、トランザクション分離レベルが REPEATABLE READ モードに設定され、一貫性のあるバックアップを提供するために START TRANSACTION が実行されます。

--master-data サーバーのバイナリ ログの場所を SQL ファイルに出力します。

mysqldump -u root -p --all-databases --routines --events --single-transaction --master-data > E:/all.sql

--master-data = 2 は、エクスポート プロセス中に、現在のライブラリの binlog と POS ポイントが記録され、この行がエクスポート ファイルでコメント化されることを意味します。

--master-data = 1 は、エクスポート プロセス中に、現在のライブラリの binlog と POS ポイントが記録され、この行がエクスポート ファイルでコメント化されないことを意味します。

3. ライブラリからエクスポートするときに、メインライブラリのバイナリログの位置を記録する

mysqldump -u root -p --all-databases --routines --events --single-transaction --dump-slave > E:/all.sql

--dump-slave = 2 は、エクスポート プロセス中に、マスター データベースの binlog と POS ポイントが記録され、この行がエクスポート ファイルでコメント化されることを意味します。

--dump-slave = 1 は、エクスポート プロセス中に、マスター データベースの binlog と POS ポイントが記録され、この行がエクスポート ファイルでコメント化されないことを意味します。

4. データベースとテーブルのエクスポートを指定する

mysqldump -u root -p --databases データベース> E:/bak.sql
mysqldump -u root -p --databases データベース --tables データテーブル> E:/bak.sql

5. テーブルを無視する

mysqldump -u root -p --databases データベース --ignore-table=database.datatable> E:/bak.sql

6. 行を指定する

mysqldump -u root -p --databases データベース --tables データ テーブル --where="条件" > E:/bak.sql

または、limitを使用して結果セットを制限する

mysqldump -u root -p --databases データベース --tables データ テーブル --where="条件 LIMIT エントリ数" > E:/bak.sql

7. リモートサーバーのエクスポート

mysqldump -u root -p -h ホスト IP --all-databases --routines --events --triggers > E:/all.sql

8. 他のサーバーとデータを統合するためのバックアップ

mysqldump -u root -p --databases データベース --skip-add-drop-table --replace > E:/bak.sql

--skip-add-drop-table: エクスポート ファイルに drop table ステートメントを書き込みません。

--replace: エクスポートに insert ステートメントの代わりに replace into ステートメントを使用します。

2. バックアップにmysqlpumpを使用する

1. 並列処理、スレッド数を指定してバックアップ処理を高速化

mysqlpump --default-parallelism=8 > E:/all.sql

2. データベースごとにスレッド数を指定することもできます

mysqlpump -u root -p --parallel-schemas=4:database --default-parallelism=2 > E:/all.sql

3. データベースを除外または含める

mysqlpump -u root -p --include-databases=%t > E:/bak.sql

t で終わるすべてのデータベースをバックアップします。複数のデータベースはコンマで区切られます。データベース名には % または _ ワイルドカードを使用できます。

さらに、同様の --include-events、--include-routines、--include-tables、--include-triggers、--include-users などがあります。

mysqlpump -u root -p --exclude-databases=a% > E:/bak.sql

バックアップから a で始まるデータベースを除外します。複数のデータベースはコンマで区切られます。データベース名には % または _ ワイルドカードを使用できます。

さらに、--exclude-events、--exclude-routines、--exclude-tables、--exclude-triggers、--exclude-users などに類似したオプションもあります。

4. バックアップユーザー

mysqlpump -u root -p --exclude-databases=% --users > E:/user.sql

--exclude-users で特定のユーザーを除外することができます

mysqlpump --exclude-databases=% --exclude-users=root --users > E:/user.sql

5. 圧縮バックアップ

--compress-output=lz4 または --compress-output=zlib を使用することで

mysqlpump -u root -p --compress-output=lz4 > E:/all.lz4
mysqlpump -u root -p --compress-output=zlib > E:/all.zlib

次の文で解凍します

lz4_decompress E:/all.lz4 all.sql
zlib_decompress E:/all.zlib all.sql

3. バックアップにはmydumperを使用する

mydumper は別途インストールする必要があります。公式ウェブサイト: https://github.com/maxbube/mydumper/releases

1. 完全バックアップ

mydumper -u root --password=パスワード --outputdir エクスポートパス

2. 別のテーブルをバックアップする

mydumper -u root --password=password-B database-T データテーブル --triggers --events --routines --outputdir エクスポートパス

3. 正規表現を使用して特定のデータベースをバックアップする

mydumper -u root --password=password --regex '^(?!(mysql|test))' --outputdir エクスポートパス

バックアップから mysql および test データベースを除外します。

4. 大きなテーブルをバックアップする

mydumper -u root --password=password-B database-T データ テーブル --triggers --events --routines --rows=100000 -t 8 --trx-consistency-only --outputdir エクスポート パス

--rows はテーブルを何行に分割するかを示します

--trx-consistency-only は、innodb の場合にロックを最小限に抑えます。

-t はスレッド数を指定します

5. 圧縮バックアップ

mydumper -u root --password=password-B database-T data table-t 8 --trx-consistency-only --compress --outputdir エクスポートパス

6. データのみをバックアップする

スキーマをスキップしてデータのみをバックアップするには、--no-schemas オプションを使用します。

mydumper -u root --password=password-B database-T data table-t 8 --no-schemas --compress --trx-consistency-only --outputdir エクスポート パス

4. 通常のファイルをバックアップに使用する

データ ディレクトリ内のファイルを直接コピーしてバックアップできます。まず MySQL をシャットダウンし、ファイルをコピーしてから、MySQL を起動する必要があります。

5. バックアップにはxtrabackupを使用する

https://www.percona.com/downloads/XtraBackup/LATEST/

1. 完全バックアップ

xtrabackup --defaults-file=/etc/my.cnf --host=ホスト IP --user=ユーザー名 --password=パスワード --port=ポート --backup --parallel=3 --target-dir=バックアップディレクトリ

--defaults-file データベース設定ファイル

--backup バックアップ操作を実行する

--parallel バックアップ中の同時スレッド数

--target-dir バックアップファイルのディレクトリ

2. 増分バックアップ

xtrabackup --defaults-file=/etc/my.cnf \
--host=ホストIP \
--user=ユーザー名\
--password=パスワード\
--port=3306 \
--バックアップ\
--parallel=3 \
--target-dir=増分バックアップディレクトリ\
--incremental-basedir=フルバックアップディレクトリ\

増分バックアップは完全バックアップに基づいており、--incremental-basedir は完全バックアップディレクトリを指します。

MySQL 関連のコンテンツに興味のある読者は、このサイトの次のトピックをチェックしてください: 「MySQL インデックス操作スキルの概要」、「MySQL 共通関数の概要」、「MySQL ログ操作スキルの概要」、「MySQL トランザクション操作スキルの概要」、「MySQL ストアド プロシージャ スキルの概要」、および「MySQL データベース ロック関連スキルの概要」。

この記事が皆様のMySQLデータベース設計に役立つことを願っています。

以下もご興味があるかもしれません:
  • MySQLデータベースのリアルタイムバックアップの知識ポイントを詳しく解説
  • MySQLをバックアップする3つの方法の詳細な説明
  • MySqlデータベースをバックアップするいくつかの方法
  • MySQLデータベース入門:データベースバックアップ操作の詳細な説明
  • MySQL 学習データベースバックアップの詳細な説明

<<:  Vue が天気予報機能を実装

>>:  Dockerコンテナ同士を接続する3つの方法の詳しい説明

推薦する

VSCode の Remote-SSH を使用して Linux に接続し、リモート開発を行う

Remote-SSHをインストールして設定するまず VSCode を開き、拡張機能を見つけて、Rem...

CSSはボックスコンテナ(div)の高さを常に100%に設定します。

序文ブラウザをどのようにズームしても、ボックス コンテナーの高さを常に 100% に保つ必要がある場...

CSS メニューボタンアニメーション

ドロップダウンメニューを書くには、ボタンをクリックします。メニューの入り口はアイコンボタンをクリック...

CSS スクロールバースタイル変更コード

CSS スクロールバースタイル変更コード .scroll::-webkit-scrollbar { ...

1 つの記事で MySQL のプリコンパイルを理解する

1. プリコンパイルの利点私たちは皆、プリコンパイル機能を備えた JDBC の PreparedSt...

MySQL シリーズ データベース設計 3 つのパラダイム チュートリアルの例

目次1. データベース設計の3つのパラダイムに関する知識の説明1. デザインパラダイムとは何ですか?...

MySQL 8.0 の新しいリレーショナル データベース機能の詳細な説明

序文MySQL 8.0 の最新バージョンは 8.0.4 rc であり、正式版は近日中にリリースされる...

W3C組織はHTML4のスタイルに関する推奨事項を提供しています

これは、W3C 組織が HTML4 に対して提示したスタイル推奨事項です。残念ながら、ブラウザが独自...

CentOS7 上で KVM 仮想化プラットフォームを構築する (3 つの方法)

KVM はカーネルベースの仮想マシンの略で、Linux をハイパーバイザーに変換する Linux ...

Vueは大画面ページのスクリーン適応を実現します

この記事では、大画面ページのスクリーンアダプテーションを実現するためのVueの具体的なコードを参考ま...

MySQLの一般的なメモリ不足による起動失敗に対する完璧な解決策

1. MySQLが正常に起動しない場合は、エラーログ/var/log/mysql/error.log...

Nginx 設定ファイルの詳細な説明と最適化の提案ガイド

目次1. 概要2. nginx.conf 1) 設定ファイルの場所2) ワーカープロセス3) イベン...

Tomcatのクラスロードメカニズムのプロセスとソースコード分析

目次序文1. Tomcat クラスローダー構造図: 2. Tomcat のクラスロードプロセスの説明...

Linux システムで Code Cloud にプロジェクトをアップロードする方法

Code Cloudで新しいプロジェクトtest1を作成します。 公開鍵を取得するには次のコマンドを...

Docker は 2003 年の問題を解決するために MySQL リモート接続を導入しました

MySQLへの接続ここでは、リモート接続に navicat を使用します。MySQL に接続する前に...