시스템명이 변경되거나 DB명 (스키마) 만 다르게 개발DB 데이터 -> 운영DB 통째로 복사하는 경우
사용할 수 있는 방법입니다.
Mysql과 MariaDB 구버전에서는 alter databbase rename 명령어를 사용할 수 있었으나 현재는 사용불가하여 아래와 같은 방법을 사용할 수 있습니다.
아래 내용은 개발 DB를 DB 네이밍만 다르게 운영서버에 복사했던 작업 내용입니다.
-1. 원본 DB dump 뜨기
mysqldump -uroot -p > source_export.sql
=> 위 명령어로 source 데이터베이스 전체를 sql 파일 형태로 떨어뜨림 (풀백업과 동일)
DATABASE, TABLE, TABLE의 데이터 등이 SQL 문 형태로 떨어짐
-2. sql 파일에서 db명(스키마) 수정
-. SOURCE DB SQL 덤프 (변경전)
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `SOURCE_DB` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_bin */; USE `SOURCE_DB`; -- -- Table structure for table `SOURCE_DB_TABLE1` -- DROP TABLE IF EXISTS `SOURCE_DB_TABLE1`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `cm_admin_appr_type` ( `COMP_CD` varchar(30) COLLATE utf8_bin NOT NULL COMMENT '회사코드', `APPR_TYPE_CD` varchar(30) COLLATE utf8_bin NOT NULL COMMENT '승인유형코드', `SYS_CD` varchar(30) COLLATE utf8_bin NOT NULL COMMENT '시스템', `APPR_TYPE_NM` varchar(100) COLLATE utf8_bin NOT NULL COMMENT '승인유형명', `AGREEMENT_TYPE` varchar(1) COLLATE utf8_bin DEFAULT NULL COMMENT '합의형태', `USE_FLAG` varchar(1) COLLATE utf8_bin NOT NULL COMMENT '사용여부', `DEFAULT_REF_EMP_LIST` varchar(300) COLLATE utf8_bin DEFAULT NULL COMMENT '기본참조자 리스트', `CRT_ID` decimal(22,0) NOT NULL COMMENT '생성자ID', `CRT_DT` varchar(14) COLLATE utf8_bin NOT NULL COMMENT '생성일시', `UPDT_ID` decimal(22,0) NOT NULL COMMENT '수정자ID',
=> 떨어뜨린 SQL 덤프파일을 열어 :%s/SOURCE_DB/TARGET_DB/g
명령어로 SOURCE_DB 를 TARGET_DB로 전부 변경 (*DATA 검증 필수*)
-. TARGET DB SQL 덤프 ( 변경 후)
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `TARGET_DB` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_bin */; USE `TARGET_DB`; -- -- Table structure for table `TARGET_DB` -- DROP TABLE IF EXISTS `TARGET_DB`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `cm_admin_appr_type` ( `COMP_CD` varchar(30) COLLATE utf8_bin NOT NULL COMMENT '회사코드', `APPR_TYPE_CD` varchar(30) COLLATE utf8_bin NOT NULL COMMENT '승인유형코드', `SYS_CD` varchar(30) COLLATE utf8_bin NOT NULL COMMENT '시스템', `APPR_TYPE_NM` varchar(100) COLLATE utf8_bin NOT NULL COMMENT '승인유형명', `AGREEMENT_TYPE` varchar(1) COLLATE utf8_bin DEFAULT NULL COMMENT '합의형태', `USE_FLAG` varchar(1) COLLATE utf8_bin NOT NULL COMMENT '사용여부', `DEFAULT_REF_EMP_LIST` varchar(300) COLLATE utf8_bin DEFAULT NULL COMMENT '기본참조자 리스트', `CRT_ID` decimal(22,0) NOT NULL COMMENT '생성자ID', `CRT_DT` varchar(14) COLLATE utf8_bin NOT NULL COMMENT '생성일시', `UPDT_ID` decimal(22,0) NOT NULL COMMENT '수정자ID',
-. source_backup.sql 파일 내용 변경 (:%s/SOURCE_DB/TARGET_DB/g)
-. 덤프파일명 변경 ( source_export.sql -> target_import.sql )
-.개발서버 -> 운영서버로 파일 이동
-3. TARGET_DB 에 덤프파일 적용
mysql -uroot -p < target_import.sql
=> SQL 문 형태로 된 덤프파일이 DB내에서 차례대로 수행되며 데이터베이스, 테이블,인덱스 등 모든 오브젝트와 인덱스를 생성함