阅读量:52
在Ubuntu上备份和恢复SQL Server数据库可以通过多种方法实现,以下是详细的步骤和命令:
安装和配置SQL Server
首先,确保你已经在Ubuntu上安装了SQL Server。可以参考Microsoft的官方文档进行安装。
使用sqlcmd进行备份
-
创建备份目录:
sudo mkdir -p /var/opt/mssql/backup sudo chown mssql:mssql /var/opt/mssql/backup sudo chmod 700 /var/opt/mssql/backup -
完全备份:
sqlcmd -S localhost -U SA -P 'YourPassword' -Q "BACKUP DATABASE [YourDatabaseName] TO DISK='/var/opt/mssql/data/[YourDatabaseName]_full.bak' WITH FORMAT, COMPRESSION, STATS 10" -
差异备份(在完整备份后进行):
sqlcmd -S localhost -U SA -P 'YourPassword' -Q "BACKUP DATABASE [YourDatabaseName] TO DISK='/var/opt/mssql/data/[YourDatabaseName]_diff.bak' WITH DIFFERENTIAL, INIT, SKIP, NAME='Differential Backup of [YourDatabaseName]'" -
事务日志备份(每天进行):
sqlcmd -S localhost -U SA -P 'YourPassword' -Q "BACKUP LOG [YourDatabaseName] TO DISK='/var/opt/mssql/data/[YourDatabaseName]_log.bak' WITH INIT, SKIP"
使用sqlcmd进行恢复
-
恢复完整备份:
sqlcmd -S localhost -U SA -P 'YourPassword' -Q "RESTORE DATABASE [YourDatabaseName] FROM DISK='/var/opt/mssql/data/[YourDatabaseName]_full.bak' WITH RECOVERY" -
恢复差异备份(如果有):
sqlcmd -S localhost -U SA -P 'YourPassword' -Q "RESTORE DATABASE [YourDatabaseName] WITH DIFFERENTIAL, RECOVERY" -
恢复事务日志备份(如果有):
sqlcmd -S localhost -U SA -P 'YourPassword' -Q "RESTORE LOG [YourDatabaseName] WITH RECOVERY"
使用脚本自动化备份
可以编写SQL脚本,并使用crontab在Ubuntu上定时执行备份任务。例如,创建一个备份脚本backup_sqlserver.sh:
#!/bin/bash
# 设置数据库连接信息
DB_USER="your_database_user"
DB_PASSWORD="your_database_password"
DB_NAME="your_database_name"
BACKUP_DIR="/path/to/your/backup/directory"
# 获取当前日期作为备份文件名的一部分
DATE=$(date +%Y%m%d)
# 使用sqlcmd工具备份数据库
sqlcmd -S localhost -U $DB_USER -P $DB_PASSWORD -Q "BACKUP DATABASE [$DB_NAME] TO DISK '$BACKUP_DIR/$DB_NAME-$DATE.bak' WITH INIT, SKIP, NAME '$DB_NAME-$DATE'"
为脚本添加可执行权限:
chmod +x backup_sqlserver.sh
使用crontab设置自动备份任务:
0 1 * * * /path/to/backup_sqlserver.sh
注意事项
- 在进行备份和恢复操作之前,请确保已经停止了所有正在运行的服务,并确保数据已备份。
- 恢复操作可能会影响数据库的可用性,建议在低峰时段进行。
- 在执行恢复操作时,请根据实际需求选择合适的恢复模式(如FULL、DIFFERENTIAL等)。
- 定期检查备份文件的完整性,确保备份成功。
以上步骤提供了一个基本的框架,但在实际操作中可能需要根据具体情况进行调整。建议在进行备份恢复测试之前,先在测试环境中验证备份恢复流程的可行性。