AWS2017.05.17 18:48

[내용]

스냅샷을 저장만 하면 아무 쓸모가 없습니다.. 물론 심적 안정감을 가질 있음..

그래서 스냅샷을 활용하여 인스턴스를 생성하는 방법까지 알아야 스냅샷을 아는 의미가 있는 같습니다.

 

이번에는 앞에서 만든 RDS 스냅샷으로 RDS 인스턴스를 올려보도록 하겠습니다.

 

[설명]

데이터 복원여부 까지 확인하기 위하여, 간단한 테이블과 데이터를 입력합니다.

http://tshooter.tistory.com/173를 참고하여, 스냅샷을 생성합니다.


RDS Dashboard에서 Snapshots 클릭하고, 인스턴스로 생성할 스냅샷을 선택합니다.

그리고, Snapshot Actions에서 Restore Snapshot 클릭합니다.


앞에서 RDS 생성할 , 옵션들이 나옵니다.

중요한 가지만 짚고 넘어가면..

- DB Instance Class: 기존 RDS Instance 보다 성능이 좋거나, 아래의 클래스로 변경이 가능합니다.

- DB Instance Identifier: 생성될 DB Instance 이름을 입력합니다.


필요한 내용을 입력하고 Launch DB Instance 클릭합니다.


방금 생성한 내용으로 Instance 생성 입니다.


