[AWS_RDS_MariaDB] 시스템 저장 프로시저 3가지

장크리수탉·2022년 11월 24일
0

AWS

목록 보기
1/4
post-thumbnail

이 글은 MariaDB 공식문서Amazon RDS의 MariaDB 레퍼런스를 참고하여 작성되었다.

📌 CALL

MariaDB 에서 CALL 은 이전에 CREATE PROCEDURE 로 정의하여 저장된 프로시저를 호출한다.

1) 구문

아래에서 p는 프로시저의 약자이다.

  • 프로시저 : 데이터베이스에 대한 작업을 정리한 절차를 관계형 데이터베이스 관리 시스템에 저장한 것으로 영구저장모듈(Persistent Storage Module) 이라고도 불림.
CALL p

CALL p와 CALL p()는 동일하다.
단, 괄호를 사용할 경우에는 절차 이름과 괄호 사이의 공백,탭 문자(/t), 줄 바꿈(/n) 문자가 허용된다.

2) 프로시저 지정형식

저장된 프로시저의 이름은 아래와 같이 지정할 수 있다. 이 글의 아래에 설명된 mysql.rds_replica_status가 그 예시이다.

database_name.procedure_name (데이터베이스이름.절차이름)

📌 MariaDB on Amazon RDS SQL

MariaDB 엔진을 실행하는 Amazon RDS 인스턴스에 사용가능한 시스템 저장 프로시저는 3가지가 있다. 이 시스템 저장 프로시저들은 MariaDB 기반의 Amazon RDS 인스턴스 에서만 지원되는 것을 명심하자.

1) mysql.rds_replica_status

읽기 복제본 MariaDB의 복제 상태를 표시해주는 프로시저이다.

  • SHOW REPLICA STATUS 명령어와 같다.
  • 이 프로시저는 버전 10.5 이상부터 지원된다.
CALL mysql.rds_replica_status;

이 프로시저에 대한 자세한 포스팅은 따로 해놨다. (내용이 많다..)
링크는 아래와 같다.

[AWS_RDS_MariaDB] mysql.rds_replica_status

2) mysql.rds_set_external_master_gtid

Amazon RDS 외부에서 실행되는 MariaDB 인스턴스에서 MariaDB on Amazon RDS 인스턴스로 GTID 기반 복제를 설정할때 사용한다. 두 인스턴스 모두 혹은 둘 중 하나의 인스턴스에서 MariaDB GTID를 지원하지 않는데, 이 복제를 설정해야할 때 rds_set_external_master_gtid 프로시저를 사용한다.

Gtid는 MySQL 데이터베이스에서 커밋이 되는 트랙잭션과 함께 생성되고, 트랜잭션에 연결되는 고유 식별자이다. gtid에 대한 정보가 더 궁금하다면 여기를 클릭!

  • 외부 MariaDB 인스턴스가 버전 10.0.24 이상인 경우에만 지원된다.
  • 복제에 GTID를 사용하면 바이너리 로그 복제에서 제공하지 않는 충돌 안전 기능을 제공하므로, 복제 인스턴스에서 지원하는 경우 사용을 권장한다.
  • 두 Amazon RDS DB 인스턴스 간의 복제를 관리하는 데에 사용금지!
    외부 RDS 인스턴스를 복제할 때만 사용.
CALL mysql.rds_set_external_master_gtid(
  host_name
  , host_port
  , replication_user_name
  , replication_user_password
  , gtid
  , ssl_encryption
);

예시

call mysql.rds_set_external_master_gtid(
'Sourcedb.some.com'
,3306
,'ReplicationUser'
,'SomePassW0rd'
,'0-123-456'
,0
; 
  • host_name : [String] 외부에서 작동되고 있는 원본 MariaDB 인스턴스의 호스트 이름 or 호스트 IP주소.
  • host_port : [Integer] 외부에 작동되고 있는 원본 MariaDB 인스턴스의 포트.
  • replication_user_name : [String] MariaDB 인스턴스에서 읽기 복제본으로 구성할 때 복제 슬레이브 권한을 가진 사용자의 ID.
  • replication_user_password : [String] 위 사용자의 PW.
  • gtid : [String] 복제를 시작할 원본 인스턴스의 글로벌 트랜잭션 ID.
  • ssl_encryption :
    1) 복제 연결에 SSL(Secure Socket Layer) 암호화를 사용할지 여부를 지정하는 값이다.
    2) 1은 SSL 암호화를 사용하도록 지정하고 0은 암호화를 사용하지 않도록 지정합니다.
    3) 기본값은 0입니다.

SSL(Secure Socket Layer)이란?
: 암호화 기반 인터넷 보안 프로토콜. SSL/TLS를 사용하는 웹사이트 URL에는 "HTTP" 대신 "HTTPS"가 있다.

3) mysql.rds_kill_query_id

MariaDB 서버에서 실행 중인 쿼리를 종료합니다.

CALL mysql.rds_kill_query_id(queryID);
call mysql.rds_kill_query_id(230040); << 쿼리ID가 230040인 쿼리를 종료함.
SELECT USER, HOST, COMMAND, TIME, STATE, INFO, QUERY_ID FROM 
                INFORMATION_SCHEMA.PROCESSLIST WHERE USER = '<user name>';
profile
4차 산업시대 핵심인재로 매일 반보씩 걷는 장크리수탉의 Dictionary

0개의 댓글