MariaDB migration in AWS lightsail (라이트세일에서 마리아DB 마이그레이션)
이번은 업무때문에 AWS 를 사용할 일이 있어서 남기는 사용기이다.
기존 DB의 설치는 랩탑에 다음과 같은 환경에서 설치하였다.
- Ubuntu 16.04 LTS
- MariaDB 10.1 (InnoDB)
- Apache 2 web server
- PHP 7.1
DB 전체를 옮기는 것이 아니고 서비스를 위해 하나의 테이블만 옮기는데 테이블 사이즈가 1.6GB 이다.
mysqldump을 이용해 아래와 같이 백업받았다.
mysqldump [DB명] [테이블명] > [테이블명].sql
AWS에서는 비용을 위해 lightsail을 이용하였는데 다음과 같은 문제가 발생하였다.
1. 첫번째 AWS 서버
- Ubuntu 18.04 LTS
- MariaDB 10.2
- Apache 2 web server
- PHP 7.2
FTP를 이용하여 압축된 sql 파일을 업로드 후 다음의 두가지 명령을 이용하여 DB import를 시도하였다.
- ssh에서 mysqldump
- mysql shell에서 source
두가지 다 중간에 DB연결이 끊기는 문제가 발생하였다. 문제는 로그에는 전혀 영향이 없이 실제 웹서버도 다운되는 현상이 발생하였다. 특정 행에서 발생하는 error가 아니라 시도할때마다 발생하는 행이 다르다. Error code 2002 HY000. 돌아버리는 에러다. 구글링을 통해 검색해도 도저히 해결책이 없다. 이 문제가 생소한 이유가 같은 상황에서 MariaDB 10.2에서 10.2로 마이그레이션 시도는 아무 문제없이 잘되었기 때문이다.
2. 두번째 AWS 서버
첫번째는 AWS에서 그냥 인스턴스를 생성했는데, 이번엔 성능문제인가 싶어서 바로 database용 인스턴스를 생성했다. 시간은 일반 instance보다 훨씬 더 걸리는데, 문제는 지원 DB가 MySQL이랑 PostgreSQL인데 내 유일한 걱정은 sql 파일이 안읽힐수도 있다는 거였다. 그래도, 몇 년 전에는 잘 되었으니까 한번 시도.
MySQL 8.0.20을 선택 후 복원 시도 하였으나, 테이블 생성만 가능하고 데이터 복원에서 duplicate key error 발생하였다. 문제는 ingnore error 옵션을 켜두어도 단 한줄도 데이터가 복원이 되지 않는다. 직접 sql파일을 버벅버리는 컴퓨터를 가지고 수정을 하고 재시도를 해보았으나 실패. MySQL은 이용불가.
3. 세번째 AWS 서버
정말 마지막이라는 심정으로 2일 뒤 서버 리전을 us-east-1a로 바꿔서 시도하기로 하였다. 지난번 문제가 혹시나 MariaDB 버전 호환 문제일수도 있을 것 같아서 그냥 최신 버전을 설치하기로 하였다. 추후 추가로 복원해야할지도 모르는 데이터는 10.2를 쓰고 있어서 10.1로 시도하였다가 추후 문제가 발생하면 더 골치아프기 때문이다. 첫번째 시도와 완전 동일한 방법이지만 MariaDB 버전만 다르다. 10.5로 바로 설치하였다. 10.2 또는 10.1과 10.5의 차이점은 설치 과정에서 unix socket을 사용할건지 물어보는데 나는 원래 접속방식인 패스워드 사용할거라 N을 선택하였다.
- Ubuntu 18.04 LTS
- MariaDB 10.5
- Apache 2 web server
- PHP 7.2
그리고 mysql shell에 접속하여 source 명령어를 통해 복원 시도하였다. 제길. 잘된다. 아무 문제 없이 1.6GB 이상의 데이터가 모두 복원되었다.
ssh에서 내가 사용한 명령은 다음과 같다.
# apache2 설치 sudo apt-get install apache2 # MariaDB 10.5 for UBUNTU 18.04 sudo apt-get install software-properties-common sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc' sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://nyc2.mirrors.digitalocean.com/mariadb/repo/10.5/ubuntu bionic main' sudo apt-get update sudo apt-get install mariadb-server # secure install # choose N for unix socket sudo mysql_secure_installation # check MariaDB version mysql -V 이후 복원 시도 하면 10.1에서 10.5로 데이터 마이그레이션이 오류없이 잘된다.