MYSQL DB 서버 이관하는 방법 (리눅스)

리눅스 서버에 있는 mysql 기준 이관(Migration) 방법을 단계 별로 기록합니다. DB 이관이라고 해서 생각만큼 거창하진 않습니다. 구 서버에서 백업 파일을 생성하고 신 서버에 해당 파일을 전송, 반영하면 끝납니다. 사용되는 명령어는 mysqldump, scp 등 입니다.

MYSQL DB 이관

1. 구 서버 DB 백업

데이터베이스 백업 파일을 생성합니다.

mysqldump -u [mysql 사용자계정] -p [데이터베이스명] > [백업파일명]

 

특정 데이터베이스만 백업하지 않고 모든 데이터베이스를 백업하는 경우엔 [데이터베이스명] 부분을 공란으로 비워둡니다. mysql 계정 비밀번호를 입력하면 백업 파일이 생성됩니다.

[root@localhost mysql]# mysqldump -u root -p > all_databases.sql
Enter password:

2. 생성한 파일 신 서버로 전송

scp 명령어를 이용해서 백업 파일을 신 서버로 전송합니다. 저는 /var/lib/mysql 경로로 보내겠습니다.

scp {전송할 파일명} {원격 서버 계정명}@{IP}:[파일 전송할 경로]
[root@localhost mysql]# scp all_databases.sql root@192.168.91.147:/var/lib/mysql

 

scp 명령어로 처음으로 신 서버에 ssh 연결을 시도하면 key fingerprint와 관련한 경고가 출력될 수 있습니다. "여기로 전송하려는 거 진짜 맞아?"라고 보안상 확인하는 것입니다. yes를 입력하고 엔터 치면 원격 서버를 신뢰하는 것으로 간주하고 전송이 완료됩니다.

 

scp 전송

3. 신 서버에 백업 데이터 반영

신 서버에서 확인해 보니 all_databases.sql 파일이 잘 도착했습니다. 이제 이 파일로 데이터를 반영하면 됩니다.

 

신 서버 파일 전송 성공

 

mysql -u [계정명] -p < [파일명]
[root@localhost mysql]# mysql -u root -p < all_databases.sql
Enter password:

4. 이관된 데이터 확인

mysql에 접속해서 데이터베이스가 잘 옮겨졌는지 확인합니다.

[root@localhost mysql]# mysql -u root -p
Enter password:
mysql> show databases;

참고사항

1. 이 방식으로 이관하면 데이터베이스와 테이블, 그 안에 있는 데이터가 모두 이관됩니다. mysql DB 역시 이관되기 때문에 그 안에 있는 mysql 사용자 계정, 호스트 등의 정보도 반영됩니다.

 

2. 테이블 스페이스를 별도로 이관 작업할 필요는 없습니다. 옮겨진 데이터는 새로운 DBMS의 엔진으로 테이블 작업이 이루어집니다.

 

3. 데이터를 옮기는 과정에서 collation 호환 문제가 발생할 수도 있습니다. 예를 들어, 구 서버에서 테이블 콜레이션이 utf8mb4_0900_ai_ci로 저장되어 있는데 신 서버 mysql이 해당 콜레이션을 지원하지 않으면 옮길 수가 없습니다. 이 경우 구 서버의 콜레이션을 바꾸던가 신 서버의 DBMS 버전을 바꿔야 될 겁니다.

반응형

댓글

Designed by JB FACTORY