mysqldump 옵션 정리
기본 mysql 5.x mariadb 는 mysqldump 시 기본 케릭터셋이 utf8이다
이 부분은 확인하고 작업하는것이 좋다
1. 전체 데이터베이스 백업
1 2 |
전체데이터베이스 덤프 [root@localhost ~]# mysqldump -u root -p --all-databases > all_databases.sql |
2. 특정 데이터베이스만 백업
1 2 |
[root@localhost xinet_test]# mysqldump -u root -p xinet_test > xinet_test.sql Enter password: |
3. 특정 데이터베이스에서 특정 테이블만 백업
1 2 |
[root@localhost xinet_test]# mysqldump -u root -p xinet_test users > xinet_test_user_table.sql Enter password: |
4. 2개의 데이터베이스 백업 옵션 : –databases
1 2 |
[root@localhost xinet_test]# mysqldump --databases xinet_test xinet_test2 -u root -p > xinet_2ea_database.sql Enter password: |
5. 데이터베이스 백업시에 스키마(Schema)만 덤프시 / 이렇게 스키마만 dump를 할 수 있다. / -d 옵션 사용
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
[root@localhost ~]# mysqldump -u root -p -d xinet > xinet_schema.sql Enter password: [root@localhost ~]# cat xinet_schema.sql 중간생략----- DROP TABLE IF EXISTS `wp_terms`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `wp_terms` ( `term_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(200) NOT NULL DEFAULT '', `slug` varchar(200) NOT NULL DEFAULT '', `term_group` bigint(10) NOT NULL DEFAULT 0, PRIMARY KEY (`term_id`), KEY `slug` (`slug`(191)), KEY `name` (`name`(191)) ) ENGINE=MyISAM AUTO_INCREMENT=30 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `wp_usermeta` -- DROP TABLE IF EXISTS `wp_usermeta`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `wp_usermeta` ( `umeta_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `user_id` bigint(20) unsigned NOT NULL DEFAULT 0, `meta_key` varchar(255) DEFAULT NULL, `meta_value` longtext DEFAULT NULL, PRIMARY KEY (`umeta_id`), KEY `user_id` (`user_id`), KEY `meta_key` (`meta_key`(191)) ) ENGINE=MyISAM AUTO_INCREMENT=440449 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; |
6. 데이터베이스 백업시에 스키마를 제외하고 데이터만 dump 진행시 / –no-create-info 옵션 사용
1 2 3 4 5 6 7 8 9 10 11 12 |
[root@localhost ~]# mysqldump -u root -p xinet --no-create-info > xinet_data.sql Enter password: [root@localhost ~]# cat xinet_data.sql --생략-- LOCK TABLES `bbse_commerce_cart` WRITE; /*!40000 ALTER TABLE `bbse_commerce_cart` DISABLE KEYS */; INSERT INTO `bbse_commerce_cart` VALUES (3338072,'john880933313','05viiig81nt8uc5lqokgp8ktc1','W',40015,'','','180.70.185.161',1577582113 ),(33338073,'john8333380913','05viiig8133333nt8uc5lqokgp8ktc1','C'----- 생략 |
7. mysqldump 시 데이터 입력의 insert 부분을 1줄씩 진행할 수 있게 덤프 / 옵션 –extended-insert=FALSE 사용
먼저 기본으로 데이터 덤프시에는 아래와 같이 데이터 insert 부분이 전체 1줄로 표시
1 2 3 4 5 6 7 8 9 |
"load.info.sql" 173L, 118961665C INSERT INTO `load_info` VALUES (27295101,'00020003-0004-0005-0006-000700080009','192.168.1.19','192.168.1.19',0,0,0,'2019-11-30 15:00:00'),(27295102,'606D4120-9A1A-7C4C-8E6C-0506AD7C5E22','localhost','192.168.0.144',0.2,0.2,0.2,'2019-11-30 15:00:01'),(272 95103,'F764BEF5-8AA4-11E1-BD1D-00101859A779','test01.xinet.kr','192.168.2.10',0,0.1,0.1,'2019-11-30 15:00:02'),(27295104,'49434D53-0 200-9032-2500-32902500936A','localhost','192.168.0.138',0.1,0,0,'2019-11-30 15:00:05'),(27295105,'C9F216D7-8B86-11E1-BD1D-00 101859A779','test1.xinet.kr','192.168.2.75',0.1,0.2,0.2,'2019-11-30 15:00:03'),(27295106,'1955F86A-F2E3-3E4D-93B7-DB878B7DD9B2','m1 .xinet.kr','192.168.0.176',0.5,0.4,0.3,'2019-11-30 15:00:04'),(27295107,'43240519-5F2C-11E2-BF40-18A9052F2EAC','web2.xinet.kr' ,'192.168.77.74',0.2,0.2,0.2,'2019-11-30 15:00:05'),(27295108,'A3138CFC-A8FB-11E0-ACD1-0010185F6267','wr02.xinet.kr','218.145.7 1.215',0.5,0.7,0.4,'2019-11-30 15:00:06'); |
해당 옵션을 주고 dump 시 한줄씩 데이터 insert
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
[root@localhost ~]# mysqldump -u root -p xinet --extended-insert=FALSE > xinet_insert.sql 데이터 확인 [root@localhost ~]# cat xinet_insert.sql /*!40000 ALTER TABLE `load_info` DISABLE KEYS */; INSERT INTO `load_info` VALUES (27295101,'00020003-0004-0005-0006-000700080009','192.168.0.19','192.168.0.19',0,0,0,'2019-11-3015:00:00'); INSERT INTO `load_info` VALUES (27295102,'606D4120-9A1A-7C4C-8E6C-0506AD7C5E22','te2.xinet.kr','192.168.10.144',0.2,0.2,0.2,'2019-11-30 15:00:01'); INSERT INTO `load_info` VALUES (27295103,'F764BEF5-8AA4-11E1-BD1D-00101859A779','te01.xinet.kr','192.168.20..10',0,0.1,0.1,'2019-11-30 15:00:02'); INSERT INTO `load_info` VALUES (27295104,'49434D53-0200-9032-2500-32902500936A','localhost','192.168.10.138',0.1,0,0,'2019-11-30 15:00:05'); INSERT INTO `load_info` VALUES (27295105,'C9F216D7-8B86-11E1-BD1D-00101859A779','te15.xinet.kr','192.168.20..75',0.1,0.2,0.2,'2019-11-30 15:00:03'); INSERT INTO `load_info` VALUES (27295106,'1955F86A-F2E3-3E4D-93B7-DB878B7DD9B2','tt3.xinet.kr','192.168.10.176',0.5,0.4,0.3,'2019-11-30 15:00:04'); INSERT INTO `load_info` VALUES (27295107,'43240519-5F2C-11E2-BF40-18A9052F2EAC','wt2.xinet.kr','192.168.1.74',0.2,0.2,0.2,'2019-11-30 15:00:05'); INSERT INTO `load_info` VALUES (27295108,'A3138CFC-A8FB-11E0-ACD1-0010185F6267','wt2.xinet.kr','192.168.10.215',0.5,0.7,0.4,'2019-11-30 15:00:06'); |
8. 특정 테이블을 제외하고 나머지 테이블 모두를 dump 진행시 / 옵션 –ignore-table=테이블네임.테이블명 사용
postmeta 테이블을 제외하고 dump 진행
1 2 |
[root@localhost ~]# mysqldump -u root -p xinet --ignore-table=xinet.wp_postmeta > xinet_test.sql Enter password: |
9. 특정 테이블을 제외하는데 1개가 아닌 2개 이상일때는 해당 옵션을 지속적으로 사용해서 진행해야 함
wp_postmeta 테이블과 / wp_posts 테이블 덤프시 제외
1 2 |
[root@localhost ~]# mysqldump -u root -p xinet --ignore-table=xinet.wp_postmeta --ignore-table=xinet.wp_posts > xinet_test.sql Enter password: |
10. mysqldump 시 에러를 무시하고 강제 dump 옵션 — force
1 2 |
[root@localhost ~]# mysqldump -u root -p xinet_test --force > xinet.test.sql Enter password: |
11. innodb로 구성된 경우 lock을 걸지 않고 dump 진행
1 |
[root@localhost test]# mysqldump --single-transaction -u root -p xinet_test > xinet_test.sql |
12. dump시 케릭터셋 지정하고 dump
1 2 3 4 5 6 7 8 9 10 11 12 13 |
기본 utf8 옵션을 주고 덤프 -default-character-set utf8 [root@localhost test]# mysqldump --default-character-set utf8 -u root -p xinet_test > xinet_test_utf8.sql Enter password: 기본셋 latin1일때 백업 [root@localhost test]# mysqldump --default-character-set latin1 -u root -p xinet_test > xinet_test_latin1.sql Enter password: 기본셋 ueckr 일때 백업 [root@localhost test]# mysqldump --default-character-set euckr -u root -p xinet_test > xinet_test_euckr.sql Enter password: |
13. max_allowed_packet 옵션을 주고 ( 데이터 양이 많을 경우 옵션주고 사용)
1 2 |
[root@localhost xinet_test]# mysqldump --max_allowed_packet=512M -u root -p xinet_test > xinet_test.sql Enter password: |
많은 옵션은 아래 사이트에서 확인 가능
https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html