La forma más rápida, y simultáneamente más difícil, de hacer una copia de seguridad en MySQL es por medio del terminal, pudiendo definir varias bases de datos en una línea para copiar tablas distintas. Una nota, ya que MySQL y MariaDB tienen mucho en común, todos los comandos de este artículo aplican tanto a MySQL como a MariaDB.
Hacer una copia de seguridad
Empecemos con el ejemplo de hacer una copia de una base de datos con el nombre Datosweb:
mysqldump -u usuario -p Datosweb > datosweb.sql
El primer parámetro de -u se utiliza para definir cuál usuario se va utilizar para acceder a la base de datos, este puede ser root o un usuario con permisos para leer la base de datos que está siendo copiada. El parámetro -p indica que se requiere una contraseña, y hasta se puede incluir la contraseña en el comando, pero esto no es recomendable por razones de seguridad, si no se incluye la contraseña el sistema se lo pide. Al continuar, el comando mysqldump espera que indiquemos la base de datos que vamos a copiar, en caso que deseé copiar sólo ciertas tablas, éstas se pueden añadir inmediatamente después del nombre de la base de datos, como en este ejemplo:
mysqldump -u usuario -p Datosweb tabla2 tabla3 > datosweb.sql
Se deja un espacio entre la base de datos y cada una de las tablas que desea copiar. Para copiar más de un base de datos, se utiliza el parámetro -databases como en este ejemplo:
mysqldump -u usuario -p -databases Datosweb Datos2 Datoscus > copiadedatos.sql
Cada base de datos que se va copiar se indica después del parámetro -databases, dejando un espacio entre cada uno. El símbolo de > que se utiliza indica que los resultados del comando mysqldump se debe grabar en el archivo que se indica a continuación, este no tiene que terminar en .sql, pero es recomendable para facilitar la identificación de archivos en el futuro. Por último, para hacer una copia de todas las bases de datos en el servidor, utilice el parámetro –all-databases:
mysqldump -u -usuario -p --all-databases > copia.sql
Restaurar bases de datos
Restaurar una base de datos en otro servidor es igual de fácil y se puede hacer con el siguiente comando:
mysql -u usuario -p Datosweb < datosweb.sql
En este caso utilizamos el comando mysql de forma similar que utilizamos mysqldump para hacer la copia. Note que el símbolo de mayor a (>) ahora se cambia a menos de (>) en el comando de restaurar. Esto indica que el comando que lo precede, en este caso mysql, debe tomar el archivo que sigue como entrada de datos. Si la copia consiste en más de una base de datos, utilice el siguiente comando:
mysql -u usuario -p < copia.sql
El comando se puede poner de esta forma ya que mysqldump incluye comandos SQL dentro del archivo para identificar cada base de datos. Asegúrese de ejecutar el comando con un usuario que tiene permisos adecuados para restaurar una o más bases de datos dependiendo del comando que utilice.