MySQL 복제 슬레이브를 읽기 전용으로 설정해야합니까?


22

이 가이드 에 따라 Percona Server 5.5에서 복제를 실행하고 read-only=1슬레이브에 추가해야하는지 궁금했습니다.my.cnf 하고 있으며 읽기 전용으로 .

이 가이드는 사용자가 복제되도록 mysql 테이블에 대한 복제를 설정하지만 주로 슬레이브를 사용하여 mysqldump를 가져옵니다. 비상 상태에서 마스터로 재구성하면 쓰기가 가능해야한다고 생각하지 않습니다. 끊임없이?


슬레이브를 읽기 전용으로 설정하는 것을 자주 간과하기 위해 +1하십시오.
RolandoMySQLDBA

답변:


31

슬레이브가 읽기 전용 인 경우 월드와 100 % 차폐되지 않습니다.

에 대한 MySQL 설명서에 따르면 read-only

이 변수는 기본적으로 꺼져 있습니다. 사용 가능한 경우, 서버는 SUPER 특권을 가진 사용자 또는 슬레이브 스레드가 수행 한 업데이트로부터 (슬레이브 서버에서) 업데이트를 허용하지 않습니다. 복제 설정에서 슬레이브 서버에서 read_only를 활성화하여 슬레이브가 클라이언트가 아닌 마스터 서버에서만 업데이트를 받도록하는 것이 유용 할 수 있습니다.

따라서 SUPER 특권을 가진 사람은 누구나 그러한 슬레이브에 대해 자유롭게 읽고 쓸 수 있습니다.

권한이없는 모든 사용자에게 SUPER 권한이 없는지 확인하십시오.

한 번에 모든 SUPER 권한을 취소하려면 Master and Slave에서이를 실행하십시오.

UPDATE mysql.user SET super_priv='N' WHERE user<>'root';
FLUSH PRIVILEGES;

슬레이브와 관련하여 이것은 SUPER 특권을 root 권한이없는 사람들이 다른 방식으로 제한되는 쓰기를 수행하는 것을 막고 방지 합니다.

업데이트 2015-08-28 17:39 EDT

나는 최근에 MySQL 5.7이 super_read_only 를 소개 할 것이라고 배웠다. .

5.7 문서에서 말하기 때문에 슈퍼 사용자가 자신의 트랙에서 멈추게됩니다.

read_only 시스템 변수가 사용 가능한 경우, 서버는 SUPER 권한이있는 사용자의 클라이언트 업데이트 만 허용합니다. super_read_only 시스템 변수도 사용 가능한 경우, 서버는 SUPER가있는 사용자의 경우에도 클라이언트 업데이트를 금지합니다. 읽기 전용 모드에 대한 설명과 read_only 및 super_read_only의 상호 작용 방법에 대한 정보는 read_only 시스템 변수 설명을 참조하십시오.

마스터 서버에서 super_read_only에 대한 변경 사항은 슬레이브 서버에 복제되지 않습니다. 마스터의 설정과 관계없이 슬레이브 서버에서 값을 설정할 수 있습니다.

super_read_only는 MySQL 5.7.8에서 추가되었습니다.


1
슬레이브를 읽기 전용으로 만드는 것이 가장 좋습니다.
xref

6
네, 그렇게하는 것이 가장 좋습니다
RolandoMySQLDBA

1
읽기 전용 옵션을 사용하여 운영 데이터베이스에서 집계 된 데이터와 함께 슬레이브의보고 데이터베이스를 사용하려면 어떻게해야합니까?
Geany

3

MySQL 복제 슬레이브를 읽기 전용으로 설정해야합니까?

예, R / O 모드로 슬레이브 서버를 실행하는 것이 좋습니다 사용 가능한 . 이전에는 권한이있는 사용자가 이러한 슬레이브의 데이터를 수정할 수 있었지만 나중에 R / O 제한 "노브"도 얻었습니다.

중요한 이유-간단한 데이터 뭉치 나 복제가 중단되는 키 충돌과 같은 문제로 인해 슬레이브를 효과적으로 사용할 수 없게 만드는 부적절한 쓰기로 후회하는 것보다 쓰기보다 실패하는 것이 좋습니다 (더 이상 실제 슬레이브가 아님).

또한 오케스트레이션 /로드 분할에 사용되는 소프트웨어가 있으며 이러한 서버간에 적절한 요청 라우팅을 위해 구성된 풀에서 서버의 R / O 상태를 고려합니다.

이것이 안전입니다. 사용해.


1

여기에 MySQL 8.0이 포함 된 문제 read_only = ONstart slave명령 을 실행할 때 MySQL이 강제로 설정하지 않는다는 것 입니다. 왜 문제가 있습니까? 거의 모든 MySQL DBA는 데이터 손상을 방지하기 위해 RO에서 슬레이브를 사용하기 때문에 슬레이브에서 데이터를 수정하는 SQL 또는 conf를 변경하지 않는 앱을 ​​실수로 잘못 실행하는 dba가 항상 존재하기 때문입니다. 슬레이브에 쓰기를 원한다면 여러 스키마가 있고이 스키마에 쓰기가 필요하므로 read_only명령 이보다 지능적이어야하며을 수행해야합니다 read_only for schema. 멀티 마스터 서버와 슬레이브를 사용하는 경우 매우 유용 할 수 있습니다 Replicate_Ignore_DB. 따라서 지금은 수동으로 제어를 수행하고 매우 신중해야합니다.

즐겨.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.