MariaDb 10 이전하기
기존 MariaDB 10 에서 다른 서버로 데이터/사용자 등을 이전하기. 이전은 2가지 방법을 제시한다.
- 데이터베이스 덤프만 이전: mysqldump 이용
- 데이터베이스 데이터 폴더 복제: rsync 이용
준비
- 기존서버: 현재 운영중인 mariadb 데이터베이스
- 대상서버: 새로 설치한 mariadb 데이터베이스
양쪽 서버의 mariadb 를 모두 종료한다.
1 | $ systemctl stop mariadb |
데이터베이스 덤프만 이전
데이터베이스 시스템의 데이터베이스를 덤프를 통해서 백업하고 리스토어한다.
- 기존 데이터베이스 덤프
모든 데이터베이스를 덤프해서 사용.
1 | $ mysqldump -u [user] -p --all-databases > all_databases.sql |
지정한 데이터베이스만 덤프하려면
1 mysqldump -u root -p --opt [database name] > database_name.sql
덤프 후에 덤프 파일을 대상 서버에 이전한다.
1 | $ scp all_databases.sql user@192.168.1.10:~/ |
- 대상 서버에서 갱신
덤프 파일을 데이터베이스에 리스토어 한다.
1 | $ mariadb -u [user] -p --all-databases < all_databases.sql # 모든 데이터베이스 |
덤프 파일을 리스토어 한 후에 접속해서 데이터베이스가 들어 있는지 확인.
1 | $ mysql -u user -p |
대상 서버에 사용자 허용 범위 설정
1 | > SELECT User, Host FROM mysql.user WHERE Host <> 'localhost'; |
1 | > GRANT ALL PRIVILEGES ON *.* TO 'user'@'192.168.1.%' |
데이터베이스, 사용자와 권한을 모두 옮기기
기존 데이터베이스 서버의 데이터베이스, 사용자, 권한과 데이터 구조 등을 모두 새 서버에 이전하려고 하면 데이터베이스 시스템이 다루고 있는 모든 파일 시스템을 대상 서버에 복제를 하면 된다. 보통 rsync 를 통해서 모든 파일을 소스에서 타겟 서버로 이전을 한다.
- 대상서버 데이터 폴더 준비
- 기존서버에서 rsync 로 대상서버로 데이터 폴더 전송
- 대상서버 mariadb 종료 및 my.cnf 에 데이터 폴더 위치 확인
- 대상서버 데이터 폴더 권한을 mysql 로 변경
1. 대상 서버 데이터 폴더와 복사
옮기는 서버가 192.168.1.10 이고 사용자 계정 user 를 사용한다고 가정하자.
기존서버에서 mariadb 를 종료한다.
1 | $ susdo systemctl stop mariadb |
먼저 대상서버의 data 폴더를 준비하고 사용자 계정 user 가 사용할 수 있게 한다.
1 | $ sudo mkdir -p /data/maria_db |
2. 기존서버에서 대상서버로 데이터 폴더 복제
기존서버에서 mariadb 를 종료한다.
1 | $ susdo systemctl stop mariadb |
기존서버 데이터 폴더를 대상서버로 모두 복제한다.
1 | $ rsync -avz /var/lib/mysql/* user@192.168.1.10:/data/maria_db/ |
3. 대상서버 폴더 권한 및 시작
1 | $ sudo chown mysql:mysql -R /data/maria_db |
/etc/mysql/my.cnf 의 데이터 폴더 위치를 조정한다.
mariadb 를 재시작한다.
1 | $ susdo systemctl start mariadb |
에러가 없이 잘 시작되면 데이터 폴더 이전이 잘 된것으로 보인다.
4. 확인
클라이언트로 mariadb 에 root 계정으로 접속해 본다. 이 계정의 비밀번호는 이전서버의 root 계정과 비밀번호일 것이다.
1 | $ mariadb -u root -p |
기존 서버의 데이터베이스 계정 student 가 있다고 가정하고 클라이언트로 접속해 본다.
1 | $ mariadb -u student -p |