MySQLデータベースのバックアップとリカバリ(4)-mysqldumpパラメータの詳細な説明

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に設定すると変更前にコメントが追加されます。

おすすめ

転載: blog.csdn.net/weixin_44377973/article/details/107081758