En el proceso de crear una solución automatizada para realizar copias de seguridad y restaurar un servidor MySQL completo , me encontré con la mysql
base de datos que parece contener cuentas de usuario, permisos, metadatos, ese tipo de cosas. ¿Se debe hacer una copia de seguridad de esta base de datos? ¿Hacer copias de seguridad e intentar restaurarlo romperá las cosas?
He tenido un gran momento buscando en Google "copia de seguridad de mysql de la base de datos mysql" como te puedes imaginar.
mysql
backup
database
backup-restoration
database-backup
Daniel Beardsley
fuente
fuente
Respuestas:
Aquí hay algo interesante a considerar: Hacer una copia de seguridad de la
mysql
base de datos lo limita enormemente, ya que solo puede restaurar dicha base de datos a la misma versión de mysql desde la que ejecutó la copia de seguridad. Aquí es por qué:Aquí está mysql.user de MySQL 5.0.45
Aquí está mysql.user de MySQL 5.1.32
Aquí está mysql.user de MySQL 5.5.12
Si intenta restaurar mysql.user a una versión de MySQL para la que no estaba destinado, producirá problemas de permisos aleatorios. La forma de hacer una copia de seguridad de los permisos de usuario de mysql de una manera independiente de la versión es volcar las concesiones de usuario en SQL. De esa manera, las subvenciones de los usuarios son completamente portátiles. Hay dos maneras de lograr esto:
OPCIÓN # 1: Usar MAATKIT
mk-show-Grant generará el SQL necesario para cualquier instancia de mysql a la que se conecte. (Tenga en cuenta que MAATKIT se está migrando a Percona Toolkit. Esta herramienta probablemente se denominará pt-show-grant).
OPCIÓN # 2: Script el volcado de las SUBVENCIONES SQL
He escrito mi propia emulación de mk-show-grant. Dejará fuera a los usuarios anónimos. Se parece a esto:
El uso de cualquiera de estas opciones creará una copia de seguridad más estable de las subvenciones de los usuarios.
EN UNA NOTA SEPARADA
Ahora, si está utilizando esta opción de salida de registro
la base de datos mysql completará el registro lento (si está habilitado) como una tabla mysql en el esquema mysql en lugar de un archivo de texto. Por lo tanto, hacer copias de seguridad físicas incluirá dichos registros basados en tablas mysql. Créame, no vale la pena el espacio en disco si el registro general y el registro de consulta lenta están habilitados y se acumulan en el esquema mysql. Simplemente quédese con las opciones de volcado de subvenciones de MySQL.
ACTUALIZACIÓN 2011-09-19 15:54 EDT
Hay un factor muy importante en el mantenimiento de copias de seguridad de los permisos de MySQL a través de SQL Grants:
Cada usuario obtiene su contraseña en algún formato MD5 modificado. Para mysql 4.0 y versiones anteriores, es una cadena hexadecimal de 16 caracteres. Para mysql 4.1+, tiene 41 caracteres (un asterisco seguido de una cadena hexadecimal de 40 caracteres).
Antes de restaurar un volcado de Grants de SQL, revise el archivo de volcado de Grants de SQL para ver las contraseñas hexadecimales de 16 caracteres. Si ve incluso uno, debe agregar lo siguiente a /etc/my.cnf (o my.ini para Windows) en el servidor mysql al que restaurará:
La directiva old_password permite que las contraseñas 16-char y 41-char coexistan y se autentiquen correctamente en la misma instancia de mysql en ejecución. Cualquier contraseña creada en adelante será de 16 caracteres.
No se requiere reiniciar MySQL. Solo ejecuta esto:
fuente
SHOW GRANTS
generación de SQL usandoQUOTE()
, así:SELECT CONCAT('SHOW GRANTS FOR ',QUOTE(user),'@',QUOTE(host),';') FROM mysql.user WHERE user<>'';
Sí, definitivamente desea hacer una copia de seguridad de la
mysql
base de datos, es una parte integral de su servicio. Si bien puede reconstruir su contenido a partir de otra información, la dificultad de hacerlo es prohibitiva si está tratando de volver al servicio rápidamente.fuente
Puede restaurar la base de datos mysql entre versiones, al menos versiones bastante recientes. Hay una herramienta llamada
mysql_upgrade
incluida en las nuevas versiones de MySQL que actualizará las tablas del sistema por usted.http://dev.mysql.com/doc/refman/5.0/en/mysql-upgrade.html
fuente
Siempre que restaure a una versión similar de mysql, puede restaurar la base de datos mysql desde una copia de seguridad. Si tiene dudas, simplemente haga una diferencia entre los esquemas de la base de datos mysql (el del respaldo y el del nuevo servidor mysql).
fuente