Tengo la replicación ejecutándose en Percona Server 5.5 siguiendo esta guía y me pregunté si debería agregar read-only=1
a mi esclavo my.cnf
para que sea de solo lectura.
La guía configura la replicación para la tabla mysql para que los usuarios se repliquen, pero estoy usando principalmente el esclavo para tomar mysqldumps, y en una emergencia reconfigurarlo para que sea maestro, por lo que no creo que necesitemos (o debamos) escribir habilitado en constantemente?
Respuestas:
Cuando un esclavo es de solo lectura , no está 100% protegido del mundo.
De acuerdo con la documentación de MySQL en
read-only
Por lo tanto, cualquier persona con el privilegio SUPER puede leer y escribir a voluntad a tal esclavo ...
Asegúrese de que todos los usuarios sin privilegios no tengan el privilegio SUPER.
Si desea revocar todos los privilegios SUPER de una sola vez, ejecute esto en Master y Slave:
Con referencia al Esclavo, esto reservará el privilegio SUPER para justificar
root
y evitar que los no privilegiados escriban de lo contrario estarían restringidos.ACTUALIZACIÓN 2015-08-28 17:39 EDT
Acabo de enterarme recientemente que MySQL 5.7 presentará super_read_only .
Esto detendrá a los usuarios SUPER en sus pistas porque los 5.7 Docs dicen
fuente
Sí, será mejor que ejecutes servidores esclavos con modos R / O disponibles. Los usuarios previamente privilegiados podían modificar los datos de un esclavo de todos modos, pero más tarde también obtuvieron su "perilla" de restricción de R / O.
Por qué es importante: es mejor fallar con la escritura que arrepentirse con una escritura incorrecta que podría hacer que el esclavo quede inutilizable de manera efectiva debido a la simple acumulación de datos o cosas como conflictos de claves que romperían la replicación (no más esclavos reales nuevamente).
También hay un software utilizado para la división de orquestación / carga que tomaría en cuenta el estado de R / O de los servidores en los grupos que han configurado para el enrutamiento de solicitudes adecuado entre esos servidores.
Esto es seguridad. Úsalo.
fuente
El problema aquí, incluido MySQL 8.0, es que MySQL no lo obliga a configurar
read_only = ON
cuando ejecuta elstart slave
comando. ¿Por qué es un problema? Debido a que casi todos los DBA de MySQL usan sus esclavos en RO, para evitar la corrupción de datos, y siempre existe un dba que accidentalmente ejecuta incorrectamente un SQL que modifica los datos en un esclavo, o una aplicación que no cambiará su configuración. Si quiero escribir en esclavos, porque tiene varios esquemas y necesito escribir en este esquema, entonces elread_only
comando debe ser más inteligente, y déjenos hacerread_only for schema
. Eso podría ser muy útil en servidores multi-master y esclavos que hacen aReplicate_Ignore_DB
. Entonces, por ahora, debes hacer el control manualmente y ser muy cuidadoso.Disfrutar.
fuente