DBAtlas · 데이터베이스 운영 아틀라스

1290: ER_OPTION_PREVENTS_STATEMENT: running with the --read-only option (--read-only 옵션으로 실행 중)

MySQL

의미

MySQL 서버가 --read-only 또는 --super-read-only 옵션으로 실행 중이어서 데이터 수정 문장(INSERT/UPDATE/DELETE/DDL)을 거부했다. read_only에서는 CONNECTION_ADMIN/SUPER 권한 사용자가 여전히 쓸 수 있지만, super_read_only가 활성화되면 그들도 쓸 수 없으며 메시지는 '--super-read-only option'으로 표시된다.

원인

read_only=ON 또는 super_read_only=ON이며, 가장 흔하게는 replica에 대한 실수로 인한 쓰기 시도다. replica와 Group Replication secondary는 데이터 일관성을 위해 읽기 전용으로 유지되며, 페일오버 자동화는 이전 primary를 super_read_only로 전환한다. 페일오버/스위치오버 중 잘못된 노드에 쓰는 경우에도 발생한다.

해결 방법

쓰기를 primary(source) 서버로 라우팅한다. 이 서버가 실제로 새 primary가 되어야 한다면: SET GLOBAL read_only = OFF; (read_only를 끄면 super_read_only도 자동으로 꺼지고, super_read_only를 켜면 read_only도 켜진다). HA 도구(Orchestrator/Group Replication/InnoDB Cluster)가 관리하는 노드에서는 수동으로 변경하지 않는다. 상태 확인: SELECT @@read_only, @@super_read_only;

DBAtlas에서 열기 →

같은 데이터베이스의 다른 항목