Print
카테고리: [ MariaDB ]
조회수: 12326
시스템명이 변경되거나 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내에서 차례대로 수행되며 데이터베이스, 테이블,인덱스 등 모든 오브젝트와 인덱스를 생성함