ホームページ >データベース >mysql チュートリアル >MySQLのバックアップとリカバリの詳しい説明
mySQL には、論理バックアップと物理バックアップがあります。論理バックアップの最大の利点は、さまざまなストレージ エンジンのバックアップに同じ方法を使用できることです。物理バックアップは異なり、ストレージ エンジンが異なればバックアップ方法も異なります。
MySQL では、論理バックアップは mysqldump を使用してデータベース内のデータをテキスト ファイルとしてバックアップし、バックアップされたファイルを表示および編集できます。バックアップはバックアップ範囲に応じて、次の 3 種類のバックアップに分けられます。
指定したデータベースまたはデータベース内の一部のテーブルをバックアップします
mysqldump [オプション] データベース名 [テーブル名] > data.sql
指定した複数のデータベースをバックアップします
mysqldump [オプション] –database > .sql データベース 1 データベース 2 データベース 3...
すべてのデータベースをバックアップします
mysqldump [オプション] –all-database > data.sql
分析: [オプション] バックアップ待機中に必要な権限情報。 mysqldump には多くのオプションがあり、mysqldump –help で表示できます。 データ バックアップの一貫性を確保するには、MySQL ストレージ エンジンが北にある場合、-l パラメータを追加する必要があります。これは、バックアップ期間中、すべてのテーブルが読み取り専用になることを意味します。 、書かれていません。ただし、InnoDB エンジンの場合は、-single-transaction を使用できます。 data.sql によってバックアップされたデータ ファイル
パラメータ:
l: すべてのテーブルのロックを表します
f: 新しい日付ファイルの生成を表します
この例では、xxpt データベース内のすべてのテーブルを dequan.sql テーブルにバックアップします。コマンドは次のとおりです:
mysqldump -uroot -p xxpt >dequan.sql
上記のバックアップ パスを指定しなかったため、デフォルトでは現在のパスにバックアップされるため、バックアップはD:wampbinmysqlmysql5.6.17bin パス。
Mysqldumpの回復も非常に簡単で、入力としてバックアップを実行するだけです。結果は次のとおりです。
mysql -uroot -p dbname
不完全なリカバリには、ポイントインタイムベースのリカバリとロケーションベースのリカバリが含まれます。時刻および位置は、バイナリログ(binlog log)における時刻および位置に対応する。
は午後 4 時から午後 5 時までにデータ ルーム エラーを設定します。これはリカバリ中にスキップする必要があります。まず、binlog ログを見てみましょう。たとえば、午後 4 時以降のデータの更新は誤りであるため、リカバリ中にスキップする必要があります。午後 5 時以降のデータの削除は正しいため、保持する必要があります。
1. mysql -uroot -p dbname による
ロケーションのリカバリを使用する場合は、まず binlog ログ ファイルを確認し、ロケーション番号を特定してから、次のコマンドを使用して復元する必要があります。 mysqlbinlog D:wampbinmysqlmysql5. 6.17datamybinlog.000012 –stop-position=716406|mysql -uroot -p
5時以降に操作を再開
D:wampbinmysqlmysql5.6.17datamybinlog.000012 –start-position=723613|mysql - uroot -p
リカバリ: まず Mysql サービスを停止し、MySQL データ ファイルをオペレーティング システム レベルで復元してから、Mysql サービスを再起動し、Mysqlbinlog ツールを使用してバックアップ以降のすべての binlog を復元します。
mysqlhotcop db_name [ディレクトリ]
最初にデータベース内のすべてのテーブルに読み取りロックを追加し、次にデータを cp します。
すべてのテーブルを読み取りロックでフラッシュテーブルをロックする
実現するには、SELECT...INTO OUTFILE...+[options]コマンドを使用します
オプションパラメータについては次のとおりです
デフォルトのパスは、データ:
mysqldump を使用します
mysqldump -u username -T targetDir dbname tableName[options]
例:
mysqldump -uroot -p -T D:/wamp/bin/mysql/mysql5.6.17/ xxpt t1
次のように 2 つのファイルが生成されます。 写真:
t1.txt に保存されたデータ情報、t1.sql ファイルの内容は次のとおりです
-- MySQL dump 10.13 Distrib 5.6.17, for Win32 (x86) ---- Host: localhost Database: xxpt -- ------------------------------------------------------ -- Server version 5.6.17-log /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */;/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET TIME_ZONE='+00:00' */;/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; ---- Table structure for table `t1`--DROP TABLE IF EXISTS `t1`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `t1` ( `id1` int(11) NOT NULL DEFAULT '0', `id2` int(3) unsigned zerofill NOT NULL DEFAULT '000') ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; -- Dump completed on 2016-04-18 19:30:51
方法 1:
データをファイルにロード
eg :
load data infile 'D:/wamp/bin/mysql/mysql5.6.17/t1.txt' into table t1;
方法 2: mysqlinport を使用する
上記は MySQL のバックアップとリカバリの詳細な説明です。関連コンテンツの詳細については、PHP 中国語 Web サイト (www.php. cn) に注目してください。