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 の詳細な例

推薦する

vueプロジェクトのマルチ環境設定(.env)の実装

目次マルチ環境構成とは何ですか? また、なぜそれが必要なのですか? .env ファイルはどこで設定さ...

dockerプライベート倉庫の構築と利用の詳細説明

1. リポジトリイメージをダウンロードする docker プルレジストリ 2. プライベートウェアハ...

CentOS での MySQL ログイン 1045 問題を解決する

アプリケーション全体を CentOS にデプロイする必要があるため、当然ながらデータベース操作は不可...

Centos での Python のアップグレードと Mongodb ドライバーのインストールに関する問題

Python バージョンを確認します (python -V)。2.7 未満の場合は、アップグレードす...

PostgreSQL マテリアライズドビュープロセス分析

この記事は主にPostgreSQLマテリアライズドビューのプロセス分析について紹介します。サンプルコ...

要素動的ルーティングブレッドクラムの実装例

マスターするには: localStorage、コンポーネントのカプセル化えーと、GIF に変換したビ...

ウェブデザインでテキストのサイズを合わせる方法: 小さなテキスト、大きな体験

iPadなどのモバイル端末の普及により、人々がモバイル端末で読書に費やす時間はますます長くなり、読...

Vue グローバルメソッドを設定する 2 つの方法

目次1. はじめに2. 最初の方法3. 2番目の方法要約する1. はじめにVue プロジェクトの開発...

IntelliJ IDEA で Java を使用して MySQL データベースに接続する方法の詳細な説明

1. MySQLデータベースをダウンロードし、インストールして設定するダウンロードアドレス: htt...

MySQLデータの挿入、更新、削除の詳細

目次1. 挿入2. 更新3. 削除1. 挿入 顧客に挿入( 顧客.顧客住所、 顧客.cust_cit...

MySQLでバッチを更新するいくつかの方法

通常、フィールド値を更新するには次の SQL ステートメントを使用します。 mytable を更新し...

Linuxファイル削除後にスペースが解放されない問題の詳しい説明

序文システム領域の使用量が大きすぎて消去する必要がある場合、または特定のファイルを消去する必要がある...

JavaScript デザインパターン コマンドパターン

コマンド パターンは、JavaScript デザイン パターンにおける動作デザイン パターンです。定...

CSS3 の display:grid、グリッドレイアウトの紹介

1. グリッドレイアウト(グリッド): Web ページをグリッドに分割し、さまざまなグリッドを組み合...

Vue の高度な構築プロパティの詳細な説明

目次1. ディレクティブカスタムディレクティブ2. ミックスイン3. 継承を拡張する4. 提供して注...