Amazone Web Service 사용해보자


1.EC2 Instance 만들기

*지극히 개인적으로 이해하여 작성한 글 입니다. 잘못된 정보가 있는경우 댓글 주시면 고맙습니다. 

*현재 모든 글은 PC에 최적화 된 CSS 입니다. 모바일은 뭐....PC로 봐주시면 감사합니다. 시간이 허락한다면 모바일도 고려하겠습니다.




1. AWS 가입 (1년 프리티어 계정)

   프리티어 가격정보 및 서비스 FAQ  https://aws.amazon.com/ko/free/faqs/


2. 지역(region) 선택 후 인스턴스 생성 

   AWS 콘솔에서 인스턴스 생성 순서는

1.Choose AMI 

2.Choose Instance Type 

3.Configure Instance 

4.Add Storage 

5.Add Tags 

6.Configure Security Group 

7.Review

   단계적으로 유저 선택으로 진행된다. 하지만 인스턴스 타입선택(2번) 까지만 하고 바로 생성하여 별도로 설정할 수 있다.


3. Quick start > Free tier only (무료) 선택 후 원하는 AMI 선택 (아래 사진)

    인스턴스 타입을 t2.micro를 사용할 수 밖에 없는 무료티어이고 내가 설치하는게 좋아서 선택함. 

    귀찮으면 Amazon Linux AMI 로 선택, 돈 상관없이 쓸꺼다 하면 AMI은 많으니까 내용보고 알아서 선택. 

    AMI이 뭐냐? 

     - amazon machine image 라고 간단히 말해서 AWS에서 빠르게 서버를 구축하게 서버용 OS를 미리 만든 이미지라 이해하면 됨.

    장점이 뭐냐? 

     - 오토스케일링 자동으로 퍼포먼스업 할 경우, 다른리전으로 마이그래이션 할 경우, 똑같은 인스턴스 만들경우, 

  내가만든 AMI로 팔아서 돈좀벌경우

    


이미지 클릭 시 크게 봐짐






이미지 클릭 시 크게 봐짐


4. 인스턴스 유형 선택 (위 사진)

   인스턴스 유형은 https://aws.amazon.com/ko/ec2/instance-types/ 아주 잘 나와 있다.

    다 읽기 귀찮으면 위 링크 제일 아래로 내려 각 인스턴스 유형 매트릭스 표만 봐도 될꺼같다.






이미지 클릭 시 크게 봐짐



5. 인스턴스 디테일 설정 (위 사진)

  • 생성할 인스턴스 갯수
  • 스팟 인스턴스로 구매 설정
  • 네트워크 (vpc네트워크 생성옵션)
  • 가용영역 생성옵션
  • 공용 IP 자동할당
  • IAM role 설정
  • 인스턴스 내 OS가 꺼졌을때 설정(stop은 종료, terminate은 종료후 인스턴스 삭제)
  • 잘못해서 인스턴스 삭제 시 보호 설정
  • 모니터링
  • Tenancy(이건 모르겠다 그냥 디폴트)


   무료티어 계정의 인스턴스 1개에 대해서는 무료라고 한다.

   그다지 설정할게 없다 라고 생각되면 걍 전부다 디폴트로 하면된다. 어차피 다시 수정할 수 있다.







이미지 클릭 시 크게 봐짐


6. 인스턴스 스토리지 설정 (위 사진)

   

 내가 설정한 

   Red Hat Enterprise Linux 7.2 (HVM), SSD Volume Type 

 AMI는 EBS를 사용하기 때문에 스토리지를 선택할 수 있다.

 AWS 도큐먼트를 찾아보면 알겠지만... m1.small 부터 인스턴스 스토리지를 사용할 수있다.

 무료로 사용하는 프리티어 치곤 default SSD가 빠르다.

 물론 이미지를 처리하는 부분에서는 버벅거림이 있다.


 volume Type에서 magnetic, general purpose, provisioned IOPS 종류가 있는데

  • magnetic 하드디스크를 사용하는 스토리지
  • general purpose SSD를 사용하고 기가바이트당 (1GB) 3 IOP를 제공하는 스토리지
  • provisioned IOPS SSD를 사용하고 IO를 설정할 수 있는 스토리지  

 IOPS는 volume Type을 provisioned IOPS 로 사용해야 선택가능하다.

 delete on Termination 은 인스턴스 실행중 스토리지가 이상하게 삭제되는 것을 방지한다.


