这次来谈谈备份的话题,备份的重要性就不用多说了,这次来谈谈云上怎么做备份。都知道PaaS服务更轻量,更易于管理,其中一个很重要的一点就是PaaS服务的备份往往都很简单,很多时候点点鼠标设置好备份策略就完事了,有的甚至是后台自动备份,拿Azure SQL和Azure 的 MySQL来说,后台自动就会做定期的备份,完全不用我们管,但是跑在VM的数据库要怎么备份呢?我们可以用recovery service来做虚机的备份,这当然是没问题的,但是数据库层面如果不做定期的log备份,数据库的log size就会一直不断地增长。
所以光靠VM level的备份是没用的,必须做数据库level的备份,传统的方法是使用第三方工具或者是数据库的job, 维护计划等方式来做定期的备份,云上当然也可以采用这种办法,但是这种方法很大的一个痛点是我们必须自己维护这些备份的数据,这就很痛苦了
Azure提供了一种很简单的方法来让我们实现SQL Server数据库的备份,这种方法在Azure Global很早之前就已经可以用了,但是直到这个月才终于在21V 的Azure落地!我们现在可以直接在recovery service vault里备份数据库了!
之前在recovery service vault中我们只能做VM的备份,现在我们还可以用它来做SQL Server数据库的备份,而且他支持的版本非常多,从SQL Server 2008 R2到最新版本的SQL Server都可以支持,不过linux下的SQL Server暂时还不支持
下边来看下操作的步骤
首先先创建recovery service vault
之后在backup里选择备份SQL Server in Azure VM,然后选择start discovery
可以看到找到我们的服务器了,开始discovery dbs
完成后开始配置db backup
这时你可能会发现这里提示not ready
这是为什么呢?原因很简单,因为我们的SQL Server不是从marketing place里创建的,而是先部署好VM,再独立安装的SQL Server,所以我们还需要手动完成一些步骤,可以看到错误信息里已经很明显了,因为账号权限不足导致无法备份
Backup的原理其实并不复杂,它是通过extension来在VM里调用一些备份的API来实现数据库的备份,所以相当于就是在VM里执行命令,而执行命令需要用到的账户就是上边错误信息里看到的
来到VM里,直接新建数据库login
搜索叫AzureWLBackupPluginSvc的账户
将这个账户授予sysadmin权限
可以看到权限了
回到之前的页面,重新discovery dbs
重新discovery之后,状态已经是ready了
开始配置备份,这里直接选择autoproject为On,代表的意思就是所有当前的数据库和以后添加的数据库都会自动做备份
解下来设置备份的策略,这个和VM的备份很相像
这里设置好每天做全备,数据保留30天
之后可以看到有的数据库已经显示备份状态是health了,这次来尝试restore
这里选择还原到当前服务器,然后名字换为另外一个
还可以设置数据和log的位置
设置完成后,可以看到很快数据库就完成还原了
备份的数据在硬盘上是看不到的,因为数据都是加密保存在recovery service里,这样我们也不用再担心磁盘被备份数据撑爆