1. 설치형 DB서버와 관리형 Cloud DB 비교
네이버 클라우드 설치형 DB와 관리형 Cloud for DB 비교
써드아이시스템이 네이버 클라우드 프리미엄 파트너사로 활동하면서 보유하게 된 네이버 클라우드와 관련된 여러 기술 노하우들을 많은 분들께 공유하려고 합니다.
네이버 클라우드 CentOS에서 설치형 mysql DB를 매일 일정한 시간에 Object Storage로 자동으로 백업 받는 방법에 대해 정리해보았습니다.
순서는 로컬에 백업 파일 생성 후에 Object Storage로 저장하는 단계로 진행됩니다.
~# mkdir /data_backup
~# mkdir /data_backup/db
우선은 mysql DB를 로컬에 백업 받는 스크립트를 작성합니다.
~# vi /bin/db_backup.sh
#!/bin/bash
DATE=$(date +%Y%m%d%H%M%S)
BACKUP_DIR=/data_backup/db/
# 전체 DB를 백업할 경우
mysqldump -u root -p디비패스워드 --all-databases > $BACKUP_DIR"backup_"$DATE.sql
# 특정 DB를 백업할 경우
# mysqldump -u root -p디비패스워드 --databases DB명 > $BACKUP_DIR"backup_"$DATE.sql
find $BACKUP_DIR -ctime +7 -exec rm -f {} \;
# 백업 파일을 202001224505 와 같은 형식으로 저장하고, 생성된지 7일이 지난 백업 파일을 삭제하는 코드입니다.
# 백업 스크립트에 실행 권한을 부여합니다.
~# chmod 755 /bin/db_backup.sh
aws cli를 설치하려면 pip가 먼저 설치되어 있어야 합니다.
혹시 이미 pip가 설치되어 있다면 아래에 있는 AWS CLI설치로 바로 이동하시면 되겠습니다.
~# yum -y install python-pip
CentOS 6.x 버전은 기술지원 종료로 인해 위 방법대로 설치가 되지 않습니다. 다음 경로에 나온 방법대로 설치하면 됩니다. CentOS6에서 pip - Python 설치하기
네이버 클라우드의 설명에 따르면 aws cli 1.16이후 버전은 일부 기능을 사용할 수 없어서 1.15버전을 사용한다고 합니다.
~# pip install awscli==1.15.85
네이버 클라우드 포탈 -> 마이페이지 -> 계정관리 -> 인증키 관리 - API 인증키 관리 메뉴에서 Access Key ID와 Secret Key를 가져오셔야 하며, 아직 만들어진 Key가 없다면 새로 만드셔야 합니다.
이제 AWS CLI로 접속하기 위해 환경설정을 해야 합니다.
위 단계에서 확인한 Access Key ID와 Secret Key를 아래 화면에서 입력하고 나머지 2가지 항목을 입력하지 않으셔도 됩니다.
~# aws configure
AWS Access Key ID [None]: 3frEtFjfkdsj89243nkfv89s
AWS Secret Access Key [None]: 0kr23-0vsijr2390fw:L?K23-0vcdsjr2390fchnr123[]vl/fwsh
Default region name [None]: [Enter]
Default output format [None]: [Enter]
Object Storage에 data-back-up Bucket을 생성하고 그 아래에 db 폴더를 생성합니다.
이제 Object Storage로 접속해보겠습니다. 얼핏 명령어만 보면 AWS에 접속하는 것처럼 보입니다. 그래서 네이버 클라우드로 접속하기 위한 –endpoint-url= 로 시작하는 옵션이 반드시 필요합니다.
# s3 ls 명령으로 Object Storage에 존재하는 버킷 리스트를 조회합니다.
~# aws --endpoint-url=https://kr.object.ncloudstorage.com s3 ls
2021-01-21 15:34:07 data-back-up
이제 위 단계에서 만들었던 DB 로컬 백업 스크립트에 DB백업 파일을 Object Storage로 백업-동기화 하는 명령을 추가하겠습니다.
~# vi /bin/db_backup.sh
#!/bin/bash
DATE=$(date +%Y%m%d%H%M%S)
BACKUP_DIR=/data_backup/db/
# 전체 DB를 백업할 경우
mysqldump -u root -p디비패스워드 --all-databases > $BACKUP_DIR"backup_"$DATE.sql
# 특정 DB를 백업할 경우
# mysqldump -u root -p디비패스워드 --databases DB명 > $BACKUP_DIR"backup_"$DATE.sql
find $BACKUP_DIR -ctime +7 -exec rm -f {} \;
# 로컬에 백업된 데이터를 Object Storage에 백업-동기화하는 명령어입니다.
aws --endpoint-url=https://kr.object.ncloudstorage.com s3 sync /data_backup/ s3://data-back-up/
여기서 db 폴더만 백업-동기화를 하는 것이 아닌 상위 폴더인 /data_backup/ 폴더부터 백업-동기화를 한 이유는 이후에 db 말고도 개발소스 파일 등도 압축해서 백업하기 위해서입니다.
이제 마지막으로 완성된 스크립트를 일정한 시간, 여기서는 매일 새벽 6시에 실행되도록 설정합니다.
~# crontab -e
# 매일 새벽 6시에 백업이 진행되는 코드입니다.
00 06 * * * /bin/db_backup.sh
백업이 진행되고 나면 아래와 같이 db 백업 파일이 Object Storage에 저장된 것을 확인할 수 있습니다.
스샷에서는 빠른 확인을 위해 새벽 6시가 아닌 5분 단위로 백업한 내역입니다.
문서 최종 수정일 : 2021-10-08
네이버 클라우드 설치형 DB와 관리형 Cloud for DB 비교
네이버 클라우드 mysql DB 자동백업 방법
네이버 클라우드 mysql DB를 Object Storage로 자동 백업하기 - CentOS버전입니다
네이버 클라우드 mysql DB를 Object Storage로 자동 백업하기 - Ubuntu버전입니다
네이버 클라우드 CentOS6.x에서 pip - Python 설치하기
네이버 클라우드 CentOS에서 mariaDB 외부접속 허용, 원격접속하기 with HeidiSQL
네이버 클라우드 Ubuntu에서 mariaDB 외부접속 허용, 원격접속하기 with HeidiSQL
네이버 클라우드 mysql, mariadb 환경설정 파일 my.cnf 위치
네이버 클라우드 mysql, mariadb 외부접속을 위한 환경설정 bind-address 위치
네이버 클라우드 MYSQL(MARIADB) replication 생성하기
네이버 클라우드 VPC환경에서 Cloud DB for MySQL 생성하기 가이드입니다
네이버 클라우드 Cloud DB for MySQL 생성하고 Public 도메인으로 접속하기 가이드입니다
네이버 클라우드 설치형 MySQL DB에서 root 패스워드 설정, 변경하는 방법 가이드입니다
네이버 클라우드 Cloud DB for MySQL 복구(Restore)시에 발생하는 오류 ERROR 1227 (42000) 문제 원인과 해결방법입니다.