温馨提示×

如何备份Ubuntu上的SQL Server

小樊
43
2025-08-01 02:14:09
栏目: 云计算

在Ubuntu上备份SQL Server数据库可以通过多种方法实现,以下是详细的步骤和示例:

安装和配置SQL Server

首先,确保在Ubuntu上正确安装和配置了SQL Server。可以参考Microsoft的官方文档来安装SQL Server和必要的工具。

使用sqlcmd进行手动备份

  1. 安装必要的工具

    sudo apt-get update
    sudo apt-get install mssql-tools unixodbc-dev
    
  2. 创建备份脚本

    创建一个备份脚本文件,例如 backup_mssql.sh,并添加以下内容:

    #!/bin/bash
    # 设置备份目录 BACKUP_DIR="/var/opt/mssql/data/backup"
    # 数据库信息 DB_SERVER="localhost" DB_USER="sa" DB_PASSWORD="your_password" DB_NAME="YourDatabaseName"
    # 执行完全备份
    /opt/mssql-tools/bin/sqlcmd -S $DB_SERVER -U $DB_USER -P $DB_PASSWORD -Q "BACKUP DATABASE $DB_NAME TO DISK = '$BACKUP_DIR/$DB_NAME\_full.bak' WITH INIT, SKIP, NAME='Full Backup of $DB_NAME'"
    # 执行差异备份
    /opt/mssql-tools/bin/sqlcmd -S $DB_SERVER -U $DB_USER -P $DB_PASSWORD -Q "BACKUP DATABASE $DB_NAME TO DISK = '$BACKUP_DIR/$DB_NAME\_diff.bak' WITH DIFFERENTIAL, INIT, SKIP, NAME='Differential Backup of $DB_NAME'"
    # 执行日志备份
    /opt/mssql-tools/bin/sqlcmd -S $DB_SERVER -U $DB_USER -P $DB_PASSWORD -Q "BACKUP LOG $DB_NAME TO DISK = '$BACKUP_DIR/$DB_NAME\_log.bak' WITH INIT, SKIP"
    
  3. 赋予脚本执行权限

    chmod +x /path/to/backup_mssql.sh
    
  4. 运行备份脚本

    ./backup_mssql.sh
    

使用crontab进行自动备份

  1. 编辑crontab

    使用 crontab -e 编辑当前用户的 crontab 文件。

  2. 添加定时任务

    添加以下行以每天凌晨执行备份脚本:

    0 0 * * * /path/to/your/backup_mssql.sh
    

异地备份

可以使用 rclone 将备份文件同步到远程服务器或数据中心:

  1. 安装 rclone

    sudo apt-get install rclone
    
  2. 配置 rclone

    根据你的需求配置 rclone,例如将备份文件同步到 MinIO 服务器:

    rclone sync /var/opt/mssql/data/backup minio:database-180
    

恢复SQL Server数据库

使用 sqlcmd 进行恢复:

  1. 完全恢复

    sqlcmd -S localhost -U SA -P 'YourPassword' -Q "RESTORE DATABASE [YourDatabaseName] FROM DISK='/var/opt/mssql/data/[YourDatabaseName]_full.bak' WITH NORECOVERY"
    
  2. 从差异备份恢复

    sqlcmd -S localhost -U SA -P 'YourPassword' -Q "RESTORE DATABASE [YourDatabaseName] FROM DISK='/var/opt/mssql/data/[YourDatabaseName]_diff.bak' WITH NORECOVERY, MOVE 'YourDatabaseName_Data' TO '/var/opt/mssql/data/[YourDatabaseName].mdf', MOVE 'YourDatabaseName_Log' TO '/var/opt/mssql/data/[YourDatabaseName]_log.ldf'"
    
  3. 从日志备份恢复

    sqlcmd -S localhost -U SA -P 'YourPassword' -Q "RESTORE LOG [YourDatabaseName] FROM DISK='/var/opt/mssql/data/[YourDatabaseName]_log.[YourLogNumber].bak'"
    

通过上述步骤,你可以在Ubuntu上成功配置SQL Server,并完成数据库的备份和恢复测试。请根据你的实际需求调整备份和恢复策略,并定期检查备份文件的完整性。

0