【ruby on rails + Mysql】 heroku에서 AWS로 전환할 때의 데이터 마이그레이션 절차

내용



ruby on rails에서 작성한 애플리케이션의 프로덕션 환경을 heroku에서 AWS로 마이그레이션할 때의 데이터 마이그레이션에 대해 비망록으로 남겨 둡니다.

실제로는 프로덕션 가동 후에 서버 환경을 옮긴다고 하는 것은 리스크와 수고만 걸려 악수라고는 생각합니다만, 개인 개발이므로 용서를··.

환경



· 루비 2.7.1
· Rails 6.0.3.2
· mysql 5.7

다음과 같은 형태로 AWS 인프라를 구축하고 있다고 가정



heroku 측 : clearDB (Mysql)에서 데이터 내보내기



※ 프로덕션 환경의 경우는 타임 러그에 의한 데이터 누락 등을 방지하기 위해 일시적으로 서버를 정지하는 등의 조치가 필요할까. 자세한 내용은 팀 정책을 따르십시오. 여기에서는 제목대로 데이터 마이그레이션 절차에 대해서만 설명합니다.

데이터베이스 URL 검색


$heroku config --app アプリ名 | grep DATABASE_URL
CLEARDB_DATABASE_URL:     mysql://<USER_NAME>:<PASSWORD>@< HOST >/<DB_NAME>?reconnect=true

데이터 내보내기



데이터를 내보냅니다. 아마 시간이 걸리기 때문에 기장을 기다리자.

현재 디렉토리에 dump.sql이 출력되면 성공입니다.
mysqldump -uUSER_NAME -p -h HOST -r dump.sql --single-transaction DB_NAME --skip-column-statistics

비밀번호를 들을 수 있다고 생각하므로 입력하세요.

옵션의 내용을 가볍게 설명해 두면,

--single-transaction···덤프 처리를 트랜잭션으로 둘러싼다. 데이터 무결성을 유지하는 데 유용합니다. MyISAM 테이블이 포함된 DB에서는 다른 옵션이 필요하다.

--skip-column-statistics・・・mysqldump 8 이후로 그 이전(5.7라든지)의 MySQL 서버에 대해서 덤프를 할 때에 발생하는 에러를 회피. 자세한 것은 필자도 잘 모른다. .

아래 기사 참고
htps : // bg. 핀쿠모 히칸. 코 m / 엔 try / mysql 즈 mp ぢ さ b ぇ

mysqldump의 자주 사용하는 옵션을 써 주는 기사도 있었기 때문에 링크를 붙여 둡니다.

자주 사용하는 mysqldump 옵션과 사용 예
htps : // 코 m / 료나 오카 /

AWS 측: EC2로 SQL 전송



전제
· ssh 연결이 가능합니다.
· 클라이언트의 ssh/config는 다음과 같은 경우
Host myapp
        HostName        IPAddress
        Port            22
        IdentityFile    ~/.ssh/myapp_rsa
        User            hoge

다음 명령을 두드리기
scp 転送元ファイル myapp:/転送先ディレクトリ

전송할 수 없는 경우 아래 사이트 등을 참조
ht tp // // ぁr도 lp570. 하테나 bぉg. 코m/엔트리/2014/11/17/205325

AWS 측: RDS로 SQL 가져오기



사전에 연결할 엔드포인트, 사용자 이름 및 암호를 확인합니다.
mysql -h エンドポイント -u ユーザー名 -p DB名> dump.sql

진행 상황을 확인하려면 파이프로 연결하고 pv 명령을 넣으면 좋습니다.
htps : // 코 m / 히로 q / ms / 에 fd8c3580c9c9457c869

반영되어 있으면 가져오기 성공입니다. 수고하셨습니다.
보자 보이는 부분도 많기 때문에, 뭔가 잘못 등 있으면 지적하실 수 있으면 다행입니다.

참고 사이트

좋은 웹페이지 즐겨찾기