큰 테이블에 필드를 추가 할 MySQL 다운

당신이 열을 추가 또는 삭제, 인덱싱 등의 테이블 DDL 작업을 추가해야하는 경우, 데이터의 양이 직접 온라인 시간이 테이블 구조를 수정하지 않습니다 영향을
백만 장자로 표현하고 온라인 데이터가 직접 테이블 구조를 수정할 수없는 경우

다음은 구체적인 과정 :
1 백업 데이터
* ih_order에서 OUTFILE '/bak/order.txt'INTO 선택]
의 MySQL> SELECT * INTO OUTFILE ih_order에서 'D : /bak/order.txt';
쿼리 OK, 10,001,000 행 영향 (1 분 30.18 초)

도 2에서, 원래의 테이블 구조의 물리적 사본
ih_order 같은 ih_order_bak 테이블을 생성;

3, 인덱스가 증가하는 테이블 구조 변경 수행
색인 (``ih_order_bak` 추가 테이블 변경을 consulate`)를;

4, 새로운 테이블로 원래의 테이블 데이터
의 MySQL> ih_order에서 ih_order_bak SELECT * INTO INSERT,
확인을 질의 10001000 열의 영향 (. 6 분 10.30 초)
기록 : 10001000 개 중복 : 0 경고 : 0

5, 원래의 테이블 삭제
드롭 테이블 ih_order을;

6, 새로운 테이블을 일본어 테이블 이름 바꾸기
ih_order 바꾸기 위해 나타난 ih_order_bak 단계;


참고 :
PT-온라인 스키마 변경 : 1, 비즈니스 운영에 영향을 미칠 것입니다이 방법, 온라인 도구 DDL 사용하는 것이 좋습니다 , 짧은 시간 방문에서
-> 새로운 복사, 표 변경 작업의 대부분이 잠금을 포함 할 것이다 (2) 테이블 -> 이름 바꾸기 -> 잠금 해제 프로세스는, 실행시 잠금 테이블 매우 긴 시간, 테이블 명을 변경 할 수없는 프로세스는 취소 할 수 없습니다.
mysql5.5 및 이전, 일을 실행 프로덕션 환경에서는 바꾼다는의 (수백만 기록보다) 큰 테이블에 매우 어려운 작업입니다 실행합니다. 재건 테이블과 테이블 잠금 때문에, 사용자의 영향을 미칩니다.
mysql5.6 처음부터, 온라인 DDL 특성을 소개한다. 실행 알터 작업이 문을 삭제, 선택, 삽입, 업데이트를 실행할 수있는 동안, 테이블 변경 작업 사본 테이블의 다양한 강화 및 잠금 테이블을 피하십시오. 따라서 최신 버전에서, 우리는 파일 복사를 억제 할 수있는 알고리즘 및 잠금 옵션을 사용하여 고정.
그러나 심지어 mysql5.6은 여전히 ALTER 작업 (등 / 추가 열을 제거, 추가 / 기본 키를 제거, 데이터 유형을 변경) 재 구축 할 필요가있다
-------------------- -
저자 : 코드를 사랑 생명 사랑
소스 : CSDN의
원래 : HTTPS를 : //blog.csdn.net/nuli888/article/details/52443165
저작권 :이 문서는 블로거 원래 기사를 재생, 보웬 링크를 첨부 해주세요!

추천

출처www.cnblogs.com/ExMan/p/11247066.html