Copia de seguridad de todas o solo las bases de datos del servidor MySQL requeridas

Si administra solo unas pocas bases de datos, las operaciones regulares de copia de seguridad se pueden realizar con bastante facilidad y sin problemas, ya sea con unos pocos scripts simples o configurando un agente de SQL Server que realizará la copia de seguridad automáticamente. Pero a veces la situación es más complicada. Si, por ejemplo, hay cientos de bases de datos, hacer una copia de seguridad de cada una manualmente puede ser una tarea que consume mucho tiempo.

Por lo tanto, encontrar una solución que respalde todas o solo las bases de datos requeridas sin afectar el rendimiento del servidor es importante para los desarrolladores y administradores de bases de datos.

En este artículo, nuestro objetivo es proporcionar un ejemplo práctico de copia de seguridad de bases de datos definidas por bases de datos y copia de seguridad masiva de todas las bases de datos. La tarea se realizará utilizando dbForge Studio para MySQL, que le permite realizar tareas de rutina tanto en la línea de comandos como en PowerShell. En este artículo, consideraremos ambas opciones.

Índice

    Copia de seguridad de todas las bases de datos de la conexión seleccionada

    Para completar la tarea, necesitamos crear un script.

    1. Abra un editor de texto simple, como el Bloc de notas.
    2. Introduce el siguiente código:
    Set-Location -Path "C:Program FilesMySQLMySQL Server 5.7bin" -PassThru
    
    .mysql.exe --host=localhost --user=root --password=root --skip-column-names --execute="SELECT s.SCHEMA_NAME FROM information_schema.SCHEMATA s WHERE s.SCHEMA_NAME NOT IN ('
    mysql', 'information_schema', 'sys', 'performance_schema')" | Out-File "D:backupall_databases_backupPowerShellalldatabases.txt"
    
    foreach($DBname in Get-Content "D:backupall_databases_backupPowerShellalldatabases.txt")
    {Write-Host $DBname
    &"C:Program FilesDevartdbForge Studio for MySQLdbforgemysql.com" /backup /connection:"User Id=root;Password=root;Host=localhost;Port=3306;Character Set=utf8" /Base de datos:$DBname /outputfile:"D:backupall_databases_backupPowerShellall_DB_backup$DBname.sql"}

    Donde:

    C:Archivos de programaMySQLMySQL Server 5.7bin - La ruta al servidor MySQL.

    D: copia de seguridad all_databases_backup PowerShell all_DB_backup - ubicación en su ordenador para almacenar archivos de salida.

    C:Archivos de programaDevartdbForge Studio for MySQLdbforgemysql.com - Ruta de dbForge Studio para MySQL.

    1. Asigna tus propios valores ID de usuario, Contraseña, El propietario y Puerto parámetros
    2. Guarde el archivo con una extensión .PS1 (por ejemplo, all_DB_backup.ps1).

    Tenga en cuenta que no pretendemos explicar todos los aspectos de la sintaxis de la línea de comandos en este artículo. Contáctenos para más información centro de documentación.

    Ejecución del guión.

    Al completar con éxito la carpeta de copia de seguridad all_DB_backup con archivos SQL a crear.

    Carpeta llena de archivos SQL para copia de seguridad

    Copia de seguridad de bases de datos de una lista

    Para realizar la tarea necesitamos el siguiente conjunto de archivos:

    1. Un archivo TXT con una lista de bases de datos para respaldar llamado DB_list.txt.
    2. Archivo PS con guión.

    Primero identifiquemos las bases de datos que queremos respaldar.

    1. Abra un nuevo documento de cuaderno y cree una lista de bases de datos.
    2. Guarde el nuevo archivo TXT como DB_list.txt.

    Tenga en cuenta que la lista de bases de datos debe escribirse en forma de columnas sin delimitadores, cada base de datos en una nueva fila.

    Lista de bases de datos en el archivo .txt

    Luego necesitamos crear un script en el archivo PS1.

    1. Abra un editor de texto simple, como el Bloc de notas.
    2. Introduce el siguiente código:
    foreach($DBname in Get-Content "D:backupall_databases_backupPowerShellDB_list.txt")
    {Write-Host $DBname
    &"C:Program FilesDevartdbForge Studio for MySQLdbforgemysql.com" /backup /connection:"User Id=root;Password=root;Host=localhost;Port=3306;Character Set=utf8" /Base de datos:$DBname /outputfile:"D:backupDB_databases_backupPowerShellDB_list_backup$DBname.sql"}
    

    Donde:

    D: copia de seguridad DB_databases_backup PowerShell DB_list_backup - ubicación en su ordenador para almacenar archivos de salida.

    C:Archivos de programaDevartdbForge Studio for MySQLdbforgemysql.com - Ruta de dbForge Studio para MySQL.

    1. Asigna tus propios valores ID de usuario, Contraseña, El propietario y Puerto parámetros
    2. Guarde el archivo con una extensión .PS1 (por ejemplo, DB_list_backup.ps1).

    Ejecución del guión.

    Al completar con éxito la carpeta de copia de seguridad DB_list_backup con archivos SQL a crear.

    Carpeta con archivos SQL

    Bases de datos de copia de seguridad con una máscara

    Para completar la tarea, necesitamos crear un script.

    1. Abra un editor de texto simple, como el Bloc de notas.
    2. Introduce el siguiente código:
    Set-Location -Path "C:Program FilesMySQLMySQL Server 5.7bin" -PassThru
    
    .mysql.exe --host=localhost --user=root --password=root --skip-column-names --execute="SELECT s.SCHEMA_NAME FROM information_schema.SCHEMATA s WHERE s.SCHEMA_NAME NOT IN ('mysql', 'information_schema', 'sys', 'performance_schema') and s.SCHEMA_NAME like '%$args%' " | Out-File "D:backupall_databases_backupPowerShellDB_by_mask.txt"
    
    foreach($DBname in Get-Content "D:backupall_databases_backupPowerShellDB_by_mask.txt")
    {Write-Host $DBname
    &"C:Program FilesDevartdbForge Studio for MySQLdbforgemysql.com" /backup /connection:"User Id=root;Password=root;Host=localhost;Port=3306;Character Set=utf8" /Base de datos:$DBname /outputfile:"D:backupall_databases_backupPowerShellDB_by_mask_backup$DBname.sql"}
    

    Donde:

    C:Archivos de programaMySQLMySQL Server 5.7bin - ruta al servidor.

    D: copia de seguridad all_databases_backup PowerShell DB_by_mask_backup - ubicación en su ordenador para almacenar archivos de salida.

    C:Archivos de programaDevartdbForge Studio for MySQLdbforgemysql.com - Ruta de dbForge Studio para MySQL.

    1. Asigna tus propios valores ID de usuario, Contraseña, El propietario y Puerto parámetros
    2. Guarde el archivo con una extensión .PS1 (por ejemplo, DB_by_mask_backup.ps1).

    Ejecución del guión.

    Debe ejecutar un script con un parámetro opcional. Por ejemplo, DB_by_mask_backup.ps1 test_DB_name.

    Al completar con éxito la carpeta de copia de seguridad DB_por_mask_backup con archivos SQL a crear.

    Creación exitosa de archivos de copia de seguridad de SQL

    archivo beta

    También puede crear un archivo BAT ejecutable para realizar la tarea principal a través de la interfaz de línea de comandos.

    Para crear un archivo BAT:

    1. Abra un editor de texto simple, como el Bloc de notas.
    2. Introduce el siguiente código:
    SetLocal EnableExtensions EnableDelayedExpansion
    
    Set Backup="C:Program FilesDevartdbForge Studio for MySQLdbforgemysql.com"
    
    goto DB_backup%1
    
    rem backup of all databases
    :DB_backup
    :DB_backup1
    
    "C:Program FilesMySQLMySQL Server 5.7binmysql.exe" --host=localhost --user=root --password=root --skip-column-names --execute="SELECT s.SCHEMA_NAME FROM information_schema.SCHEMATA s WHERE s.SCHEMA_NAME NOT IN ('mysql', 'information_schema', 'sys', 'performance_schema')" > "D:backupall_databases_backupalldatabases.txt"
    
    FOR /F "eol=; tokens=1,2* delims=, " %%e in (alldatabases.txt) do ( 
    %backup%  /backup /connection:"User Id=root;Password=root;Host=localhost;Port=3306;Character Set=utf8" /Base de datos:%%e /outputfile:"D:backupall_databases_backupall_DB_backup%%e.sql"
    )
    goto finish
    
    rem backup databases from the list
    :DB_backup2
    
    FOR /F "eol=; tokens=1,2* delims=, " %%e in (DB_list.txt) do ( 
    %backup%  /backup /connection:"User Id=root;Password=root;Host=localhost;Port=3306;Character Set=utf8" /Base de datos:%%e /outputfile:"D:backupall_databases_backupDB_list_backup%%e.sql"
    )
    goto finish
    
    rem backup databases by mask
    :DB_backup3
    set mask='%%% %%2%%%'
    "C:Program FilesMySQLMySQL Server 5.7binmysql.exe" --host=localhost --user=root --password=root --skip-column-names --execute="SELECT s.SCHEMA_NAME FROM information_schema.SCHEMATA s WHERE s.SCHEMA_NAME NOT IN ('mysql', 'information_schema', 'sys', 'performance_schema')  AND s.SCHEMA_NAME LIKE %mask%" > "D:backupall_databases_backupDB_by_mask.txt"
    
    FOR /F "eol=; tokens=1,2* delims=, " %%e in (DB_by_mask.txt) do ( 
    %backup%  /backup /connection:"User Id=root;Password=root;Host=localhost;Port=3306;Character Set=utf8" /Base de datos:%%e /outputfile:"D:backupall_databases_backupDB_by_mask_backup%%e.sql"
    )
    goto finish
    
    :finish
    

    Donde:

    C:Archivos de programaMySQLMySQL Server 5.7bin - ruta al servidor.

    D: copia de seguridad all_databases_backup - ubicación en su ordenador para almacenar archivos de salida.

    C:Archivos de programaDevartdbForge Studio for MySQLdbforgemysql.com - Ruta de dbForge Studio para MySQL.

    1. Asigna tus propios valores ID de usuario, Contraseña, El propietario y Puerto parámetros
    2. Guarde el archivo con una extensión .bat.

    Ejecución del guión.

    El archivo BAT se ejecuta con los siguientes parámetros de entrada:

    1 o vacío: se realizará una copia de seguridad de todas las bases de datos de la conexión

    2 - todas las bases de datos enumeradas en el art. DB_list.txt se creará el archivo

    3 "máscara": se crearán todas las bases de datos cuyo nombre coincida con el nombre de la máscara.

    Ejemplos de ejecución

    Todas las bases de datos:

    all_DB_backup_with_param.bat

    all_DB_backup_with_param.bat 1

    Bases de datos de la lista:

    all_DB_backup_with_param.bat 2

    Bases de datos de máscaras:

    Bases de datos de máscaras

    Una vez que la copia de seguridad se complete con éxito, se creará la carpeta correspondiente con los archivos SQL:

    all_DB_backup - para todas las bases de datos

    DB_list_backup - para bases de datos de la lista

    DB_por_mask_backup - para bases de máscara seleccionadas.

    Tres carpetas coincidentes con archivos SQL

    Conclusión

    La copia de seguridad de MySQL Server es una tarea importante y está diseñada para proteger los datos almacenados en las bases de datos de SQL Server de pérdidas críticas debido a fallas de hardware, intrusiones en la red, errores humanos, etc.

    En este artículo, hemos presentado una solución para realizar copias de seguridad de bases de datos definidas por listas y realizar copias de seguridad masivas de todas las bases de datos. Para realizar esta tarea, creamos un archivo bat que maneja la tarea con un solo clic. Además, se proporcionaron tres scripts de trabajo para realizar copias de seguridad de todas las bases de datos, realizar copias de seguridad de bases de datos de una lista y realizar copias de seguridad de bases de datos con una máscara.

    Artículos de interés

    Subir