물론 나는 프리티어로 이용하니 인스턴스 스토리지 설정은 default 세팅으로 할 것 이다.


* 자세한 설명은 AWS 도큐먼트를 이용해 보도록....






6. 태그 인스턴스 설정 


 굳이 스크린샷으로 보여가면서 설명이 필요없지 싶다.

 간단히말하면 학교다닐때 교실에 몇반, 몇반으로 표시 해 놨다고 생각하면된다.

 인스턴스에 태그를 달아놓고 밸류에 어떤인스턴스인가 정도의 내용을 적어놓는다. 사용안해도 상관없다.

 물론 나는 안쓸생각이다.







이미지 클릭 시 크게 봐짐



7. 방화벽 그룹 설정 (위 사진)

 

 security Group을 설정하는 단계이다. 

 defualt 설정으로 22번 포트와 0.0.0.0/0 으로 구성되어있다.

 물론 add rules를 하여 특정 ip, 특정 port를 설정가능하다.


도큐먼트 참고

http://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/using-network-security.html







 

 

8. 인스턴스 생성 (위사진)


 설명할것이 없다. 설정한 사항만 체크하고 Launch !!

 하지만 마지막으로 alert 창이 하나 뜰 것 이다.

 내용은 진짜루 만들꼬야?

 그리고 Create a new key pair 선택창이 있는데 나는 첨만드니까

 키를 생성하고 키 이름은 내가원하는데로 하고  다운로드하고 Launch Instances!!! 끝이다.


* 다운로드 키를 하면 .pem 파일이 있는데 인스턴스를 접속할 때 

  이 키로 생성한 private key로 접근가능하니까 잘 보관하도록 한다.

  물론 .pem 파일은 putty gen으로 private key 생성하면 된다. 




이로써 AWS의 EC2 인스턴스를 만들었다. 이제 사용만 하면된다.




부족한 글이지만 혹여나 도움이 1이라도 된다면 좋겠다.

앞으로 AWS S3, IAM, Elastic Transcoder, SQS 등 사용했던 서비스들도 적을 생각이니

혹여나 1이라도 도움이 되었다면 다시한번 방문해주시고, 잘못알고있는 정보가 있으면 댓글로 남겨주시기 바랍니다.




참고

https://aws.amazon.com/ko/ec2/?hp=tile&so-exp=below

http://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/concepts.html

'DataBase > AWS' 카테고리의 다른 글

AWS 가입, 설치  (0) 2015.11.11

먼저 중요한 두 단어 Charset  Collation 의 뜻


charset  문자 집합, collation  정렬을 뜻한다.


UTF-8 이란?

실생활의 대부분의 데이터는 텍스트기반(text-centric)이다.

당연히 실생활의 모든 텍스트 데이터를 저장할 수 있는 자료형이 필요로 하게 되었다.

 

이것을 위해서 나온 charset이 UTF-8 이다.

UTF-8 문자 집합은 1~4 바이트까지 저장이 가능하게 설계되었다. (가변 바이트)

관련 자세한 자료는 라엘이가 쓴 글인 https://blog.lael.be/post/77 을 참고하기 바란다.

 

MySQL/MariaDB 에서도 UTF-8 을 지원한다.

이때! 간과한 사실이 있는데, 전세계 모든 언어가 21bit (3바이트가 조금 안됨)에 저장되기 때문에

MYSQL 에서 utf8 을 3바이트 가변 자료형으로 설계하였다.

 

그렇기 때문에 최근에 나온 4바이트 문자열(Emoji 같은것)을 utf8 에 저장하면 값이 손실되는 현상이 발생한다!

기존에 널리 사용되던 MySQL 구축(설계)에서 환경이, charset 은 utf8 , collation 은 utf8_general_ci 인데 이러한 대부분의 환경에서 문제를 일으키는 것이다.

 

4바이트 UTF-8 문자열

