EC2 AMI와 EBS 볼륨의 스냅샷을 생성해서 인스턴스 복구해 보기
안녕하세요 클래스메소드 김재욱(Kim Jaewook) 입니다. 이번에는 EC2 AMI와 EBS 볼륨의 스냅샷을 생성해서 인스턴스를 복구해 보는 과정에 대해서 정리해 봤습니다.
현재 EC2 인스턴스 상태
현재 EC2 인스턴스에는 다음 2가지를 설치한 상태입니다.
- Apache
- MySQL
yum update -y yum install httpd-2.4.51 -y systemctl start httpd systemctl enable httpd httpd -v cp /usr/share/httpd/noindex/index.html /var/www/html/index.html
아파치는 다음 명령어로 설치합니다.
이후, EC2 인스턴스의 아이피로 접속해 보면 아파치 웹 페이지가 표시 되는 것을 확인할 수 있습니다.
sudo yum install https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm sudo yum install mysql-community-server
이어서 다음 명령어로 MySQL을 설치합니다.
- Public key for mysql-community-common-8.0.30-1.el7.x86_64.rpm is not installed
여기서 다음과 같은 에러가 뜬다면, 아래 블로그를 참고해 주세요.
cat /var/log/mysqld.log | grep 'temporary password' 2022-09-11T01:19:21.958236Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: 비밀번호
설치가 끝났다면 다음 명령어로 초기 비밀번호를 확인합니다.
root@localhost: 다음에 적혀 있는 부분이 초기 비밀번호입니다.
mysql -u root -p alter user 'root'@'localhost' identified with mysql_native_password by '새로운 비밀번호'; show databases;
이제 MySQL로 접속한 다음 비밀번호를 초기화 합니다.
마지막으로 show databases; 를 통해서 현재 데이터베이스 리스트들이 출력되면 성공입니다.
CREATE DATABASE testDatabase; use testDatabase; CREATE TABLE testTable( id INT(11) NOT NULL AUTO_INCREMENT, name VARCHAR(20) NOT NULL, CONSTRAINT testTable_PK PRIMARY KEY(id) ); DESC testTable; INSERT INTO testTable(name) VALUES ("test-1"); select * from testTable;
이어서 다음 명령어들을 통해, 데이터베이스를 생성, 테이블을 생생해서 값을 하나 넣어줍니다.
실제로 인스턴스를 복구 했을 시, 이 테이블과 데이터 값이 그대로 남아있는지 확인할 생각입니다.
AMI와 EBS 스냅샷 생성
먼저 인스턴스에서 작업 -> 이미지 및 템플릿 -> 이미지 생성을 클릭합니다.
특별한 설정 없이 이미지 이름과 설명을 입력한 다음, 이미지 생성을 끝마칩니다.
이어서 스냅샷 카테고리로 들어온 다음「스냅샷 생성」버튼을 클릭합니다.
볼륨은 EC2 인스턴스의 볼륨을 선택하고, 태그에 키와 값을 입력한 다음「스냅샷 생성」버튼을 클릭합니다.
다시 AMI 카테고리로 들어와서「AMI로 인스턴스 시작」버튼을 클릭합니다.
스토리지에서 스냅샷을 생성한 EBS 볼륨을 불러와서 EC2 인스턴스를 생성합니다.
생성한 EC2 인스턴스 확인
생성한 인스턴스의 아이피 주소로 접속해 보면 문제없이 아파치 웹 페이지가 뜨는 것을 확인할 수 있습니다.
MySQL로 접속해서 확인해 보면, 이전에 생성한 데이터베이스, 테이블 등등이 문제 없이 표시되는 것을 확인할 수 있습니다.
MySQL에서 작업을 한 다음, 인스턴스를 복구하면 MySQL에 저장 된 테이블, 데이터들이 복구 될까? 라는 생각을 했지만 검증결과 문제 없이 MySQL 데이터들이 복구 되는 것을 확인할 수 있었습니다.
본 블로그 게시글을 읽고 궁금한 사항이 있으신 분들은 jaewookkim533@yahoo.com로 보내주시면 감사하겠습니다.