MySQLデータベースのバックアップとリカバリ(4)-mysqldumpパラメータの詳細な説明
mysqldumpは、MySQLに付属の論理バックアップコマンドです。バックアップファイルには、実行前にデータベースオブジェクト定義とテーブルデータを生成するために実行できる一連のSQLステートメントが含まれています。mysqldumpコマンドは、CSV、その他の区切りテキストまたはXML形式で出力を生成することもできます。
mysqldumpコマンドのフォーマットは次のとおりです。
mysqldump [options] [db_name [tbl_name ...]]
一般的に使用される[オプション]パラメータは次のとおりです。
1.ログインユーザー名を指定します
-uuser_name
--user=user_name
説明:MySQLがサーバーに接続するときに使用するユーザー名を指定します。
2.ログインホストを指定する
--host = host_name
-h host_name
注:このパラメーターは省略できます。デフォルトのホストはlocalhostです。
3.ログインパスワードを指定する
-pyour_pass
--password[=your_pass]
説明:サーバーに接続するときに使用されるパスワード。
4.ホストへの接続に使用するポート番号を指定します
-P port_num
--port=port_num
説明:ホストへの接続時に使用される(localhost以外のホストへの接続に使用される)TCP / IPポート番号を指定します。
5.すべてのデータベースをバックアップします
--all-databases
-A
注:-databasesオプションを使用してすべてのデータベースに名前を付けるのと同じです。
6.指定されたデータベースをバックアップします
--databases db_name1 db_name2 ...
-B db_name1 db_name2 ...
説明:
(1)このオプションを省略すると、mysqldumpは最初の名前のパラメーターをデータベース名として扱い、後続の名前をテーブル名として扱い、CREATE DATABASEおよびUSEステートメントを含めます。
(2)このオプションを使用して、すべての名前パラメーターをデータベース名として扱います。CREATEDATABASEおよびUSEステートメントは、各新しいデータベースの前の出力に含まれます。
(3)このオプションを使用して、INFORMATION_SCHEMAデータベースとperformace_schemaデータベースをバックアップできます。これら2つのデータベースは、-all-databasesオプションを使用してもバックアップされません。
7、バックアップテーブル構造のみ
-d
--no-data
注:テーブル構造のみがエクスポートされ、テーブル内のデータはエクスポートされません。
8.テーブル内のデータのみをバックアップします
-t
--no-create-info
9.エクスポートする前にログファイルを更新します(新しいbinlogファイルを生成します)
-F
--flush-logs
注:データのエクスポート後、データの回復を容易にするために新しいbinlogファイルが生成されます。
10.指定された条件を満たすレコードをエクスポートする
-w
--where='where-condition'
説明:
(1)指定されたクエリ条件を満たすレコードをエクスポートします。
(2)条件に単一引用符が含まれている場合、パラメーターは次のように二重引用符を使用できます。
[root@Mysql11 tmp]# mysqldump -uroot -p123456 hist stu --where="name='jack'" > /tmp/stu_name.sql;
mysqldump: [Warning] Using a password on the command line interface can be insecure.
[root@Mysql11 tmp]# cat /tmp/stu_name.sql
..........
--
-- Table structure for table `stu`
--
DROP TABLE IF EXISTS `stu`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `stu` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` char(20) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
`address` varchar(20) DEFAULT NULL,
`phone` char(11) DEFAULT NULL,
`dept_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `stu`
--
-- WHERE: name='jack'
LOCK TABLES `stu` WRITE;
/*!40000 ALTER TABLE `stu` DISABLE KEYS */;
INSERT INTO `stu` VALUES (3,'jack',20,'Zhengzhou','13675871454',1);
/*!40000 ALTER TABLE `stu` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
..............
-- Dump completed on 2020-07-02 12:16:55
11.エクスポートファイルの形式はテキストファイルです
-T
--tab=path-to-some-directory
説明:指定されたテーブルごとに、table_name.sqlファイル(SQL CREATEコマンドを含む)とtable_name.txtファイル(データを含む)を作成します。
12.エクスポートされたテキストファイルの形式を指定する
--fields-enclosed-by=...
--fields-optionally-enclosed-by=...
--fields-escaped-by=...
--fields-terminated-by=...
注:これらのオプションは-Tオプションとともに使用され、対応するLOAD DATA INFILE節と同じ意味を持っています。
例えば:
[root@Mysql11 tmp]# mysqldump -uroot -p123456 hist stu --tab='/tmp' --fields-terminated-by=','
mysqldump: [Warning] Using a password on the command line interface can be insecure.
[root@Mysql11 tmp]# ls /tmp
stu.sql stu.txt
[root@Mysql11 tmp]# cat /tmp/stu.txt
1,zhangsan,20,Xinxiang,15578941258,1
2,tom,20,Xinxiang,13778942222,1
3,jack,20,Zhengzhou,13675871454,1
4,john,21,Zhengzhou,13937681111,2
5,mark,22,Aanyang,13055882233,2
13.エクスポートされたデータの整合性を確保する
--single-transaction
説明:
(1)このパラメーターは、innoDBエンジンのデータベースバックアップに適しています;
(2)innoDBテーブルがバックアップされるとき、オプション–single-transactionは、通常、バックアップの一貫性を確保するために有効になります。実際、その動作原理は、このセッションを設定することです分離レベルは次のとおりです。このセッションがバックアップされるときに、他のセッションによって送信されたデータが表示されないようにするための繰り返し可能な読み取り。
14.エクスポートされたファイルの文字セットを指定します
--default-character-set=name
例えば:
[root@Mysql11 tmp]# mysqldump -uroot -p123456 --databases hist --default-character-set=utf8 > /tmp/hist.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.
15.現在のサーバーbinlogの場所とファイル名を出力ファイルに追加します
--master-data=[1,2]
説明:このパラメーターは、現在のサーバーのバイナリログを記録します。これは、show master status、ステータス(ファイル、位置)の値を実行することと同じです。
例えば:
[root@Mysql11 tmp]# mysqldump -uroot -p123456 --master-data=1 hist > /tmp/hist.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.
[root@Mysql11 tmp]# cat /tmp/hist.sql
.............
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=154;
--
-- Table structure for table `course`
--
......................
16.エクスポートしたデータファイルにメインライブラリのbinlogの場所とファイル名を追加します
--dump-slave=[1,2]
説明:
(1)現在のサーバーがスレーブサーバーの場合、このコマンドを使用してstop slaveを実行し、マスターbinlogファイルと場所を取得します。バックアップが完了すると、自動的にstart slaveが実行されてスレーブサーバーが起動します。–dump-slaveを使用して、スレーブサーバーから現在のデータが実行されるマスターbinglogの位置のみを取得します。つまり、relay_mater_log_file、exec_master_log_pos、マスターサーバーの現在のbinlog実行位置ではなく、マスターとスレーブのデータ遅延に依存します。
(2)このパラメーターはスレーブサーバーで実行されます。これは、show slave statusを実行することと同じです。
(3)1に設定するとCHANGE MASTERコマンドでデータファイルに出力され、2に設定すると変更前にコメントが追加されます。