2012-02-08 5 views
2

나는 PT-온라인 스키마 변경와 함께 RDS DB 테이블이 개 컬럼에 고유 인덱스를 추가하는 시도하고 같은 오류로 인해 실패 :Percona Toolkit 대. 오픈 아크 키트. 스키마 변경

DBD::mysql::db do failed: Access denied; you need (at least one of) the SUPER privilege(s) for this operation [for Statement "SET SQL_LOG_BIN=0"] at /usr/bin/pt-online-schema-change line 4663. 

그러나 사용 오크 - 온라인 - alter-table, 제 테이블이 바뀌고 있습니다. 절차는 완료,하지만 난 어떤 오류를 확인하지 않고 출력은 같다되지 않습니다

... 
-- Copying range (1230004), (1231683), progress: 24% 

이러한 도구가 테이블을 변경하는 서로 다른 접근 방식을 구현합니까?

답변

3

이 인스턴스에서 실제로 걱정할 사항은 없습니다.

MySQL Documentation on the SUPER privilege

에 따라 SUPER 특권 (당신이 항상 자신의 스레드를 죽일 수있는) 다른 계정에 속하는 스레드를 죽이고, 또는 mysqladmin 데이터 킬을 죽일 변경 MASTER를 사용하는 계정을 수 있으며, PURGE 이진 로그, 구성 글로벌 시스템 변수 수정을 위해 SET GLOBAL을 사용하여 변경, 로깅 활성화 또는 비활성화, 시스템 성능이 read_only 인 경우에도 업데이트 수행, 시작 및 슬레이브 서버에서 복제 중지, 사양 o f에있는 모든 계정 저장된 프로그램 및보기의 DEFINER 속성은 max_connections 시스템 변수로 제어되는 연결 제한에 도달하더라도 에 연결할 수 있습니다.

바이너리 로깅을 사용하는 경우 저장된 함수를 만들거나 변경하려면 에도 18.7 절, "저장된 프로그램의 이진 로깅"에서 설명한대로 SUPER 권한이 필요할 수 있습니다.

DB 세션에서 명령문의 바이너리 로깅을 비활성화하면 SUPER 권한이 필요합니다.

이진 로깅 (SET의 SQL_LOG_BIN = 1)를 허용 로그 --bin-pt-online-schema-change

의 설명서에 따라 실제로

. 대부분의 경우 --tmp-table이 으로 복제 될 필요가 없으므로 기본적으로 바이너리 로깅은 으로 해제되어 있습니다. 또한 복제 환경에서 온라인 스키마 변경을 수행 할 때주의 깊은 계획이 필요합니다. 그렇지 않으면 복제가 중단 될 수 있습니다. "복제"를 참조하십시오.

이로부터 이것이 pt-online-schema-change의 정상적인 동작이라고 결론을 내릴 수 있습니다. 기본적으로 세션에서 바이너리 로깅을 비활성화하려고했습니다.

추천

루트 @ 로컬 호스트로 pt-online-schema-change을 실행 해보십시오. 해당 사용자는 모든 priv를 활성화해야합니다.

+0

종합적인 답변 주셔서 감사합니다. 귀하의 추천에 따르면 불행히도 RDS에서는 불가능합니다. –

+0

AWS RDS에서는 불가능합니다. –