운영을 중단하지 않고 거대한 MySQL 프로덕션 테이블을 어떻게 인덱싱할 수 있습니까?

Barbara Streisand
풀어 주다: 2024-10-31 11:52:02
원래의
652명이 탐색했습니다.

How Can You Index a Huge MySQL Production Table Without Disrupting Operations?

대규모 MySQL 프로덕션 테이블에 인덱스 생성

문제 설명:

대규모 MySQL 프로덕션 테이블에 인덱스 생성 테이블은 잠재적으로 데이터베이스 잠금을 일으킬 수 있습니다. 이는 인덱싱 프로세스 중에 데이터베이스에 대한 중단 없는 액세스를 보장하는 데 어려움을 겪습니다.

해결책:

MySQL 5.6 이상: 온라인 인덱스 업데이트

MySQL 5.6부터 데이터베이스는 작업 중 증분 인덱스 업데이트를 지원합니다. 이는 읽기 및 쓰기와 동시에 인덱스 생성 또는 삭제가 수행되어 차단 위험을 줄이고 데이터 무결성을 보장할 수 있음을 의미합니다.

MySQL 5.5 이하

MySQL 5.5 이하 버전에서는 UPDATE 작업이 수행됩니다. 활성 인덱스 업데이트가 있는 테이블에서는 블록이 발생합니다. 이로 인해 성능에 큰 영향을 미치고 중단이 발생할 수 있습니다.

이러한 차단을 방지하려면 다음 접근 방식을 고려하세요.

1. 순환 마스터 서버:

  • 두 개의 서버를 설정합니다. 하나는 기본 마스터 역할을 하고 다른 하나는 슬레이브 역할을 합니다.
  • 슬레이브 서버가 작동하는 동안 인덱스 업데이트를 수행합니다. 마스터에서 쓰기를 복제합니다.
  • 슬레이브가 마스터를 따라잡도록 허용하여 업데이트된 스키마와 이전 스키마 간의 호환성을 보장합니다.
  • 클라이언트를 마스터에서 슬레이브로 원자적으로 전환하여 슬레이브를 만듭니다. 업데이트된 스키마를 사용하여 새 마스터를 만듭니다.
  • 마스터 서버에서 프로세스를 반복하여 새 슬레이브로 만듭니다.

2. Percona의 pt-online-schema-change:

  • 원본과 동일한 구조로 새 테이블을 만듭니다.
  • 새 테이블의 스키마를 업데이트합니다.
  • 원본 테이블에 트리거를 설정하여 변경 사항을 복사본과 동기화합니다.
  • 원본 테이블의 데이터를 새 테이블로 일괄 마이그레이션합니다.
  • 원본 테이블을 새 테이블.
  • 기존 테이블을 버리세요.

3. RDS 읽기 전용 복제본 프로모션:

Amazon RDS를 사용하는 경우 읽기 전용 복제본을 생성하고 이에 대한 인덱스 업데이트를 수행할 수 있습니다. 완료되면 복제본을 새 마스터로 승격합니다. 이 접근 방식은 장애 조치 및 데이터 마이그레이션을 자동화하여 프로세스를 단순화합니다.

참고: 이 접근 방식을 사용하려면 업데이트된 데이터베이스 인스턴스에 다시 연결하기 위해 애플리케이션을 다시 시작해야 합니다.

위 내용은 운영을 중단하지 않고 거대한 MySQL 프로덕션 테이블을 어떻게 인덱싱할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