목차
프로젝트 과정에서 데이터를 마이그레이션할 상황이 발생했다.
MySQL 기반 데이터를 psql에 적용시켜보자.
먼저, Data Export를 통해 dump.sql 파일이 존재함을 가정한다.
1. NotePad++ 설치 및 데이터 변환 (심플)
https://notepad-plus-plus.org/downloads/
일단 최신 버전의 NotePad를 다운로드하자.
만일 리눅스 환경이라면
sed -i -e 's/DEFAULT CHARACTER SET [a-z]*\s*//g' dump.sql
을 통해 간편하게 변환할 수도 있다.
NotePad를 통해 psql에서 사용할 수 없는 데이터를 전부 변환처리 해야 한다.
Ctrl + H를 통해 정규식으로 변환할 것이다.
"찾을 문자열" 필드에 DEFAULT CHARACTER SET [a-z]*\s*를 입력한다.
(이 정규식은 "DEFAULT CHARACTER SET "과 공백을 찾는다.)
또한 '정규 표현식' 체크와 바꿀 내용에는 공백을 적용하자. 준비되었다면, 모두 바꾸기를 통해 변경할 수 있다.
수정된 내용을 저장하자. 이것으로 psql에 dump할 것이다.
CHARACTER SET 부분을 제거하는 것은 가장 기본적인 전처리 작업이므로, 이 작업을 먼저 해주는 것이 좋다.
이것만으로 데이터 마이그레이션이 전부 진행되지 않을 수도 있다.
이후 psql에 변환된 파일을 다음과 같이 적용한다.
psql -U postgres -d new_database_name < dump.sql
2. pgLoader 사용 (권장)
https://pgloader.readthedocs.io/en/latest/install.html
pgloader는 실시간 데이터베이스 연결을 통한 데이터 마이그레이션을 지원하는 툴이며, 직접적으로 MySQL의 데이터베이스 서버에서 PostgreSQL로 데이터를 이전할 수 있는 기능을 제공한다.
만약 위의 방법으로 되지 않는다면(사실상 이 경우가 많을 것이다.)
그러나, pgloader가 MySQL 덤프 파일(.sql 파일 형태의 덤프 데이터)을 직접 읽어서 PostgreSQL 데이터베이스로 이전하는 기능은 제공하지 않는다.
그렇기에 MySQL 덤프 파일을 가지고 있고 이를 PostgreSQL 데이터베이스로 이전하고자 할 때, 다음과 같은 절차를 고려할 수 있다.
설치 및 연동
apt - yum으로 mysql 설치 후 부트..
MySQL 데이터베이스에 덤프 복원(리눅스)
SFTP 등으로 서버 내에 dump 파일을 옮겼다면 다음과 같이 쉽게 복원할 수 있다.
mysql -u username -p database_name < dumpfile.sql
아니라면 아래와 같이 Workbench를 통해 넣어볼 수도 있다.
mysql -u root
초반에는 아마 비밀번호 없을 것.
아, 계정 설정 시 원격 접근을 위해 '%' 옵션을 달아줘야 한다.
DROP USER 'mysql'@'localhost'; //(만약 기존 유저를 삭제한다면)
CREATE USER '유저이름'@'%' IDENTIFIED WITH caching_sha2_password BY '비밀번호';
GRANT ALL PRIVILEGES ON *.* TO 'mysql'@'%' WITH GRANT OPTION; //권한 부여
FLUSH PRIVILEGES; //변경 사항 적용
이번에는 외부 서버에 직접 workbench로 값을 넣어줘야 하기 때문에, 기존 옵션이 아닌 'Standard TCP/IP overSSH' 옵션을 사용해야 한다.
그 외에 AWS에서 보안 정책을 사용한다면, 인바운드 규칙에서 허용도 해줄 것.
pgloader를 사용한 마이그레이션
데이터베이스에 덤프가 복원된 후, pgloader를 사용하여 MySQL에서 PostgreSQL로 데이터를 직접 마이그레이션할 수 있다.
pgloader mysql://user:password@localhost/source_db_name postgresql:///target_db_name
pgloader mysql://[사용자명]:[비밀번호]@[호스트명]/[소스_데이터베이스_이름] postgresql:///[타겟_데이터베이스_이름]
이 절차는 MySQL 덤프 파일을 PostgreSQL로 직접 변환하지는 않지만, 덤프 파일을 먼저 MySQL 데이터베이스에 복원한 후, 그 데이터를 pgloader를 통해 PostgreSQL로 마이그레이션하는 간접적인 방법을 제공한다. 이 방법은 덤프 데이터를 PostgreSQL로 이전하려는 경우에 유효한 해결책이 될 수 있다.
'프로젝트 > WebSite Renewal' 카테고리의 다른 글
첫 회의와 요구사항 명세 작성 (0) | 2023.12.15 |
---|---|
자바 버전과 base 선택 (0) | 2023.12.09 |