Función GTID
MySQL 5.6 introdujo la función Global Transaction Identifier (GTID). Por este motivo, la utilidad mysqldump en MySQL 5.6 y versiones posteriores incluye la opción set-gtid-purged.
|
Parámetro |
Valor predeterminado |
Valor |
Descripción |
||
|
set-gtid-purged |
AUTO |
ON\ |
OFF\ |
AUTO |
Controla si se incluye la instrucción |
ON: Incluye la instrucciónSET @@GLOBAL.GTID_PURGEDen la salida demysqldump.OFF: No incluye la instrucciónSET @@GLOBAL.GTID_PURGEDen la salida demysqldump.AUTO: Valor predeterminado. Incluye la instrucciónSET @@GLOBAL.GTID_PURGEDsi GTID está habilitado en la instancia de origen. De lo contrario, no se incluye información de GTID.
Por lo tanto, al usar mysqldump de MySQL 5.6 o posterior para exportar datos desde una instancia de ApsaraDB RDS for MySQL 5.5, debe establecer set-gtid-purged en OFF. De lo contrario, se produce uno de los siguientes errores:
Error: Server has GTIDs disabled.
or
mysqldump: Couldn’t execute ‘SELECT @@GTID_MODE’: Unknown system variable ‘GTID_MODE’ <1193>
Cómo evitar esperas por bloqueos a nivel de tabla
De forma predeterminada, mysqldump habilita la opción lock-tables. Esta opción aplica un bloqueo a nivel de tabla sobre las tablas exportadas y bloquea las operaciones de lenguaje de manipulación de datos (DML) en ellas.
Los motores de almacenamiento InnoDB y TokuDB, compatibles de forma predeterminada en las instancias de ApsaraDB RDS for MySQL, admiten transacciones. Se recomienda utilizar la opción single-transaction para exportar los datos en lugar de usar las opciones lock-all-tables o lock-tables.
|
Parámetro |
Valor predeterminado |
Valor |
Descripción |
|
|
lock-all-tables |
FALSE |
TRUE\ |
FALSE |
Adquiere un bloqueo de lectura global durante toda la exportación. Esto convierte todas las tablas de todas las bases de datos en solo lectura. Esta opción deshabilita automáticamente las opciones |
|
lock-tables |
TRUE |
TRUE\ |
FALSE |
Bloquea las tablas exportadas durante la exportación. Esta opción está habilitada de forma predeterminada. Para deshabilitarla, utilice la opción |
|
single-transaction |
FALSE |
TRUE\ |
FALSE |
Realiza la exportación dentro de una sola transacción. Esta opción deshabilita automáticamente la opción |
Configuración del conjunto de caracteres de exportación
Si no especifica un conjunto de caracteres, mysqldump utiliza UTF8 de forma predeterminada.
|
Parámetro |
Valor predeterminado |
Valor |
Descripción |
|
default-character-set |
UTF8 |
Conjuntos de caracteres compatibles con la instancia |
Establece el conjunto de caracteres para la exportación. |
Otras opciones de exportación
|
Parámetro |
Valor predeterminado |
Valor |
Descripción |
|||
|
no-defaults |
NA |
NA |
No lee ningún archivo de opciones, excepto |
|||
|
defaults-file=file_name |
NA |
NA |
Lee únicamente el archivo de opciones especificado. |
|||
|
add-drop-database |
FALSE |
TRUE\ |
FALSE |
Agrega una instrucción |
||
|
add-drop-table |
TRUE |
TRUE\ |
FALSE |
Agrega una instrucción |
||
|
add-locks |
TRUE |
TRUE\ |
FALSE |
Rodea cada volcado de tabla con instrucciones |
||
|
compatible=name |
NA |
ansi\ |
postgresql\ |
oracle\ |
mssql |
Genera una salida más compatible con el tipo de base de datos especificado. |
|
compact |
FALSE |
TRUE\ |
FALSE |
Habilita las opciones |
||
|
databases |
FALSE |
TRUE\ |
FALSE |
Exporta varias bases de datos. De forma predeterminada, |
||
|
disable-keys |
TRUE |
TRUE\ |
FALSE |
Rodea las instrucciones |
||
|
events |
FALSE |
TRUE\ |
FALSE |
Exporta eventos programados de las bases de datos volcadas. |
||
|
extended-insert |
TRUE |
TRUE\ |
FALSE |
Utiliza sintaxis extendida de |
||
|
hex-blob |
FALSE |
TRUE\ |
FALSE |
Exporta columnas |
||
|
ignore-table=db.tab |
NA |
NA |
Excluye la tabla o vista especificada. El formato es |
|||
|
max-allowed-packet |
24 MB |
24 MB a 1 GB |
Establece el tamaño máximo del búfer para la comunicación cliente-servidor. El valor predeterminado es 24 MB. El valor máximo es 1 GB. |
|||
|
no-create-db |
FALSE |
TRUE\ |
FALSE |
Suprime las instrucciones |
||
|
no-create-info |
FALSE |
TRUE\ |
FALSE |
Suprime las instrucciones |
||
|
no-data |
FALSE |
TRUE\ |
FALSE |
No escribe ningún dato de fila. |
||
|
opt |
TRUE |
TRUE\ |
FALSE |
Habilita las opciones |
||
|
dump-date |
TRUE |
TRUE\ |
FALSE |
Agrega una marca de tiempo del volcado como comentario al final de la salida. Esto requiere la opción |
||
|
routines |
FALSE |
TRUE\ |
FALSE |
Exporta procedimientos almacenados y funciones. Esta opción está deshabilitada de forma predeterminada. |
||
|
result-file |
NA |
NA |
Redirige la salida a un archivo especificado. |
|||
|
set-charset |
TRUE |
TRUE\ |
FALSE |
Agrega |
||
|
triggers |
TRUE |
TRUE\ |
FALSE |
Exporta los desencadenadores de cada tabla volcada. |
Opciones no compatibles
|
Parámetro |
Valor predeterminado |
Valor |
Descripción |
|
|
all-databases |
FALSE |
TRUE\ |
FALSE |
Exporta todas las bases de datos, incluida la base de datos |
|
flush-logs |
FALSE |
TRUE\ |
FALSE |
Ejecuta un comando |
|
flush-privileges |
FALSE |
TRUE\ |
FALSE |
Agrega un comando |
|
lock-all-tables |
FALSE |
TRUE\ |
FALSE |
Adquiere un bloqueo de lectura global durante la duración de la exportación, lo que convierte todas las tablas de todas las bases de datos en solo lectura. Esta opción deshabilita automáticamente las opciones |
|
tab=dir_name |
NA |
NA |
Genera un archivo |
Opciones no compatibles y motivos
-
all-databases: Esta opción no es compatible. Las cuentas de usuario estándar en ApsaraDB RDS for MySQL no tienen permisos para algunas tablas en la base de datosmysql. El uso de esta opción provoca un error.Mensaje de error
mysqldump: Couldn’t execute ‘show create table slow_log‘: SHOW command denied to user ‘xxx’@’xx.xx.xx.xx’ for table ‘slow_log’ (1142) -
flush-logs: Esta opción no es compatible. Las cuentas de usuario estándar en ApsaraDB RDS for MySQL no tienen el privilegioRELOADy, por lo tanto, no pueden ejecutar el comandoflush logs;.Mensaje de error
mysqldump: Couldn’t execute ‘FLUSH TABLES’: Access denied; you need (at least one of) the RELOAD privilege(s) for this operation (1227) flush-privileges: Esta opción es innecesaria porque ApsaraDB RDS for MySQL no admite la exportación de la base de datosmysql.-
lock-all-tables: Esta opción no es compatible. Las cuentas de usuario estándar en ApsaraDB RDS for MySQL no tienen el privilegioRELOAD.Mensaje de error
mysqldump: Couldn’t execute ‘FLUSH TABLES’: Access denied; you need (at least one of) the RELOAD privilege(s) for this operation (1227) -
tab=dir_name: Esta opción no es compatible porque requiere quemysqldumpse ejecute en la misma máquina física que aloja la instancia de ApsaraDB RDS for MySQL. Sin embargo, puede utilizar esta opción junto con la opciónno-datapara generar archivos que contengan instruccionesCREATE TABLE.# Use this option with the no-data option to obtain the tab_name.sql file, which contains the CREATE TABLE statement for each table in the test database. mysqldump —no-defaults -uuser_name -ppass_word -hxxx.mysql.rds.aliyuncs.com -P3306 —set-gtid-purged=off —single-transaction —tab=/tmp —no-data test # Error message returned when you export data without using the --no-data option: mysqldump —no-defaults -uuser_name -ppass_word -hxxx.mysql.rds.aliyuncs.com -P3306 —set-gtid-purged=off —single-transaction —tab=/tmp test mysqldump: Got error: 1045: Access denied for user ‘xxx’@’%’ (using password: YES) when executing ‘SELECT INTO OUTFILE’