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

설명 : 호스트에 연결할 때 사용되는 TCP / IP 포트 번호를 지정합니다 (localhost가 아닌 호스트에 연결하는 데 사용됨).

5. 모든 데이터베이스 백업

--all-databases
-A

참고 : -databases 옵션을 사용하고 모든 데이터베이스의 이름을 지정하는 것과 동일합니다.

6. 지정된 데이터베이스 백업

--databases db_name1 db_name2 ...
-B db_name1 db_name2 ...

설명 :
(1)이 옵션을 생략하면 mysqldump는 이름 매개 변수를 데이터베이스 이름으로, 후속 이름을 테이블 이름으로 취급하고 CREATE DATABASE 및 USE 문을 포함합니다.
(2)이 옵션을 사용하여 모든 이름 매개 변수를 데이터베이스 이름으로 취급하고 CREATE DATABASE 및 USE 문이 각각의 새 데이터베이스 앞에 출력에 포함됩니다.
(3)이 옵션은 INFORMATION_SCHEMA 및 performace_schema 데이터베이스를 백업하는 데 사용할 수 있습니다.이 두 데이터베이스는 –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]

설명 :이 매개 변수는 현재 서버의 binlog를 기록하며, 이는 상태 (파일, 위치) 값인 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) 현재 서버가 슬레이브 서버 인 경우이 명령을 사용하여 슬레이브 중지를 실행하여 마스터 binlog 파일 및 위치를 얻고 백업이 완료된 후 슬레이브 서버를 시작하기 위해 자동으로 슬레이브 시작을 실행합니다. –dump-slave를 사용하여 슬레이브 서버의 현재 데이터가 실행되는 마스터 binglog의 위치 만 가져옵니다. 마스터 및 슬레이브의 데이터 지연에 따라 달라지는 마스터 서버의 현재 binlog 실행 위치가 아닌 relay_mater_log_file, exec_master_log_pos.
(2)이 파라미터는 슬레이브 서버에서 실행되며, 이는 슬레이브 상태 표시를 실행하는 것과 동일합니다.
(3) 1로 설정하면 CHANGE MASTER 명령으로 데이터 파일로 출력되며, 2로 설정하면 변경 전에 코멘트가 추가됩니다.

추천

출처blog.csdn.net/weixin_44377973/article/details/107081758