¿Mysqldump agregar drop table?
Noto en el Codex que se muestra la opción --add-drop-table para hacer copias de seguridad de una base de datos. Antes de estropear algo, ¿esto significa que cuando la copia de seguridad se importe eventualmente, las tablas se sobrescribirán si existen en la base de datos de destino?
¡No quiero eliminar las tablas cuando hago la copia de seguridad!
user@linux:~/files/blog> mysqldump --add-drop-table -h mysqlhostserver
-u mysqlusername -p databasename (tablename tablename tablename) | bzip2
-c > blog.bak.sql.bz2
Enter password: (ingresa tu contraseña mysql)
user@linux~/files/blog>
http://codex.wordpress.org/Backing_Up_Your_Database#Using_Straight_MySQL_Commands
Solo afecta la salida de tu volcado de MySQL en el archivo que se crea.
No es necesario. Solo está ahí para que si importas el archivo de volcado creado en una base de datos que ya tiene una tabla con el mismo nombre, eliminará esa tabla y luego agregará la nueva tabla en su lugar. De lo contrario, obtendrás un error y el archivo de volcado no se importará.
Agrega esta línea antes de la sentencia CREATE TABLE en el archivo de volcado:
DROP TABLE IF EXISTS `nombre_tabla`;
Si planeas importar el archivo de volcado en una base de datos nueva, no importará.

Eso es porque la sintaxis general es algo como:
mysql>mysqldump --opt --all-databses > all.sql
--opt
está habilitado por defecto (lo que implica: --add-drop-table
) como se menciona en la documentación de MySQL.

Al eliminar --add-drop-table en esta sintaxis, --add-drop-table se usa de todos modos, porque --opt es el valor predeterminado (a menos que uses --skip-opt) y --opt incluye --add-drop-table. Consulta aquí: https://dev.mysql.com/doc/refman/5.6/en/mysqldump.html#option_mysqldump_opt
Y, como se mencionó anteriormente, no significa que tus tablas se eliminen cuando haces la copia de seguridad, sino que los comandos para eliminar tablas se incluyen en el archivo sql, porque eso es lo que deseas para un volcado, para que puedas importar el volcado sin obtener errores de que las tablas ya existen.

Sí, esto haría exactamente lo que dice, es decir, eliminaría la tabla si ya existiera. Por favor, recuerda que estás creando un volcado que será importado (con dos escenarios);
En caso de creación de una base de datos (o tabla) nueva, no habrá diferencia con la sentencia DROP TABLE, porque no hay tabla que eliminar en primer lugar.
Pero para omitir la eliminación de una tabla ya creada; usa --skip-add-drop-table en su lugar. (También usa --no-create-info con --skip-add-drop-table porque tampoco querrás la sentencia CREATE TABLE) es decir:
mysqldump --skip-add-drop-table --no-create-info -h mysqlhostserver -u mysqlusername -p databasename tablename | bzip2 -c > blog.bak.sql.bz2
Para tu información: No puedes exportar más de una tabla usando (tablename, tablename, tablename). O exportas todas las tablas sin usar ningún nombre de tabla después del nombre de la base de datos O usa solo un nombre de tabla.
Edición
Ten en cuenta que si tu tabla es muy grande, es recomendable exportarla en partes. Es decir, crear archivos de volcado de 80k (ochenta mil) registros (aproximadamente igual a 10 Mb) usando el siguiente comando; Para tu información: Dividí la exportación usando WHERE en mysqldump.
mysqldump -h mysqlhostserver -u mysqlusername -p --add-drop-table --add-drop-trigger --skip-triggers --dump-date --single-transaction --where='1 limit 0,80000' databasename tablename > /home/blog1.bak.sql
mysqldump mysqlhostserver -u mysqlusername -p --skip-add-drop-table --no-create-info --dump-date --single-transaction --where='1 limit 80000,999999' databasename tablename > /home/blog2.bak.sql
El comando anterior primero crea el archivo de los primeros 80K registros blog1.bak.sql (nota que omití los triggers en este volcado. Descubrí después que si el primer volcado tenía algún trigger asociado en inserción o actualización, entonces cuando importaras este primer archivo de volcado:
- crearía la tabla
- insertaría los registros en la tabla recién creada
- crearía los triggers asociados con esta tabla y los aplicaría
Así que cuando importaras el otro archivo de volcado después del primero; se aplicarían los triggers (no hay forma de desactivarlos por ahora; excepto reescribiendo esos triggers y añadiendo código complicado para desactivarlos durante la depuración O en nuestro caso durante la importación). Normalmente los triggers tienen código con JOINS a otras tablas; que podrían no estar importadas antes de esta importación y causar un fallo en la importación.