MySQL에서 부랴부랴 원래의 설계대로 가변-4바이트 UTF-8 문자열을 저장할 수 있는 자료형을 추가했다.

2010년 3월 24일에 utf8mb4 라는 charset을 추가하였다. (MYSQL 5.5.3 에 추가됨)

(관련 : https://dev.mysql.com/doc/relnotes/mysql/5.5/en/news-5-5-3.html )

스크린샷 2015-03-07 오후 6.51.19

> 한글 해석 : utf8mb4 가 추가되었습니다. 이것은 utf8 과 비슷하지만 확장된 문자를 지원하기 위해서 4바이트까지 저장할 수 있습니다.

 

더 자세한 이론을 원하면 Wikipedia 의 Plane 항목을 읽어보길 바란다.

(어려움. 그냥 쓰윽 읽어보세요. http://en.wikipedia.org/wiki/Plane_(Unicode) )

대충 이런 뜻이다.

- utf8 : Basic Plane.

- utf8mb4 : Basic Plane + Supplementary Plane.

 

그리고 중요한 것!!! Emoji 문자열이 모두 4 Byte 이다!!

요즘 스마트폰에서 이미 있는 문자이고, 라엘이의 경우 운영체제로 Mac OS X 를 사용하는데,

Mac 에서 커멘드+컨트롤+스페이스를 입력하면 나오는 키보드이다.

-- 참고 이미지 --
스크린샷 2015-03-07 오후 7.05.17

-- 참고 이미지 --

 

즉 이러한 SMP (Supplementary Multilingual Plane) 를 처리하기 위해서

당신의 DBMS 가 utf8mb4 를 지원한다면 반드시 이것으로 지정하길 바란다.

 


Collation (정렬 방식).

latin1 (2바이트), utf8 (가변3바이트), utf8mb4 (가변4바이트)는 저장공간의 크기이다.

위의 것들은 charset 이라고 부른다.

(웹)프로그램과 데이터베이스가 문자를 주고 받을 때 charset 만 설정하면 된다.

“내가 보낼 문자열은 utf8mb4 에요!” 라고 알려주고 text stream 을 전송하면 알맞게 처리하기 때문이다.

 

Collation 은 텍스트 데이터를 정렬(ORDER BY)할 때 사용한다. 즉 text 계열 자료형에서만 사용할 수 있는 속성이다.

int 형 : 1500 < 1700  으로 명확하다.

date 형 : 2013-10-20 < 2015-12-20 으로 명확하다.

- 그렇다면 text 형 :

a  와  b  중 어느 것이 더 큰가?

a 와 A 중 어느 것이 더 큰가?

a 와 á 중 어느 것이 더 큰가?

 

- 주로 많이 사용하는 collation 3가지 비교.
ORDER BY `text` ASC
* utf8_bin (or utf8mb4_bin)

바이너리 저장 값 그대로 정렬한다.

hex 코드(16진수)로 A 는 41, B 는 42, a 는 61, b 는 62 이기 때문에 다음 순서로 출력된다.

스크린샷 2015-04-15 오전 11.15.00

 

* utf8_general_ci (or utf8mb4_general_ci)

텍스트 정렬할 때 a 다음에 b 가 나타나야 한다는 생각으로 나온 정렬방식. 일반적으로 널리 사용된다.

라틴계열 문자를 사람의 인식에 맞게 정렬한다.

바이너리를 한번 가공한 것이다.

스크린샷 2015-04-15 오전 11.30.44

* utf8_unicode_ci (or utf8mb4_unicode_ci)

general_ci 보다 조금 더 사람에 맞게 정렬한다.

한국어, 영어, 중국어, 일본어 사용환경에서는 general_ci 와 unicode_ci 의 결과가 동일하다.

뭔가 더 특수한 문자의 정렬 순서가 변경된다.  다음의 스크린샷을 참조하여라.

 

 

tab1

 

스크린샷 2015-03-07 오후 7.16.58

<위의 예시는 상당히 많은 의미를 가지고 있다. 자세히 살펴보도록 하자.>

 

다음은 권장하는 charset 과 collation 설정 값이다.

1) MySQL 5.5.3 이전 = utf8 charset 에, utf8_general_ci collation 사용.

2) MySQL 이 최신일 때 = utf8mb4 charset 에, utf8mb4_unicode_ci collation 사용.

 


 

