最近一个来自重庆的客户找到走起君,客户的业务是做移动互联网支付,是微信支付收单渠道合作伙伴,数据库里存储的是支付流水和交易流水。
由于客户那边没有DBA,所以找到走起君商量一个数据库服务器搬迁项目。
项目背景
客户需要把在10楼的服务器全部搬到15楼,而且需要在有限的停机时间之内,客户使用的数据库是SQL Server2008R2,Windows2008R2
客户的两个重要要求
1、总停机时间少于10分钟
2、数据不能有任何丢失
出方案
针对这两个要求,SQL Server有哪些可以选择的方案呢?
方案一 复制
使用复制,当前客户环境已经有一套数据库复制在跑,10楼的发布库不动,在15楼增加一个订阅库,数据复制到15楼,但是复制有一个致命点:不保证数据一致性,因为复制是异步的
复制只能满足要求一,不能满足要求二,只能抛弃这个方案
方案二 日志备份
在15楼增加一台数据库服务器,10楼的发布库做完整备份还原到15楼的数据库,然后在搬迁的时候追加一个日志备份,并还原到15楼的数据库服务器
日志备份保存的数据是完整备份到日志备份这个时间段的数据,由于每天写入的变更数据量比较大,导致ldf文件也比较大,达到40G+,在测试过程中
发现,kill掉数据库所有连接-》设置数据库为只读模式-》备份-》移动日志备份文件-》还原日志备份文件-》设置数据库为读写模式 ,整个过程花费时间超过15分钟
只能满足要求二,不能满足要求一,并且一旦迁移过程出错,回滚时间+迁移时间>要求的停机时间