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.