Cloud SQL 저장 프로시져

이 섹션에서는 Cloud SQL 인스턴스의 저장 프로시저에 대해 설명합니다.

저장 프로시져에는 재사용할 수 있는 SQL 코드가 포함되어 있습니다.

저장 프로시져를 실행하려면 CALL 명령어를 사용하고 다음 변수를 바꿉니다.

  • procedure_name은 저장 프로시져 이름입니다.
CALL procedure_name(parameters);
자세한 내용은 CALL 문 참조 페이지를 확인하세요.

저장 프로시저를 만들려면 CREATE PROCEDURE 및 CREATE FUNCTION 문을 참조하세요. Cloud SQL에서는 CREATE FUNCTION 문을 지원하지 않습니다. 자세한 내용은 Cloud SQL에 지원되지 않는 MySQL 기능을 참조하세요.

관리형 복제본 색인 저장 프로시져

다음 저장 프로시져를 사용하여 복제본의 관리형 복제본 색인을 만들고, 관리하고, 삭제할 수 있습니다. 복제본이 다시 생성되면 이러한 색인이 자동으로 복원됩니다.

각 저장 프로시져 호출은 현재 세션의 변경사항을 완료하는 COMMIT 문을 실행합니다. 따라서 이러한 저장 프로시져를 사용하여 실행되는 데이터 조작 언어 (DML) 문은 트랜잭션 내에서 롤백할 수 없습니다.

자세한 내용은 관리형 복제본 색인을 참조하세요.

mysql.cloudsql_replica_idx_defn_create

구문

mysql.cloudsql_replica_idx_defn_create(IDXNAME, CREATESTMT)

설명

보조 색인의 정의를 만듭니다. 기본 인스턴스에서 이 저장 프로시져를 실행하면 색인 정의가 복제본에 복제됩니다.

저장 프로시져는 보조 색인 정의의 고유한 정수 식별자인 IDXID를 반환합니다.

  • IDXNAME – 색인 정의의 이름입니다.
  • CREATESTMT – 색인을 만드는 SQL 문입니다. 스키마 프리픽스가 있는 (예: schema_name.table_name) DDL 문이어야 합니다.

mysql.cloudsql_replica_idx_defn_drop

구문

mysql.cloudsql_replica_idx_defn_drop(IDXID)

설명

보조 색인 정의를 삭제합니다. 기본 인스턴스에서 이 저장 프로시져를 실행합니다.

  • IDXID – 삭제된 색인의 색인 정의에 대한 고유한 정수 식별자입니다.

mysql.cloudsql_replica_idx_group_add

구문

mysql.cloudsql_replica_idx_group_add(IDXID, GRPNAME)

설명

복제본 그룹에 보조 색인 정의를 추가합니다. 기본 인스턴스에서 이 저장 프로시져를 실행합니다.

  • IDXID – 색인 정의의 고유 정수 ID입니다.
  • GRPNAME – 복제본 그룹의 이름입니다. GRPNAME은 선택한 커스텀 이름입니다. 해당 복제본 그룹이 없으면 Cloud SQL에서 새 복제본 그룹을 만듭니다.

mysql.cloudsql_replica_idx_group_drop

구문

mysql.cloudsql_replica_idx_group_drop(IDXID, GRPNAME)

설명

복제본 그룹 매핑에서 보조 색인을 삭제합니다. 기본 인스턴스에서 이 저장 프로시져를 실행합니다.

  • IDXID – 색인 정의의 고유 정수 ID입니다.
  • GRPNAME – 복제본 그룹의 이름입니다.

mysql.cloudsql_replica_idx_show_status

구문

mysql.cloudsql_replica_idx_show_status()

설명

복제본 인스턴스에서 진행 중인 색인 생성 또는 삭제 작업의 상태와 진행 상황을 표시합니다.

자세한 진행 상황 보고서를 보려면 인스턴스에서 MySQL 성능 스키마를 사용 설정해야 합니다. 또한 다음 SQL 명령어를 실행하여 스테이지 계측 및 소비자를 사용 설정해야 합니다.

  1. 스테이지 악기를 사용 설정합니다.

    UPDATE performance_schema.setup_instruments
    SET ENABLED = 'YES'
    WHERE NAME LIKE 'stage/innodb/alter%';
  2. 스테이지 이벤트 소비자를 사용 설정합니다.

    UPDATE performance_schema.setup_consumers
    SET ENABLED = 'YES'
    WHERE NAME LIKE 'events_stages_%';

자세한 내용은 성능 스키마를 사용한 ALTER TABLE 모니터링 예시를 참조하세요.

