원본서버 데이터베이스 : Mysql 5.0 / 기본 character : euckr
대상서버 데이터베이스 : MariaDB 10.4 / 기본 character : UTF8
1. 현재 서버의 Mysql 버전 및 character 체크
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
mysql> \s -------------- Connection id: 63482081 Current database: mysql Current user: root@localhost SSL: Not in use Current pager: stdout Using outfile: '' Using delimiter: ; Server version: 5.0.77-log Source distribution Protocol version: 10 Connection: Localhost via UNIX socket Server characterset: euckr Db characterset: euckr Client characterset: euckr Conn. characterset: euckr |
현재 서버의 O/S 언어
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
[root@localhost ~]# locale LANG=ko_KR.eucKR LC_CTYPE="ko_KR.eucKR" LC_NUMERIC="ko_KR.eucKR" LC_TIME="ko_KR.eucKR" LC_COLLATE="ko_KR.eucKR" LC_MONETARY="ko_KR.eucKR" LC_MESSAGES="ko_KR.eucKR" LC_PAPER="ko_KR.eucKR" LC_NAME="ko_KR.eucKR" LC_ADDRESS="ko_KR.eucKR" LC_TELEPHONE="ko_KR.eucKR" LC_MEASUREMENT="ko_KR.eucKR" LC_IDENTIFICATION="ko_KR.eucKR" LC_ALL=ko_KR.eucKR |
덤프 받을 데이터베이스 character 및 table character 체크
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
mysql> show create database xinet_test; +------------+----------------------------------------------------------------------+ | Database | Create Database | +------------+----------------------------------------------------------------------+ | xinet_test | CREATE DATABASE `xinet_test` /*!40100 DEFAULT CHARACTER SET euckr */ | +------------+----------------------------------------------------------------------+ 1 row in set (0.00 sec) mysql> show create table users; +-------+---------------------------------------------------------------------------+ | Table | Create Table | +-------+---------------------------------------------------------------------------+ | users | CREATE TABLE `users` ( `UID` int(11) NOT NULL auto_increment, `ID` varchar(12) NOT NULL default '', `PWD` varchar(15) NOT NULL default '', `Name` varchar(15) NOT NULL default '', `Address1` varchar(100) NOT NULL default '', PRIMARY KEY (`UID`) ) ENGINE=MyISAM AUTO_INCREMENT=491 DEFAULT CHARSET=euckr | +-------+-----------------------------------------------------------------------------+ 1 row in set (0.00 sec) |
2. 이제 데이터베이스를 dump 를 진행한다 ( 기본 케릭터셋을 지정해서 덤프 받을것)
1 |
[root@localhost ~]# mysqldump --default-character-set euckr -u root -p xinet_test > xinet_test_euckr.sql |
덤프 뜬 파일중에 테이블 생성 내용을 보면 아래와 같이 기본 케릭터셋이 euckr로 구성되어 있다
1 2 |
) ENGINE=MyISAM AUTO_INCREMENT=491 DEFAULT CHARSET=euckr; SET character_set_client = @saved_cs_client; |
3. 이제 대상서버에서 euckr -> utf8로 변경해서 복원해보자
현재 서버의 데이터베이스 버전 및 케릭터셋 확인
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
MariaDB [(none)]> \s -------------- mysql Ver 15.1 Distrib 10.4.11-MariaDB, for Linux (x86_64) using readline 5.1 Connection id: 172 Current database: Current user: root@localhost SSL: Not in use Current pager: stdout Using outfile: '' Using delimiter: ; Server: MariaDB Server version: 10.4.11-MariaDB MariaDB Server Protocol version: 10 Connection: Localhost via UNIX socket Server characterset: utf8 Db characterset: utf8 Client characterset: utf8 ### 데이터베이스 생성 MariaDB [(none)]> create database xinet_test; |
서버의 OS 언어상태 체크
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[root@localhost xinet_test]# locale LANG=ko_KR.UTF-8 LC_CTYPE="ko_KR.UTF-8" LC_NUMERIC="ko_KR.UTF-8" LC_TIME="ko_KR.UTF-8" LC_COLLATE="ko_KR.UTF-8" LC_MONETARY="ko_KR.UTF-8" LC_MESSAGES="ko_KR.UTF-8" LC_PAPER="ko_KR.UTF-8" LC_NAME="ko_KR.UTF-8" LC_ADDRESS="ko_KR.UTF-8" LC_TELEPHONE="ko_KR.UTF-8" LC_MEASUREMENT="ko_KR.UTF-8" LC_IDENTIFICATION="ko_KR.UTF-8" |
기존 euckr에서 덤프 받은 파일을 대상서버로 업로드 진행하고 해당 데이터베이스를 import 하기전에 utf8로 컨버팅 및 케릭터셋 변경
iconv변경 작업 euckr -> utf8 변경
1 |
[root@localhost xinet_test]# iconv -c -f euckr -t utf8 xinet_test_euckr.sql > xinet_test_utf8.sql |
테이블 생성시 기본 euckr을 utf8로 변경 작업
1 |
[root@localhost xinet_test]# sed -e 's/euckr/utf8/g' -i xinet_test_utf8.sql |
데이터베이스 import
1 2 |
[root@localhost xinet_test]# mysql -u root -p xinet_test < xinet_test_utf8.sql Enter password: |
정상적으로 데이터가 들어갔다면 데이터베이스 들어가서 확인해보자
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 41 42 43 44 45 |
MariaDB [(none)]> use xinet_test; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed MariaDB [xinet_test]> show create database xinet_test; +------------+---------------------------------------------------------------------+ | Database | Create Database | +------------+---------------------------------------------------------------------+ | xinet_test | CREATE DATABASE `xinet_test` /*!40100 DEFAULT CHARACTER SET utf8 */ | +------------+---------------------------------------------------------------------+ 1 row in set (0.000 sec) MariaDB [xinet_test]> show create table users; +-------+---------------------------------------------------------------------------+ | Table | Create Table | +-------+---------------------------------------------------------------------------+ | users | CREATE TABLE `users` ( `UID` int(11) NOT NULL AUTO_INCREMENT, `ID` varchar(12) NOT NULL DEFAULT '', `PWD` varchar(15) NOT NULL DEFAULT '', `Name` varchar(15) NOT NULL DEFAULT '', `Address1` varchar(100) NOT NULL DEFAULT '', PRIMARY KEY (`UID`) ) ENGINE=MyISAM AUTO_INCREMENT=491 DEFAULT CHARSET=utf8 | +-------+---------------------------------------------------------------------------+ 1 row in set (0.000 sec) MariaDB [xinet_test]> select * from users; +-----+-----------+-----------------+--------------+----------------------------------+ | UID | ID | PWD | Name | Address1 | +-----+-----------+-----------------+--------------+----------------------------------+ | 391 | david | sadfn123411234 | 투포환 | 서울동작구사당 | | 392 | dgoo134 | tde7871233r8 | 잔다르 | 전북 전주시 완산읍 | | 394 | addm12134 | 12adf3qfasdfwe | 누구냐 | 광주시 광산구 | | 484 | sososo | rlad124frudxo | 메시 | 경북 울진구 울진읍 | | 485 | hihihi | js0dasf10123 | 호날두 | 부산시 사하구 사하동 | | 486 | uplus | rmadd1sd23fhr47 | 윤택옹 | 제주도 서귀포시 남원읍 | | 487 | sorrent | rkddfa0497 | 고빌구 | 충남 천안시 유성면 | | 465 | test123 | k1asdfdsd2u1331 | 홍길동 | 서울시 종로구 을지로 | | 488 | sksksk | k134aaadjskhs79 | 유산슬 | 서울시 은평구 응암동 | | 489 | ktktkt | enqeasdfadf134n | 진반장 | 경기 광명시 오리로 | | 490 | cshi0000 | kkadfdfdfi97228 | 시골청년 | 서울시 금천구 가산동 | +-----+-----------+-----------------+--------------+----------------------------------+ 11 rows in set (0.001 sec) |