[amazon RDS - function, Stored procedure 만들기]

1. command_line_tools 설치 및 환경설정
   첨부된 command_line_tools.mp4 동영상 보면서 따라하되
   windows 환경변수에 EC2_REGION 값을 세팅 해야 함
  ; EC2_REGION 값은 DB Domain 정보에서 가져오거나
    "AWS Management Console(https://console.aws.amazon.com/s3/home)" -> RDS -> DB Instances
     에서 가져올 수 있음 (Zone: ap-northeast-1b 에서 마지막 b를 뺀 ap-northeast-1 만 가져와야 함)

[command_line_tools]


(아래 동영상은 그냥 참고만)
[Amazon_RDS_Signup_and_DB_Instance_Creation]



2. command_line_tools를 이용한 DB 세팅
   http://blog.peterdelahunty.com/2010/10/stored-procedures-on-amazon-rds.html
    (혹시 몰라서 위 내용 아래 첨부함)
    에 따라서 작업함

Stored procedures on Amazon RDS

Thursday, October 14, 2010

Been a long time since i blogged but need to document this pain in the arse.

So for a new project i need to create a mysql function (same for stored proc) on amazon RDS.

When i tried to install it i got this error:

ERROR 1419 (HY000) at line 3: You do not have the SUPER privilege and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)

So to get them to install you need to set that database parameter to ON. However to do that is not so simple.

Lucky for you people i have found out how to do it and here are the steps:

1) Install the RDS CLI tools. I installed these on my EC2 instance.

Download from here:
http://developer.amazonwebservices.com/connect/entry.jspa?categoryID=294&externalID=2928

They are java based and so you need have Java running. Plus they need your amazon key and secret key. Once you have them installed following the readme do the following:

Important!! make sure you set the AWS region you are working in.
Eg export EC2_REGION=ap-southeast-1

2) create a new parameter group

rds-create-db-parameter-group peters-params -f mysql5.1 -d "peters params"

3) modify the log_bin_trust_function_creators to be set to ON

rds-modify-db-parameter-group peters-params --parameters="name=log_bin_trust_function_creators, value=on, method=immediate"

4) change your running db instance to use the new param group

rds-modify-db-instance petersdbinstance --db-parameter-group-name=peters-params

5) restart the instance

rds-reboot-db-instance petersdbinstance


That will allow you to create a function or stored procedure:

Some point about the function / stored proc:

You need to specify the DETERMINISTIC stuff and you need to add a DEFINER=CURRENT_USER


DELIMITER $$
DROP FUNCTION IF EXISTS `sayhello`$$
CREATE DEFINER=CURRENT_USER FUNCTION `sayhello`(param1 VARCHAR(120))
RETURNS VARCHAR(120)
NOT DETERMINISTIC
READS SQL DATA
BEGIN
RETURN CONCAT('Hello, ',s,'!');

END$$
DELIMITER ;


This works for me hope it helps
Posted by 광장군
,

[Nginx - 경우에 따라 inactive time을 바꾸기]
2011. 03. 24. 임광일

* proxy_cache_path는 http Context에서만 수정 가능함

* set $abc 1m 와 같은 변서 세팅은 http Context에서 사용 안됨

* 또한 inactive option은 변수 처리 안됨
  ex) /cache levels=2:2:2 keys_zone=DELL:10m inactive=$abc max_size=1g; <= 에러

* proxy_cache_valid는 inactive option에 적용 순위 밀림
  실제 의미 없어 보임

* 그 외 여러가지 if문이나 변수 처리로 해보려했으나 모두 안됨

* proxy_cache_path는 PATH가 UNIQUE 해야함
  그렇지 않으면 후순위로 정의한 경우에는 DEFAULT 값이 먹음
  ex) proxy_cache_path        /cache levels=2:2:2 keys_zone=DELL1:10m inactive=1m max_size=1g;
      proxy_cache_path        /cache levels=2:2:2 keys_zone=DELL2:10m inactive=2m max_size=1g;
      와 같이 적용 했을 경우 DELL1 사용에서는 inactive=1m 가 적용 되었는데
                             DELL2 사용에서는 inactive=10m 이 적용 됨

* 그런데 캐싱 데이터는 공유 해야 하기 때문에 ln -s /cache1 /cache2 와 같은 형태로 링크 시켜서 사용

* keys_zone이 달라도 proxy_cache_key 값이 같으면 키 값은 동일

* location에 따라 다른 keys_zone을 사용하는 방식을 이용해서 inactive time 다르게 처리
  ex) location /1/ { proxy_cache             DELL1; }
      location /2/ { proxy_cache             DELL2; }

* DELL1은 inactive=1m 이고
  DELL2는 inactive=2m 일때
  DELL1 서치후 DELL2 서치하면 , 파일은 기존 파일로 유지, inactive time 도 1m에서 1m 으로 유지
  DELL2 서치후 DELL1 서치하면 , 파일은 신규 파일로 변경, inactive time 도 2m에서 1m 으로 변경

* 위와 같은 결과로 "HOT ISSUE 검색어 처리" 같은 경우는 cron으로 5m 마다 특정 keys_zone을 만들어서
  캐시를 생성하면 짧은 inactive time 우선 처리 하기 때문에 이상 없음

Posted by 광장군
,

독일 드레스덴 어느 공원에서
사용자 삽입 이미지
Posted by 광장군
,