mysql_upgrade
es una herramienta que comprueba y actualiza sus tablas a la última versión.
Deberías correr mysql_upgrade
después de actualizar de una versión principal de MySQL / MariaDB a otra, como de MySQL 5.0 a MariaDB 10.1 o MariaDB 10.0 a MariaDB 10.1. También tienes que usar mysql_upgrade
después de una migración “horizontal” directa de MySQL 5.5.40 a MariaDB 5.5.40. También es seguro correr mysql_upgrade
para actualizaciones menores, como si no hubiera incompatibles entre versiones, no cambia nada.
mysql_upgrade
se ejecuta después de iniciar el nuevo servidor MariaDB. Ejecutarlo antes de apagar la versión anterior no dañará nada y le permitirá asegurarse de que funciona y averiguar la autenticación antes de tiempo.
En Windows Server 2008 o más reciente, mysql_upgrade
debe ejecutarse con privilegios de administrador.
Se recomienda hacer una copia de seguridad de todas las bases de datos antes de ejecutar mysql_upgrade
.
En la mayoría de los casos, mysql_upgrade
solo debería tomar unos segundos. El trabajo principal de mysql_upgrade
Es para:
- Actualice las tablas del sistema en el
mysql
base de datos a la última versión (normalmente solo agregue nuevos campos a algunas tablas). - Compruebe que todas las tablas estén actualizadas (ejecuta CHECK TABLE table_name FOR UPGRADE). Para las tablas que no están actualizadas, ejecuta ALTER TABLE table_name FORCE en la tabla para actualizarla. Una tabla no está actualizada si:
- La tabla usa un índice para el que ha habido un cambio de colación (raro)
- Un cambio de formato en el motor de almacenamiento requiere una actualización (muy raro)
De MariaDB 10.4.6, mariadb-upgrade
es un enlace simbólico a mysql_upgrade
.
Usando mysql_upgrade
mysql_upgrade [--force] [--user=# --password --host=hostname --port=# --socket=#--protocol=tcp|socket|pipe|memory --verbose] OTHER_OPTIONS]
mysql_upgrade
es principalmente un marco para llamar a mysqlcheck. mysql_upgrade
funciona realizando las siguientes operaciones:
# Find out path to datadir echo "show show variables like 'datadir'"| mysql mysqlcheck --no-defaults --check-upgrade --auto-repair --databases mysql mysql_fix_privilege_tables mysqlcheck --no-defaults --all-databases --fix-db-names --fix-table-names --write-binlog mysqlcheck --no-defaults --check-upgrade --all-databases --auto-repair --write-binlog
Las opciones de conexión dadas a mysql_upgrade
se pasan a mysqlcheck y mysql.
los mysql_fix_privilege_tables
en realidad, el script no se llama; está incluido como parte de mysql_upgrade
Si tiene un problema con mysql_upgrade
intente ejecutarlo en modo muy detallado:
mysql_upgrade --verbose --verbose other-options
Opciones
mysql_upgrade
admite las siguientes opciones:
Opción | Descripción |
---|---|
-? , --help |
Muestre este mensaje de ayuda y salga. |
--basedir=path |
Opción antigua aceptada por compatibilidad con versiones anteriores, pero ignorada. |
--character-sets-dir=path |
Opción antigua aceptada por compatibilidad con versiones anteriores, pero ignorada. |
--compress=name |
Opción antigua aceptada por compatibilidad con versiones anteriores, pero ignorada. |
--datadir=name |
Opción antigua aceptada por compatibilidad con versiones anteriores, pero ignorada. |
-# [name] , --debug[=name] |
Para las compilaciones de depuración, genere el registro de depuración. |
--debug-check |
Verifique la memoria y abra el uso del archivo al salir. |
-T , --debug-info |
Imprime información de depuración al salir. |
--default-character-set=name |
Opción antigua aceptada por compatibilidad con versiones anteriores, pero ignorada. |
-f , --force |
Forzar la ejecución de mysqlcheck incluso si mysql_upgrade ya se ha ejecutado para la versión actual de MariaDB. |
-h , --host=name |
Conéctese a MariaDB en el host especificado. |
-p , --password[=name] |
Contraseña para usar al conectarse al servidor. Si no se proporciona la contraseña, se solicita en la línea de comando (que debe considerarse insegura). Puede utilizar un archivo de opciones para evitar dar la contraseña en la línea de comando. |
-P , --port=name |
Número de puerto que se utilizará para la conexión o 0 de forma predeterminada para, en orden de preferencia, my.cnf, la variable de entorno MYSQL_TCP_PORT, / etc / services, predeterminado integrado (3306). |
--protocol=name |
El protocolo que se utilizará para la conexión (tcp, socket, pipe, memory). |
--silent |
Imprime menos información. |
-S , --socket=name |
Para las conexiones a localhost, el archivo de socket de Unix a usar, o, en Windows, el nombre de la tubería nombrada a usar. |
--ssl |
Habilita TLS. TLS también se habilita incluso sin configurar esta opción cuando se configuran otras opciones de TLS. A partir de MariaDB 10.2, el --ssl La opción no habilitará la verificación del certificado del servidor de forma predeterminada. Para verificar el certificado del servidor, el usuario debe especificar el --ssl-verify-server-cert opción. |
--ssl-ca=name |
Define una ruta a un archivo PEM que debe contener uno o más certificados X509 para que las autoridades de certificación (CA) confiables lo usen para TLS. Esta opción requiere que use la ruta absoluta, no una ruta relativa. Consulte Descripción general de conexiones seguras: Autoridades de certificación (CA) para obtener más información. Esta opción implica la --ssl opción. |
--ssl-capath=name |
Define una ruta a un directorio que contiene uno o más archivos PEM, cada uno de los cuales debe contener un certificado X509 para que una autoridad de certificación (CA) confiable lo utilice para TLS. Esta opción requiere que use la ruta absoluta, no una ruta relativa. El directorio especificado por esta opción debe ejecutarse a través del Rehash de openssl mando. Consulte Descripción general de conexiones seguras: Autoridades de certificación (CA) para obtener más información. Esta opción solo es compatible si el cliente se creó con OpenSSL o yaSSL. Si el cliente se creó con GnuTLS o Schannel, esta opción no es compatible. Consulte Bibliotecas de criptografía y TLS utilizadas por MariaDB para obtener más información sobre qué bibliotecas se usan en qué plataformas. Esta opción implica la --ssl opción. |
--ssl-cert=name |
Define una ruta al archivo de certificado X509 que se utilizará para TLS. Esta opción requiere que use la ruta absoluta, no una ruta relativa. Esta opción implica la --ssl opción. |
--ssl-cipher=name |
Lista de cifrados o conjuntos de cifrado permitidos para usar con TLS. Esta opción implica la --ssl opción. |
--ssl-crl=name |
Define una ruta a un archivo PEM que debe contener uno o más certificados X509 revocados para usar con TLS. Esta opción requiere que use la ruta absoluta, no una ruta relativa. Consulte Descripción general de conexiones seguras: listas de revocación de certificados (CRL) para obtener más información. Esta opción solo es compatible si el cliente se creó con OpenSSL o Schannel. Si el cliente se creó con yaSSL o GnuTLS, esta opción no es compatible. Consulte Bibliotecas de criptografía y TLS utilizadas por MariaDB para obtener más información sobre qué bibliotecas se usan en qué plataformas. |
--ssl-crlpath=name |
Define una ruta a un directorio que contiene uno o más archivos PEM, cada uno de los cuales debe contener un certificado X509 revocado para usar con TLS. Esta opción requiere que use la ruta absoluta, no una ruta relativa. El directorio especificado por esta opción debe ejecutarse a través del Rehash de openssl mando. Consulte Descripción general de conexiones seguras: listas de revocación de certificados (CRL) para obtener más información. Esta opción solo se admite si el cliente se creó con OpenSSL. Si el cliente se creó con yaSSL, GnuTLS o Schannel, esta opción no es compatible. Consulte Bibliotecas de criptografía y TLS utilizadas por MariaDB para obtener más información sobre qué bibliotecas se usan en qué plataformas. |
--ssl-key=name |
Define una ruta a un archivo de clave privada para usar con TLS. Esta opción requiere que use la ruta absoluta, no una ruta relativa. Esta opción implica la --ssl opción. |
--ssl-verify-server-cert |
Habilita la verificación del certificado del servidor. Esta opción está deshabilitada de forma predeterminada. |
-t , --tmpdir=name |
Directorio de archivos temporales. |
-s , --upgrade-system-tables |
Solo actualice las tablas del sistema en la base de datos mysql. Las tablas de otras bases de datos no se verifican ni se tocan. |
-u , --user=name |
Usuario para iniciar sesión si no es el usuario actual. |
-v , --verbose |
Mostrar más resultados sobre el proceso, usarlo dos veces imprimirá los argumentos de conexión; usarlo 3 veces imprimirá todos los comandos CHECK, RENAME y ALTER TABLE usados durante la fase de chequeo; usándolo 4 veces (agregado en MariaDB 10.0.14) también escribirá todos los comandos mysqlcheck utilizados. |
-V , --version |
Salida de información de versión y salida. |
-k , --version-check |
Ejecute este programa solo si su ‘versión del servidor’ coincide con la versión del servidor al que se está conectando. Nota: la ‘versión del servidor’ del programa es la versión del servidor MariaDB con el que fue construido / distribuido. (Predeterminado a encendido; use --skip-version-check deshabilitar.) |
--write-binlog |
Todos los comandos, incluidos los ejecutados por mysqlcheck, se escriben en el registro binario. Desactivado por defecto. Antes MariaDB 10.0.6 y MariaDB 5.5.34, esto estaba habilitado de forma predeterminada, y --skip-write-binlog debe usarse cuando los comandos no deben enviarse a esclavos de replicación. |
Archivos de opciones
Además de leer las opciones de la línea de comandos, mysql_upgrade
también puede leer opciones de archivos de opciones. Si se proporciona una opción desconocida para mysql_upgrade
en un archivo de opciones, se ignora.
Las siguientes opciones se relacionan con la forma en que las herramientas de línea de comandos de MariaDB manejan los archivos de opciones. Deben darse como primer argumento en la línea de comandos:
Opción | Descripción |
---|---|
--print-defaults |
Imprima la lista de argumentos del programa y salga. |
--no-defaults |
No lea las opciones predeterminadas de ningún archivo de opciones. |
--defaults-file=# |
Lea solo las opciones predeterminadas del número de archivo dado. |
--defaults-extra-file=# |
Lea este archivo después de leer los archivos globales. |
--defaults-group-suffix=# |
Además de los grupos de opciones predeterminados, lea también los grupos de opciones con este sufijo. |
En MariaDB 10.2 y posterior, mysql_upgrade
está vinculado con MariaDB Connector / C. Sin embargo, MariaDB Connector / C aún no maneja el análisis de archivos de opciones para este cliente. Eso todavía lo realiza el código de análisis del archivo de opciones del servidor. Ver MDEV-19035 para más información.
Grupos de opciones
mysql_upgrade
lee las opciones de los siguientes grupos de opciones de los archivos de opciones:
Grupo | Descripción |
---|---|
[mysql_upgrade] |
Opciones leídas por mysql_upgrade , que incluye MariaDB Server y MySQL Server. |
[client] |
Opciones leídas por todos los programas cliente MariaDB y MySQL, que incluyen clientes MariaDB y MySQL. Por ejemplo, mysqldump . |
[client-server] |
Opciones leídas por todos los programas cliente MariaDB y el servidor MariaDB. Esto es útil para opciones como socket y puerto, que es común entre el servidor y los clientes. |
[client-mariadb] |
Opciones leídas por todos los programas cliente de MariaDB. |
Diferencias entre mysql_upgrade en MariaDB y MySQL
Esto es a partir de MariaDB 5.1.50:
- MariaDB convertirá correctamente los nombres de tablas largas.
- MariaDB convertirá tablas InnoDB (no es necesario hacer un volcado / restauración o
ALTER TABLE
). - MariaDB convertirá las tablas de archivo antiguas al nuevo formato 5.1.
- “mysql_upgrade –verbose” ejecutará “mysqlcheck –verbose” para que obtenga más información de lo que está sucediendo. Ejecutando con 3 veces –verbose imprimirá en MariaDB 10.0 todos los comandos CHECK, RENAME y ALTER TABLE ejecutados.
- La tabla mysql.event se actualiza en vivo; no es necesario reiniciar el servidor para usar eventos si la tabla de eventos ha cambiado (MariaDB 10.0.22 y MariaDB 10.1.9).
- Salida más descriptiva.
Acelerando mysql_upgrade
– Si está seguro de que todas sus tablas están actualizadas con la versión actual, puede ejecutar mysql_upgrade ---upgrade-system-tables
, que solo arreglará las tablas de su sistema en la base de datos mysql para que sean compatibles con la última versión.
La principal razón para correr mysql_upgrade
en todas sus tablas es permitirle verificar que:
- No ha habido ningún cambio en los formatos de tabla entre versiones.
- Esto no ha sucedido desde MariaDB 5.1.
- Si algunas de las tablas utilizan un índice para el que hemos cambiado el orden de clasificación.
- Esto no ha sucedido desde MariaDB 5.5.
Si está 100% seguro de que esto se aplica a usted, simplemente puede ejecutar mysql_upgrade
con el ---upgrade-system-tables
opción.
Síntomas de no haber ejecutado mysql_upgrade cuando era necesario
- Errores en el registro de errores que indican que algunas tablas del sistema no tienen todas las columnas necesarias.
- Es posible que las actualizaciones o búsquedas no encuentren el registro que están intentando actualizar o buscar.
- CHECKSUM TABLE puede informar una suma de comprobación incorrecta para las tablas MyISAM o Aria.
Para solucionar problemas como este, ejecute mysql_upgrade
, mysqlcheck, CHECK TABLE y si es necesario REPAIR TABLE en la tabla incorrecta.
Otros usos
mysql_upgrade
volverá a crear las tablas que faltan en la base de datos mysql. No tocará ningún dato en tablas existentes.
Ver también
- mysqlcheck
- VER TABLA
- MESA DE REPARACION
El contenido reproducido en este sitio es propiedad de sus respectivos dueños, y MariaDB no revisa este contenido con anticipación. Los puntos de vista, la información y las opiniones expresadas por este contenido no representan necesariamente las de MariaDB o de cualquier otra parte.