在Ubuntu上备份SQL Server数据库可以通过多种方法实现,以下是详细的步骤和示例:
首先,确保在Ubuntu上正确安装和配置了SQL Server。可以参考Microsoft的官方文档来安装SQL Server和必要的工具。
安装必要的工具:
sudo apt-get update
sudo apt-get install mssql-tools unixodbc-dev
创建备份脚本:
创建一个备份脚本文件,例如 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"
赋予脚本执行权限:
chmod +x /path/to/backup_mssql.sh
运行备份脚本:
./backup_mssql.sh
编辑crontab:
使用 crontab -e 编辑当前用户的 crontab 文件。
添加定时任务:
添加以下行以每天凌晨执行备份脚本:
0 0 * * * /path/to/your/backup_mssql.sh
可以使用 rclone 将备份文件同步到远程服务器或数据中心:
安装 rclone:
sudo apt-get install rclone
配置 rclone:
根据你的需求配置 rclone,例如将备份文件同步到 MinIO 服务器:
rclone sync /var/opt/mssql/data/backup minio:database-180
使用 sqlcmd 进行恢复:
完全恢复:
sqlcmd -S localhost -U SA -P 'YourPassword' -Q "RESTORE DATABASE [YourDatabaseName] FROM DISK='/var/opt/mssql/data/[YourDatabaseName]_full.bak' WITH NORECOVERY"
从差异备份恢复:
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'"
从日志备份恢复:
sqlcmd -S localhost -U SA -P 'YourPassword' -Q "RESTORE LOG [YourDatabaseName] FROM DISK='/var/opt/mssql/data/[YourDatabaseName]_log.[YourLogNumber].bak'"
通过上述步骤,你可以在Ubuntu上成功配置SQL Server,并完成数据库的备份和恢复测试。请根据你的实际需求调整备份和恢复策略,并定期检查备份文件的完整性。