MySQL データのバックアップと復元のサンプル コード

MySQL データのバックアップと復元のサンプル コード

1. データのバックアップ

1. mysqldumpコマンドを使用してバックアップする

mysqldump コマンドは、データベース内のデータをテキスト ファイルにバックアップします。テーブルの構造とテーブル内のデータは、生成されたテキスト ファイルに保存されます。

mysqldump コマンドの動作原理は単純です。まず、バックアップする必要があるテーブルの構造を検出し、テキスト ファイルに CREATE ステートメントを生成します。次に、テーブル内のすべてのレコードを 1 つの INSERT ステートメントに変換します。次に、これらのステートメントを通じてテーブルを作成し、データを挿入できます。

1. データベースをバックアップする

mysqldump の基本構文:

mysqldump -u ユーザー名 -p dbname table1 table2 ...-> バックアップ名.sql 

で:

dbname パラメータはデータベースの名前を示します。

table1 および table2 パラメータは、バックアップするテーブルの名前を示します。空白のままにすると、データベース全体がバックアップされます。
BackupName.sql パラメータ テーブルは、バックアップ ファイルの名前を設計するために使用されます。ファイル名の前に絶対パスを追加できます。データベースは通常、接尾辞 sql を持つファイルに分割されます。

ルートユーザーとしてテストデータベースの person テーブルをバックアップします。

mysqldump -u root -p テスト担当者 > D:ackup.sql

生成されたスクリプトは次のとおりです。

ファイルの先頭には、MySQL のバージョン、バックアップ ホスト名、データベース名が記録されます。

ファイル内の「--」で始まるコメントは SQL 言語のコメントであり、「/*!40101」などの形式で始まるコメントは MySQL に関連するコメントです。 40101 は MySQL データベースのバージョン番号です。MySQL バージョンが 1.11 以上の場合には、/*!40101 から */ までの内容が SQL コマンドとして実行されます。4.1.1 未満の場合にはコメントとして扱われます。

2. 複数のデータベースをバックアップする

文法:

mysqldump -u ユーザー名 -p --databases dbname2 dbname2 > Backup.sql

--databases オプションを追加し、その後に複数のデータベースを指定します。

mysqldump -u root -p --databases テスト mysql > D:ackup.sql

3. すべてのデータベースをバックアップする

すべてのデータベースをバックアップするための mysqldump コマンドの構文は次のとおりです。

mysqldump -u ユーザー名 -p -すべてのデータベース > バックアップ名.sql

例:

mysqldump -u -root -p -すべてのデータベース > D:all.sql

2. データベースディレクトリ全体を直接コピーする

MySQL には、MySQL 内のデータベース ファイルを直接コピーするという非常に簡単なバックアップ方法があります。これは最も簡単で最速の方法です。

ただし、その前に、コピー中にデータベース データが変更されないようにサーバーを停止する必要があります。データベースのレプリケーション プロセス中にデータが書き込まれると、データの不整合が発生します。これは開発環境では問題ありませんが、運用環境でバックアップ サーバーを許可することは困難です。

注意: この方法は、InnoDB ストレージ エンジンを使用するテーブルには適用できませんが、MyISAM ストレージ エンジンを使用するテーブルには便利です。同時に、復元時に MySQL バージョンは同じである必要があります。

3. クイックバックアップにはmysqlhotcopyツールを使用する

名前からホットバックアップであることがわかります。したがって、mysqlhotcopy は MySQL サーバーを停止せずにバックアップをサポートします。さらに、mysqlhotcopy のバックアップ方法は mysqldump よりも高速です。

mysqlhotcopy は、主に Linux システムで使用される Perl スクリプトです。高速バックアップのために、LOCK TABLES、FLUSH TABLES、cp を使用します。

原則: まず、バックアップするデータベースに読み取りロックを追加し、次に FLUSH TABLES を使用してメモリ内のデータをハードディスク上のデータベースに書き戻し、最後に、バックアップするデータベース ファイルをターゲット ディレクトリにコピーします。

コマンドの形式は次のとおりです。

[root@localhost ~]# mysqlhotcopy [オプション] dbname1 dbname2 backupDir/

dbname: データベース名;

backupDir: バックアップを保存するフォルダー。

一般的なオプション:

