专栏首页浩CodingLinux实现SqlServer数据库数据自动备份,并定期删除过期备份文件

Linux实现SqlServer数据库数据自动备份,并定期删除过期备份文件

前言--本地Linux远程连接SqlServer:

实现Linux下远程连接SqlServer过程,或者搜索在Linux上安装Sqlcmd,上篇文章我们讲了在RedHat(或Centos)上安装sqlcmd,现在讲的是Ubuntu(或者Deepin)系列安装教程:

1 导入公共存储库 GPG 密钥:

curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -

2 注册 Microsoft Ubuntu 存储库:

curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list | sudo tee /etc/apt/sources.list.d/msprod.list

3 更新源列表(可以更新依赖包,减少很多不必要的麻烦),并使用 unixODBC 开发人员包运行安装命令:

sudo apt-get update

sudo apt-get install mssql-tools unixodbc-dev

4 添加/opt/mssql-tools/bin/到你路径bash shell 中的环境变量:

echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile

5 若要使sqlcmd/bcp能从交互式/非登录会话,bash shell 访问修改路径中 ~/.bashrc文件使用以下命令:

echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc

source ~/.bashrc

好了,大公告成!可以在本地远程操纵我们云服务器上的SqlServer数据库了。

由于我之前写过一个MySQL服务器自动备份数据的教程,所以这里不做过多啰嗦了,详细过程可以看那个教程,这里只贴代码,我也是从网上搜集别人的代码,懒得写脚本了,代码亲测有效:

自动备份任务是借助Linux的Crontab命令完成的,下面是相关命令,具体的Crontab命令我之前的文章里面有写。

1、查看crontab执行历史记录

tail -n 100 -f /var/log/cron

2、添加crontab定时任务

crontab -e

添加定时任务,每天23点0分执行

0 23 * * * /backup/backup_mssql.sh

3、查看crontab定时任务

crontab -l

完整脚本代码:

#!/bin/bash

#设置mssql备份目录

folder=/backup/mssql

cd $folder

day=`date +%Y%m%d`

#rm -rf $day

#mkdir $day

#cd $day

#数据库服务器,一般为localhost

host=localhost

#用户名

user=sa

#密码

password='123456'

#要备份的数据库

db=TestDB

#数据要保留的天数

days=30

#由于crontab命令是没环境变量,所以sqlcmd命令,要用全路径,否则定时执行会执行失败

/opt/mssql-tools/bin/sqlcmd -H$host -U$user -P$password -Q "

BACKUP DATABASE TESTDB

TO DISK = '/backup/mssql/mssql"$day".bak'

WITH FORMAT;

GO"

#删除之前的备份

#cd ..

day=`date -d "$days days ago" +%Y%m%d`

rm -rf "TESTDB"$day".bak"

echo "remove TESTDB"$day".bak"

参考文章:

http://blog.51cto.com/svsky/2121967

https://blog.csdn.net/fuck487/article/details/79295314

本文分享自微信公众号 - 浩Coding(gh_c4a2e63d2ca7),作者:浩

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-10-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 图解数据库内连接、外连接、左连接、右连接、全连接等

    用两个表(a_table、b_table),关联字段a_table.a_id和b_table.b_id来演示一下MySQL的内连接、外连接( 左(外)连接、右(...

    浩Coding
  • Eclipse下安装Hibernate插件

    1 : Eclipse的“Help”-->"Eclipse Marketplace":

    浩Coding
  • HTTP 方法:GET方法 对比 POST方法

    Http请求中的get方法和post方法的异同,算是我们Web开发时候常见的问题吧,这次还是老生常谈,新壶装旧酒,权当复习了。

    浩Coding
  • MyBatis常见好用的插件

    在没有分页插件之前,写一个分页需要两条SQL语句,一条查询一条统计,然后才能计算出页码,这样的代码冗余而又枯燥,更重要的一点是数据库迁移,众所周知不同的数据库分...

    java乐园
  • EditPlus如何设置保存时不产生.bak备份文件?

    大家在使用EditPlus时都会遇到这么一个问题,就是每次保存或者修改后保存时都会生成一个.bak后缀的文件,这个是一个缓存文件。那如何才能不生成该缓存文件呢?...

    黑泽君
  • 关于curl网站运维与开发的那些事

    curl网站开发指南 常见参数: -A/--user-agent <string> 设置用户代理发送给服务器 -b/--cookie ...

    学到老
  • curl网站开发指南

    我一向以为,curl只是一个编程用的函数库。 最近才发现,这个命令本身,就是一个无比有用的网站开发工具,请看我整理的它的用法。 ================...

    ruanyf
  • Zookeeper的Leader选举哪些事

    Leader选举是保证分布式数据一致性的关键所在。Leader选举分为Zookeeper集群初始化启动时选举和Zookeeper集群运行期间Le...

    java乐园
  • 做PCB里最靓的那个仔吧~

    首先准备AD软件,没有的朋友可根据文末的获取方式获取,全套的,想要哪个版本自己挑。

    狂人V
  • Zookeeper—Leader选举

    在Zookeeper集群正常运行期间,一旦选举出Leader,所有服务器的集群状态一般不会发生改变,即使是新机器加入、非Leader机器挂了,也不会影响Lead...

    用户5325874

扫码关注云+社区

领取腾讯云代金券