온프레미스 MySQL 서버의 DB 를 다른 서버로 옮길 일이 생겼다. MySQL 서버를 내 노트북에 설치해뒀는데 이제는 서버용으로 쓰지 않으려 하기 때문이다. 그래서 이왕 옮기는 거 새로운 서버에는K8S
의 파드로 만들어서 옮기기로 하였다. 파드로 만들어두면 해당 MySQL 서버
를 이용하고 있는 다른 파드들와 보다 쉽게 구성이 가능하기도 하고 명시적으로 yaml
선언되니 관리가 용이하기 때문이다.
참고로 나는 일단 나 혼자 서버를 사용하고 있어서 실시간 백업은 고려하지 않았다.
일단 파드를 생성하는 방법은 재쳐두고 우선 백업하는 방법에 대해서 공유하고자 한다.
아래처럼 진행해서 백업본(backup.sql) 을 얻는다.
# mysqldump DB이름 -u 유저이름 -P 포트넘버 --protocol=tcp -h 기존서버주소 -p
$ mysqldump mydb -u root -P 30306 --protocol=tcp -h localhost -p > backup.sql
# 혹은 해당 서버의 전체 DB 를 복사하고자 한다면 아래처럼 한다.
$ mysqldump --all-databases -u root -P 30306 --protocol=tcp -h localhost -p > backup.sql
만들어둔 SQL 서버의 주소와 포트를 입력하여 복원한다.
# mysql -u 유저이름 -P 포트넘버 --protocol=tcp DB이름 -h 기존서버주소 -p < backup.sql
$ mysql -u root -P 30306 --protocol=tcp mydb -h localhost -p < backup.sql
# 페이지에 잘 보이게 하기
mysql> pager less -SFX;
# 유저와 호스트별 권한 보기
mysql> select * from mysql.user;
+-----------+------------------+-------------+-------------+-------------+-------->
| Host | User | Select_priv | Insert_priv | Update_priv | Delete_>
+-----------+------------------+-------------+-------------+-------------+-------->
| % | root | Y | Y | Y | Y >
| localhost | mysql.infoschema | Y | N | N | N >
| localhost | mysql.session | N | N | N | N >
| localhost | mysql.sys | N | N | N | N >
| localhost | root | Y | Y | Y | Y >
+-----------+------------------+-------------+-------------+-------------+-------
# 유저와 호스트별 권한 보기 (세로로 보기)
mysql> select * from mysql.user\G;
나는 SQL 서버를 파드로 만들고 깃허브에 올렸다.
statefulset 으로 만들지는 않았다. TODO 로 해야된다.
관련 커밋 링크: https://github.com/SangYunLeee/argocd-enttolog/commit/1220f48568407a8e97ca9e35930039bcfcdca8e6