--help: mysqlhotcopy ヘルプを表示します。
--allowold: バックアップ ディレクトリに同じバックアップ ファイルが存在する場合は、古いバックアップ ファイルに _old を追加します。
--keepold: バックアップ ディレクトリに同じバックアップ ファイルが存在する場合、古いバックアップ ファイルは削除されずに名前が変更されます。
--flushlog: この生成後、データベースへの更新がログに記録されます。
--noindices: インデックス ファイルではなく、データ ファイルのみをバックアップします。
--user=username: ユーザー名を指定するために使用します。これは -u に置き換えることができます。
--password=password: パスワードを指定するために使用され、-p に置き換えることができます。 -p を使用する場合、パスワードと -p の間にスペースはありません。
--port=ポート番号: アクセス ポートを指定するために使用します。-P に置き換えることができます。
--socket=ソケットファイル: ソケットファイルを指定するために使用します。-S に置き換えることができます。

mysqlhotcopy は mysql に含まれていないため、Perl データベース インターフェイス パッケージをインストールする必要があります。ダウンロード アドレスは次のとおりです: http://dev.mysql.com/downloads/dbi.html

現在、このツールは MyISAM テーブルのみをバックアップできます。

2. データの復元

1. mysqldumpコマンドバックアップを使用してデータベースを復元する

構文は次のとおりです。

mysql -u root -p [dbname] < バックアップ.sq

例:

mysql -u ルート -p < C:backup.sql

2. 直接コピーディレクトリのバックアップを復元する

この方法で復元する場合は、2 つの MySQL データベースのバージョン番号が同じであることを確認する必要があります。

この関数は MyISAM テーブルには有効ですが、InnoDB テーブルには有効ではありません。InnoDB テーブルのテーブル スペースは直接コピーできません。

要約する

以下もご興味があるかもしれません:
  • MySQL データベースをインポートおよびエクスポートする方法 (バックアップと復元)
  • MySQLはコマンドを使用してデータベースをバックアップおよび復元します
  • PHPはMySQLデータベースのバックアップと復元のクラスインスタンスを実装します
  • innobackupex と xtrabackup を使用して MySQL のビッグデータをバックアップおよび復元するチュートリアル
  • MySQL独自のコマンドを使用してデータベースのバックアップと復元を実行する方法
  • MySQL データベースのバックアップと復元によく使用されるコマンドの概要
  • mysql ndb クラスタ データベースをバックアップおよび復元する方法
  • MySQL データベースをバックアップ/復元するための PHP コード

<<:  Vue のスロットリング関数使用時の落とし穴ガイド

>>:  Linux の総合システム監視ツール dstat の詳細な例

推薦する

ウォーターフォールフローレイアウトを実装する3つの方法

序文今日、Xianyuを閲覧していたとき、各行の高さが同じではないことに気付きました。調べてみると、...

ウェブサイトはグレー表示されています。画像を含む互換コードはすべてのブラウザをサポートしています

通常、国喪の日、大地震の日、清明節には、ウェブサイト全体を灰色にして、故人への哀悼の意を表します。そ...

Vue+express+Socketでチャット機能を実現

この記事では、チャット機能を実現するためのVue+express+Socketの具体的なコードを参考...

react+reduxを使用してカウンター機能を実装すると発生する問題

Redux はシンプルな状態マネージャーです。その歴史をたどることはしません。使用法の観点から見ると...

MySQLは既存のコンテンツを保持し、後でコンテンツを追加します

このコマンドは、データ テーブル ff_vod を変更し、vod_url フィールドの内容の後に 9...

Linux マルチスレッドにおけるフォークとミューテックス ロック プロセスの例

目次質問: 1. 最初の試み2. 合理的な分析3. 問題解決(1) pthread_join()の使...

mysql maxとwhere間の実行問題の概要

mysql maxとwhereの間の実行の問題SQLを実行します: テーブル「grades」を作成し...

MySQL データ ウェアハウスを保護するための 5 つのヒント

さまざまなソースからデータを集約することで、中央倉庫を作成できます。データ ウェアハウスは、ビジネス...

Linux環境でrmによって誤って削除されたファイルを回復する方法

目次序文RMの後には希望はあるのでしょうか?最前線を使ってファイルを取得するextundeleteを...

Docker ポート マッピングと外部アクセス不可の問題

Docker コンテナはサービスを提供し、ポート 8888 をリッスンします。外部からアクセスできる...

Vue 仮想 DOM クイックスタート

目次仮想DOM仮想DOMとは何か仮想DOMの役割Vue の仮想 DOM vノードvNodeとはvNo...

mysql 5.6.23 winx64.zip インストール詳細チュートリアル

WindowsにMySQLの圧縮バージョンをインストールする方法の詳細については、以下を参照してくだ...

Vue h関数の使い方の詳しい説明

目次1. 理解2. 使用1. h() パラメータ2. 使い方が簡単3. カウンターケースを実装する4...

Windows 10 でカスタムドメイン名をバインドするように Hexo と GitHub を構成する方法

Hexo は Windows 10 でカスタムドメイン名を GitHub にバインドしますまずドメイ...