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つの方法の詳しい説明

推薦する

MySQL でコミットされていないトランザクション情報を見つける方法

少し前に、「ORACLE でコミットされていないトランザクションの SQL ステートメントを見つける...

Docker 経由で CentOS コンテナを作成する手順

目次序文コンテナ間の通信を容易にするためのブリッジネットワークを作成するCentOS7イメージを使用...

mysql 8.0.19 winx64.zip インストール チュートリアル

この記事は参考までにmysql 8.0.19 winx64.zipのインストールチュートリアルを記録...

VUE 3 テレポート コンポーネントと使用構文をすぐに使い始める

目次1. テレポートの紹介1.1. 複数のテレポートを使用する2. テレポートを使用する理由3. テ...

Docker を使用して ELK 環境を迅速にデプロイする方法の詳細な説明 (最新バージョン 5.5.1)

Linux サーバーに Docker をインストールした後、関連する公式 Docker イメージを...

MySQL における Decimal 型と Float Double 型の違い (詳細説明)

MySQL には、10 進数などの標準データ型だけでなく、float や double などの非標...

js 配列から重複を削除する 11 の方法

実際の業務や面接では、「配列の重複排除」の問題によく遭遇します。以下は、js を使用して実装された配...

CentOS7 に MySQL データベースをインストールしてデバッグする詳細な手順 [例]

この例では、デバッグ用の MySQL データベースをダウンロードしてインストールする必要があります。...

MySQL の非主キー自己増分使用例の分析

この記事では、例を使用して、MySQL の非主キーの自己増分の使用方法を説明します。ご参考までに、詳...

Reactプロジェクトで画像を導入するいくつかの方法

imgタグは画像を導入しますreactは実際にはjsリーダー関数を介してページをレンダリングするため...

ネイティブ js でカスタム難易度のマインスイーパ ゲームを実装する

この記事の例では、マインスイーパゲームを実装するためのjsの具体的なコードを参考までに共有しています...

Linux ドメイン ネーム サービス DNS 設定方法

DNSとはDNS の正式名称は Domain Name System で、ドメイン名解決システムを意...

MySQL サーバー 5.5 の接続失敗の解決策

mysqlに接続できない問題の解決方法を参考までに紹介します。具体的な内容は以下のとおりです。昨日は...

Docker に Zookeeper を素早くインストールする方法の詳細なチュートリアル

Docker で Zookeeper を素早くインストール会社を変わってから長らくZookeeper...

Virtualbox で Ubuntu 16.04 の起動時に共有ディレクトリを自動的にマウントする最良の方法

仮想マシンを使用する人は通常、操作と使用を容易にするために仮想マシン用の共有ディレクトリを設定します...