下面就是“Linux下定时自动备份Docker中所有SqlServer数据库的脚本”的攻略。
准备工作
在开始操作脚本之前,需要先进行一些准备工作。
安装mssql-cli工具
为了能够操作SqlServer数据库,需要安装mssql-cli工具。mssql-cli是微软推出的命令行工具,能够方便地连接SqlServer数据库以及执行T-SQL语句。
安装方法如下:
curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
sudo add-apt-repository "$(curl https://packages.microsoft.com/config/ubuntu/16.04/mssql-server-preview.list)"
sudo apt-get update
sudo apt-get install mssql-cli
创建备份目录
在Linux系统中,所有的备份文件都需要存储在一个备份目录下。可以通过如下命令创建一个名为/backup
的备份目录:
sudo mkdir /backup
sudo chmod 777 /backup
现在,我们已经完成了所有的准备工作,可以开始操作脚本了。
操作脚本
STEP 1:编写备份脚本
创建一个名为backup.sql
的文件,并输入如下脚本:
DECLARE @dbname varchar(255)
DECLARE @filename varchar(255)
DECLARE db_cursor CURSOR FOR
SELECT name FROM MASTER.dbo.sysdatabases
WHERE name NOT IN ('master','model','msdb','tempdb');
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @dbname
WHILE @@FETCH_STATUS = 0
BEGIN
SET @filename = '/backup/' + @dbname + '_' + CONVERT(VARCHAR(8), GETDATE(), 112) + '.bak'
BACKUP DATABASE @dbname TO DISK = @filename WITH INIT, SKIP, NOFORMAT
FETCH NEXT FROM db_cursor INTO @dbname
END
CLOSE db_cursor
DEALLOCATE db_cursor
这段脚本的作用是备份所有的SqlServer数据库,并将备份文件存储在/backup
目录下。备份文件的命名格式为数据库名_备份日期.bak
。
STEP 2:创建备份脚本
将上述脚本保存为backup.sql
文件,并将其存储在本地。
STEP 3:创建定时任务
接下来,我们需要创建一个定时任务来定期执行备份脚本。
打开Linux系统中的定时任务文件:
sudo crontab -e
然后在文件的末尾添加一行:
0 2 * * * /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P your_password -i /path/to/backup.sql
这行命令的含义是:每天凌晨2点执行备份脚本/path/to/backup.sql
。其中,-S
参数指定连接的SqlServer数据库,-U
和-P
参数指定连接的用户名和密码。
示例说明1
如果我们需要每小时备份SqlServer数据库,可以将定时任务改为:
0 * * * * /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P your_password -i /path/to/backup.sql
这行命令的含义是:每小时执行备份脚本/path/to/backup.sql
。
示例说明2
如果需要将备份文件存储在其他目录中,可以修改备份脚本中的备份路径。例如,将备份文件保存在/data/backup
目录中:
SET @filename = '/data/backup/' + @dbname + '_' + CONVERT(VARCHAR(8), GETDATE(), 112) + '.bak'
然后将定时任务中的备份脚本路径修改为:
0 2 * * * /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P your_password -i /path/to/backup.sql
这样,每天凌晨2点备份的文件就会存储在/data/backup
目录中。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Linux下定时自动备份Docker中所有SqlServer数据库的脚本 - Python技术站