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

推薦する

MySQLデータ移行の概要

目次序文: 1. データ移行について2. 移行計画と留意点要約:序文:日常業務では、テーブル、データ...

Docker データ管理 (データ ボリュームとデータ ボリューム コンテナー) の詳細な説明

実稼働環境で Docker を使用する場合、多くの場合、データを複数のコンテナ間で永続化または共有す...

JavaScript を使用してカルーセル効果を実装する

この記事では、カルーセルマップの特殊効果を実現するためのJavaScriptの具体的なコードを参考ま...

Linuxはデュアルネットワークカードボンドとドライバーインターフェースを使用する

債券とは何かNIC ボンドは、実稼働シナリオでよく使用されるテクノロジーです。複数の NIC を 1...

ウェブページのフラッシュアニメーションが表示されない問題の解決策

<br />解決手順は次のとおりです。スタート -> 実行 -> reged...

Ubuntu 20.04 は Wi-Fi に接続します (2 つの方法)

最近Ubuntu 20.04をインストールしましたが、Wi-Fiに接続できず、Wi-Fiアイコンも表...

Vueはミックスインを使用してコンポーネントを最適化します

目次ミックスインの実装フック関数のマージプロジェクト実践伸ばす要約するVue は mixins AP...

jQueryはすべての選択と逆選択操作ケースを実装します

この記事では、全選択と逆選択操作を実装するためのjQueryの具体的なコードを参考までに共有します。...

HTML の基礎必読 - CSS スタイルシートの包括的な理解

CSS (カスケーディング スタイル シート) は、HTML Web ページを美しくするために使用さ...

Mysql でよく使用される時間、日付、変換関数の概要

この記事では、主に実際のアプリケーションでよく使用されるMySQLの時刻と日付、および変換関数につい...

DELL R730 サーバーの構成 RAID とインストール サーバー システムとドメイン制御の詳細なグラフィック チュートリアル

最近、会社で DELL R730 サーバーを購入したのですが、偶然次のチュートリアルを見つけたので、...

JS 関数のアンチシェイクと関数スロットリングを理解する方法

目次概要1. 関数デバウンス2. 機能スロットリング(スロットル)概要関数アンチシェイクと関数スロッ...

Windows 10 での Hyperledger Fabric 1.4 環境構築プロセスの図

内容Hyperledger fabric1.4環境のWindows 10でのセットアップ前提条件Wi...

Tomcat のセッションと Cookie の詳細な説明

序文HTTP はステートレスな通信プロトコルです。各リクエストは互いに独立しており、サーバーは以前の...

Docker は次の「Linux」になれるか?

Linux オペレーティング システムは過去 20 年間にわたってデータ センターに革命をもたらし...