인스턴스 접속을 위해서 다음 URL(http://tshooter.tistory.com/172) 참고하여 Security Group 설정합니다.

만들어진 인스턴스의 Endpoint 확인합니다.


DB 접속 툴을 사용하여, 해당 Instance 접속합니다.


앞서 입력했던 데이터가 복원되었는지 확인합니다.


신고
Posted by TM ~ing
AWS2017.05.17 18:27

[내용]

RDS DB 특정 시점을 저장한 것을 스냅샷이라고 합니다.

비슷한 개념으로 DB 백업이 있는데, 둘은 약간의 차이가 있습니다.

 

DB 백업의 경우, 인스턴스 삭제의 경우에 함께 삭제가 되지만 스냅샷은 삭제가 되지 않고 보관이 됩니다.

또한, 스냅샷은 다른 리전으로 복사도 가능합니다.

 

그럼 RDS DB 스냅샷을 생성하고 활용하는 여러 가지 방법을 알아 봅시다.

 

[설명]

RDS DB 인스턴스 목록에서 스냅샷을 찍고자 하는 인스턴스를 클릭하고, Take Snapshot 클릭합니다.


스냅샷 이름을 지정하고, Take Snapshot 클릭합니다.


RDS 스냅샷을 생성 중인 것을 확인할 있습니다.


완료가 되면, 아래와 같이 Status available 변하게 됩니다.


신고
Posted by TM ~ing
AWS2017.05.11 17:04

[내용]

외부에서 위의 Endpoint 접속을 하기 위해서는 RDS DB 인스턴스 전용 MySQL Security Group 생성해야 합니다.

 

[설명]

Compute에서 EC2 클릭합니다.


왼쪽 탭에서 Security Groups 클릭하고, Create Security Group 선택합니다.


먼저, 아래 내용을 확인하고, 알맞게 입력합니다.

- Security group name: 시큐리티 그룹 이름

- Description: 시큐리티 그룹에 대한 설명

- VPC: 시큐리티 그룹이 적용될 VPC


그리고, Inbound 탭에서 Add Rule 클릭하여 정보를 입력하고, Create 버튼을 클릭합니다.

- Type: 트래픽의 종류를 선택

- Source: 해당 네트워크에서 Source쪽에 대한 정보를 입력


아래와 같이 시큐리티 그룹이 생성된 것을 확인할 있습니다.


이제 RDS Instance 목록으로 이동하여, 방금 생성한 시큐리티 그룹을 적용시킬 인스턴스를 우클릭하여 Modify 클릭합니다.


Security Group에서 방금전에 생성한 MySQL DB Instance(http://tshooter.tistory.com/171) 선택하고, Continue 클릭합니다.


설정한 내용을 다시 한번 확인하고 Modify DB Instance 클릭합니다.


RDS Instance 정보를 보면, 기존의 시큐리티 그룹은 삭제되고, 새로운 시큐리티 그룹이 생성되고 있는 것을 확인 있습니다.


이것이 Active 상태로 되면, 비로소 접속이 가능해 집니다.

DB 접속을 위하여, DB 툴을 실행합니다. 여기서는 SQLyog라는 툴을 씁니다.

Endpoint 정보 유저, password, port 입력하고 연결을 합니다.


아래와 같이 DB 접속한 것을 확인할 있습니다. 왼쪽 DB List 보면 RDS Instance 생성시 기입했던 testDB 생성 되어 있는 것을 확인 있습니다.


신고
Posted by TM ~ing
AWS2017.05.11 17:00

[내용]

AWS RDS 인스턴스를 생성해 봅시다.

 

[인스턴스 생성]

AWS 콘솔 접속 후에, Database RDS 선택합니다.


RDS 생성할 리전을 선택합니다.


왼쪽 RDS Dashboard 탭에서 Instances 선택하고, Launch DB Instance 클릭합니다.


어떠한 Engine 선택할 것인지 선택합니다. 여기에서는 MySQL 선택하고, Select 클릭합니다.

생성하는 DB Production 목적으로 사용할 것인지 물어보는데, 우리는 Test목적이므로, Dev/Test 선택하고, Next Step 클릭합니다.


DB Instance 세부 스펙을 설정합니다. 아래와 같이 입력 후에 Next Step 클릭합니다.

- Multi-AZ Deployment: 자동 Failover 위한 복제 옵션입니다. 생성을 위한 테스트이므로 일단 No 선택합니다.

- DB Instance Identifiler: DB 인스턴스를 구분하기 위한 이름입니다. (리전에서 유일 해야 )

- Master Username: MySQL DB 관리자 계정입니다.


세부 추가 설정입니다.


Network & Security

- VPC: DB 인스턴스가 위치하게 가상 네트워크 입니다.

- DB Subnet Group: DB 인스턴스가 위차할 서브넷 입니다.

- Publicly Accessible: DB 외부(VPC)에서 접근할 있게 하는 옵션입니다.

- Availability Zone: DB 인스턴스가 생성될 AZ 입니다.

- VPC Security Group: 방화벽 설정입니다. 추후에 RDS 혹은 DB 위한 Security Group 생성해야 합니다.

Database Options

- Database Name: 생성할 DB 이름입니다.

- Database Port: DB 접속을 위한 포트입니다.

- Parameter Group: My.conf(MySQL Configuration) 생성하는 것입니다. 추후 추가로 생성도 가능합니다.


Backup

- Backup Retention Period: 백업 데이터 유지 기간입니다.

- Backup Window: 백업 시작 시간을 설정할 있습니다. Duration 설정을 하나, DB 크기에 따라 설정한것보다 빠르게 혹은 오래 걸릴 있습니다.

Moritoring

- Enable Enhanced Monitoring: 모니터링을 사용할 있습니다.(OS 자세한 정보)


Maintenance

- Auto Minor Version Upgrade: 자동으로 마이너 버전 업데이트 하는 설정입니다.


모든 설정을 하고, Launch DB Instance 클릭합니다.


아래와 같이 방금 생성한, 인스턴스가 생성 확인할 있습니다.


RDS DB 인스턴스가 완전히 생성 되면, 상세 정보에서 Endpoint 통하여 DB 접속할 있는 주소를 있습니다.


신고
Posted by TM ~ing
AWS2017.05.11 16:47

[내용]

VPC 사용자의 상황에 맞는 가상 네트워크를 제공하는 서비스 입니다.(Hyper-v에서 가상 스위치 인거 같네요..)

AWS 가입하면 기본적으로 VPC 생성되어 있습니다. VPC안에서 우리는 여러 서비스를 올릴 있습니다.

 

간단하게 VPC 생성 서브넷 설정 하는 방법에 대해 알아 봅시다.

 

[VPC 생성]

AWS 콘솔 접속 후에, Networking & Content Delivery VPC 선택합니다.


VPC Dashboard에서 Your VPCs 클릭하고, Create VPC 클릭합니다.


필요한 정보를 입력하고, Yes, Create 입력합니다.


아래와 같이 VPC 생성된 것을 있습니다.


[VPC 서브넷 생성하기]

VPC Dashboard에서 Subnets 선택하고, Create Subnet 클릭합니다.


아래와 같이 데이터를 입력하고 완료되면 Yes, Create 클릭한다.

- name tag: 서브넷 이름

- VPC: 서브넷을 사용할 VPC 선택

- Availability Zone: 서브넷을 생성할 가용 영역


아래와 같이 서브넷이 생성된 것을 확인할 있습니다.




신고
Posted by TM ~ing
AWS2017.05.08 14:30

[설명]

IAM은 Identity and Access Management(식별 및 접근 관리)의 약어로 사용자와 그룹을 생성하고 AWS의 각 리소스에 대해 접근제어와 권한관리를 제공합니다.

 

IAM은 AWS 계정 안에 IAM 그룹과 사용자를 생성하여 접근제어 및 권한관리를 세분화 있다.

예를 들어, A 사용자는 EC2 대한 제어가 가능하고, B 사용자는 S3 내용을 읽을 있도록 구성이 가능 하다는 얘기다. 또한 관리를 편리하게 하기 위해 동일한 권한을 여러 유저에게 적용할 경우 IAM 그룹을 만들어 관리할 있다.

 

[IAM 그룹 생성]

RDS 제어할 있는 IAM 그룹 생성을 해봅시다.

 

Security, Identity&Compliance에서 IAM 선택합니다.



왼쪽 탭에서 Groups 선택하고, Create New Group 클릭합니다.



Group Name RDSAdmin 입력하고, 오른쪽 아래 Next Step 클릭합니다.



Filter RDS 입력하여 적용시킬 Policy 검색하고, AmazonRDSFullAccess 선택 Next Step 클릭합니다.


입력한 내용을 확인하고, Create Group 클릭합니다.

아래와 같이 RDSAdmin 그룹이 생성된 것을 확인할 있습니다.


[IAM 사용자 생성하기] 

왼쪽 탭에서 Users 선택하고, Add User 클릭합니다.


User Name 입력하고, 생성할 계정에 맞는 Access Type 선택합니다.


Add user to group 클릭 , RDSAdmin 선택하고 Next: Review 클릭합니다.

앞서 생성한 RDSAdmin 방근 만든 유저를 추가합니다.


지금 까지한 작업을 있습니다. 제대로 되었으면 Create user 클릭합니다.

유저 생성 후에 access key 자동 생성 password 받을 있음.

모든 작업이 완료 되고, 로그인 있는 url access key id, Secret access key 받을 있다.



IAM 계정으로 AWS 콘솔로 접속하여, 앞서 설정한 권한에 맞게 Service 이용할 있습니다.

IAM Dashboard 탭에서 IAM 사용자용 주소가 표시 됩니다.

모자이크된 부분은 최초 숫자로 AWS 계정이나 옆에 있는 Customize 통하여, 대표 할수 있는 문자열(회사명, 그룹명)등으로 변경하여 사용 있습니다.


해당 주소를 웹브라우저를 통하여 입력하면, 로그인 창이 나오고 앞에서 생성한 etlee 유저로 로그인 합니다.


앞에서 권한 설정을 Amazon RDS Full ACCESS 설정하였으므로, RDS 서비스 페이지로 이동하여 봅니다.

RDS 모든 기능을 사용할 있는 것을 확인 있다.




하지만, Grant 하지 않은 다른 서비스인 S3 접근하면 아래와 같이 Access Denied 문구를 보여 주는 것을

확인할 있습니다.


신고
Posted by TM ~ing
MySQL2017.05.08 11:42

[에러 메세지]

[ERROR] Slave SQL: Worker 3 failed executing transaction '' at master log mysql_bin.000126, end_log_pos 180180588; Could not execute Delete_rows event on table 테이블; Can't find record in '테이블', Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the event's master log mysql_bin.000126, end_log_pos 180180588, Error_code: 1032

 

[내용]

위와 같은 에러 메시지가 나오면서 Slave Sync 종료 되었을 , 해결 방법에 대해 알아 봅시다.

 

[원인]

에러 메세지의 원인은 master slave 간에 데이터가 일치 하지 않아서 발생합니다.

예를 들어 master slave table 아래와 같이 데이터가 있다고 가정합니다.

 

1. master table

a

b

1

1

2

2

3

3

 

2. slave table

a

b

2

2

3

3

 

위와 같은 상태에서 master에서 DELETE FROM table where a = 1; 이라는 명령어를 했을 , slave에서 binlog 읽어서 반영하려 시도 하였으나 일치하는 row가 없어서 에러 메시지를 출력하고, sync 종료하게 됩니다.

 

[해결방법]

slave에서 아래와 같은 명령어 순서로 작업을 하면 됩니다.(에러가 statement 만큼 실행 해줘야 )

STOP SLAVE; SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE;

 

하지만, 방법은 workaround 적인 방법입니다.

 

어느 시점에 어떤 이유로 sync 오류가 난지 파악을 하지 못한다면, 해당 오류는 지속적으로 발생할 있으면, 궁극적으로는 master slave 데이터를 맞춰 주는 것이 가장 좋은 방법입니다.

신고

'MySQL' 카테고리의 다른 글

[Mysql] Error_code: 1032  (0) 2017.05.08
Can't connect to local MySQL server through socket '/tmp/mysql.sock'  (1) 2016.05.19
[Mysql] 변수  (0) 2016.05.19
[Mysql] 제어문  (0) 2016.05.19
[Mysql] 스토어드 함수  (0) 2016.05.17
[Mysql] 스토어드 프로시저  (0) 2016.05.17
Posted by TM ~ing