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

推薦する

DockerでRedisを使用するための詳細な手順

1. はじめにこの記事では、Docker を使用して Redis を探索する方法を説明します。 Do...

Linuxの運用・保守の基礎知識から上級者向け知識までをまとめました

運用保守エンジニアは、初期段階では非常に大変な仕事です。この期間中、コンピューターの修理、ネットワー...

Vue の共通 A​​PI と高度な API の概要

目次次のチェックミックスイン$強制更新設定、削除フィルター指令その他の単純な共通プロパティとメソッド...

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

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

React コンポーネントのコンストラクタとスーパーの知識ポイントのまとめ

1. Reactでクラス宣言する際のヒント 上記のように、Child クラスは class キーワー...

怖いハロウィーン Linux コマンド

ハロウィーンではありませんが、Linux の不気味な側面に注目する価値はあります。幽霊、魔女、ゾンビ...

EasyUEFI を使用して Windows 10 で USB ドライブなしで Ubuntu 18 をインストールする

1. BIOSを確認するまず、コンピュータの起動モードを確認します。win+R と入力し、msinf...

HTMLの基礎を詳しく解説(第2部)

1. リストリスト ulコンテナーには、一貫した構造とスタイルを持つテキストまたはグラフの形式が読...

LinuxにMySQLデータベース5.6のソースコードをインストールし、ログインユーザーのパスワードを変更する

この記事では、主に Linux で MYSQL データベースをインストールする方法について説明し、M...

mysqldump を使用して MySQL データをバックアップする方法

1. mysqldump の紹介mysqldump は、MySQL に付属する論理バックアップ ツー...

vue+elementuiは、共有箇条書きボックスの追加と変更の完全なコードを実装します。

目次1. 新しいII. 変更element-ui は、Ele.me のフロントエンド チームが開発者...

この記事では、CSSのようなJSモジュールをインポートする方法を説明します。

目次序文構築可能なスタイルシートとは何ですか? CSSモジュールスクリプトの使用インポートアサーショ...

Docker+Jenkins+Gitlab+Djangoアプリケーションデプロイ実践の詳細な説明

1. 背景インターネット アプリケーションの急速な更新と反復という状況では、従来の手作業や単純なスク...