요약 : 이 문제는 MYSQL / MariaDB 에서만 일어납니다.

 

1) 다국어를 처리할 수 있는 UTF-8 이라는 저장방식이 있음. 원래 설계는 가변4바이트임.

2) 전세계 모든 언어문자를 다 카운트 해봤는데 3 바이트가 안됨.

3) MYSQL/MariaDB 에서는 공간절약+속도향상 을 위해서 utf8 을 가변3바이트로 설계함.

4) Emoji 같은 새로나온 문자가 UTF-8의 남은 영역을 사용하려함 (4바이트 영역).

5) MYSQL/MariaDB 에서 가변4바이트 자료형인 utf8mb4 를 추가함.  (2010년 3월에).

 

기존 utf8 시스템을 utf8mb4 로 바꾸어도 값의 손실은 없습니다.

Emoji 문자열의 저장을 지원하지 않으려면 굳이 utf8mb4 를 사용하지 않아도 됩니다. (이 경우 데이터베이스에 텍스트 값 저장 전에 필터링을 하기 바랍니다.)

예시 my.ini

------------------------------------------------------------------------------------------------------------------------------

[mysqld]

basedir=C:/Program Files/MariaDB 10.1

datadir=C:/Program Files/MariaDB 10.1/data

port=3306

sql_mode="STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION"

default_storage_engine=innodb

innodb_buffer_pool_size=2031M

innodb_log_file_size=50M

collation-server = utf8mb4_unicode_ci

character-set-server = utf8mb4

skip-character-set-client-handshake


[client]

default-character-set = utf8mb4

port=3306

-----------------------------------------------------------------------------------------------

collation-server, character-set-server, default-character-set 설정값이 틀릴시 mysql 실행이 안됨

예기치 않은 오류 발생


참고 https://blog.lael.be/post/917


'DataBase > MySQL' 카테고리의 다른 글

[MySQL] 1449 ERROR - The user specified as a definer  (0) 2016.04.12
[MYSQL] duplicate INSERT  (0) 2016.03.25
[MySQL] TIMEZONE 설정  (0) 2016.03.07
[CentOS] mysql, maria DB sql 파일 import  (0) 2016.02.29
CentOS 7 mariaDB  (0) 2016.02.29


git checkout HEAD~1

일단, 이렇게 치면 작업 사본만 1단계 전 커밋으로 .  해당하는 숫자만큼 과거로 

git checkout HEAD~10

이러면 10단계 과거.

git checkout master

마스터 브랜치로 돌아오는 명령어다. master 브랜치가 아닌 브랜치명을 적어도 상관없다. 


특정 커밋 돌아가기

ommit 해시값이 있다. 해당 커밋의 고유번호. 

git checkout 8553f2

최신 버전으로 돌아오고 싶다면

git checkout master

참고

http://mytory.net/archives/10078


[MySQL] 1449 ERROR - The user specified as a definer



"The user specified as a definer ('root'@'%') does not exist"


root가 가지고 있는 권한 문제 이므로


해당 데이터베이스로 접속하여 권한을 주면된다.

ex)

use mysql;
grant all on *.* to 'root'@'%' identified by 'password' with grant option;


'DataBase > MySQL' 카테고리의 다른 글

[mysql/mariadb] utf8mb4 언어셋 및 표현범위  (0) 2017.03.13
[MYSQL] duplicate INSERT  (0) 2016.03.25
[MySQL] TIMEZONE 설정  (0) 2016.03.07
[CentOS] mysql, maria DB sql 파일 import  (0) 2016.02.29
CentOS 7 mariaDB  (0) 2016.02.29
INSERT INTO t (t.a, t.b, t.c)
VALUES ('key1','key2','value'), ('key1','key3','value2')
ON DUPLICATE KEY UPDATE
t.c = VALUES(t.c)

http://stackoverflow.com/questions/450682/insert-into-on-duplicate-key-update-for-multiple-items

see http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

- 해당 컬럼에 값이 없으면 insert 있으면 update문 실행 

+ Recent posts