mysql.cloudsql_replica_idx_show_errors

구문

mysql.cloudsql_replica_idx_show_errors()

설명

마지막 실행에서 실패한 색인 재생성 시도를 나열하고 복제본 인스턴스의 오류 메시지와 재시도 횟수를 표시합니다. 한 색인에서 실패해도 큐에 있는 후속 색인의 실행이 차단되지 않습니다.

mysql.cloudsql_replica_idx_show_all

구문

mysql.cloudsql_replica_idx_show_all()

설명

메타데이터 상태 테이블에 있는 모든 복제본 보조 색인 재생성 레코드의 상태, 재시도 횟수, 실행 시간, 오류 메시지를 나열합니다. 복제본 인스턴스에서 이 저장 프로시져를 실행합니다.

자체 관리형 복제본 색인 저장 프로시져

다음 저장 프로시져를 사용하면 복제본에 직접 보조 색인을 추가하고 삭제할 수 있지만 복제본이 다시 생성되면 이러한 색인이 유지되지 않습니다.

mysql.addSecondaryIdxOnReplica

구문

mysql.addSecondaryIdxOnReplica(IDXTYPE, IDXNAME, TABLENAME, IDXDEFINITION, IDXOPTION)

설명

데이터베이스에 보조 색인을 추가합니다. 이 저장 프로시져는 CREATE INDEX DDL 문의 래퍼입니다.

  • IDXTYPE - 만들 색인 유형입니다. 예를 들어 UNIQUE를 전달하여 고유 색인을 만듭니다.
  • IDXNAME - 색인의 이름입니다.
  • TABLENAME – schema_name.table_name 형식의 테이블 이름입니다.
  • IDXDEFINITION - 색인의 정의입니다. 외부 괄호를 포함하지 않습니다.
  • IDXOPTION - 색인 생성 시 전달할 추가 옵션입니다. 예를 들어 MySQL 8.0에서 옵션은 보이지 않는 색인에 대해 INVISIBLE를 전달할 수 있습니다.

mysql.dropSecondaryIdxOnReplica

구문

mysql.dropSecondaryIdxOnReplica(IDXNAME, TABLENAME, IDXOPTION)

설명

데이터베이스에 보조 색인을 삭제합니다. 이 저장 프로시져는 DROP INDEX DDL 문의 래퍼입니다.

  • IDXNAME - 색인의 이름입니다.
  • TABLENAME – schema_name.table_name 형식의 테이블 이름입니다.
  • IDXOPTION - 색인을 삭제할 때 전달할 추가 옵션입니다. 예를 들어 INPLACE과 같은 알고리즘 옵션입니다.

외부 서버 복제 저장 프로시져

외부 서버 복제 중에 다음 저장 프로시저를 사용할 수 있습니다.

mysql.skipReplicationError

구문

mysql.skipReplicationError()

설명

외부 서버 복제 중에 발생한 복제 오류를 건너뛴 후 복제를 재개합니다.

복제 오류가 발생하고 I/O 및 SQL 스레드가 중지된 경우에만 이 저장 프로시져를 실행할 수 있습니다.

이 저장 프로시저는 다음을 수행합니다.

  1. GTID 기반 또는 바이너리 로그 위치 기반 복제가 사용되는지 여부를 결정합니다.

  2. 병렬 복제가 사용되는 경우 저장 프로시저는 먼저 START_SLAVE_UNTIL_SQL_AFTER_MTS_GAPS 또는 START_REPLICA UNTIL_SQL_AFTER_MTS_GAPS를 호출하여 실패한 트랜잭션까지 적용된 트랜잭션에 간극이 없는지 확인합니다. 그런 다음 이 절차에서는 복제 구성을 일시적으로 단일 스레드로 설정합니다.

  3. 바이너리 로그 위치 기반 복제의 경우 이 프로시저는 SQL_SLAVE_SKIP_COUNTER 또는 SQL_REPLICA_SKIP_COUNTER = 1를 설정하여 현재 트랜잭션을 건너뜁니다.

  4. GTID 기반 복제의 경우 저장 프로시저는 gtid_executed 상태 변수의 정보를 기반으로 현재 실패한 트랜잭션의 GTID를 확인합니다. 그런 다음 프로시저가 빈 트랜잭션을 삽입하여 해당 GTID를 백필합니다.

  5. 이전에 병렬 복제가 사용 중지된 경우 저장 프로시저가 병렬 복제를 다시 사용 설정합니다.

  6. 저장 프로시저가 복제를 재개합니다.

mysql.skip_replication_error_history 테이블은 이 저장 프로시저의 모든 호출을 로깅합니다.

다음 단계