首页 新闻 会员 周边 捐助

怎样在以最小影响源数据库(MSSQL)性能的条件下把大表数据迁移出来

0
悬赏园豆:10 [已解决问题] 解决于 2018-08-23 14:43

现在要将3台老平台半年的数据库的GPS轨迹记录表迁移到新平台数据库,老平台存储为每天一张表,单表数据量在1000W左右。

现在的问题是,老平台还在运行中,源数据库占用非常高,用MSSQL自带的数据导入导出功能都会导致系统写入队列暴增,从而影响整个系统。

没办法,我自己写了一个小工具,一点一点的读出写入另一个数据库,虽然时间长点,但也能实现,目前已完成2台迁移,但剩下的一台数据库服务器性能非常差,即使用这种方式,都会影响系统。

Adming的主页 Adming | 初学一级 | 园豆:119
提问于:2018-08-23 10:06
< >
分享
最佳答案
0

能不能把数据备份到其他的存储,放在性能比较好的地方,来操作性能比较不错的机器呢。

收获园豆:3
leehavin | 菜鸟二级 |园豆:343 | 2018-08-23 10:16

 我也想到用数据库备份的方式,但数据库备份好像不可以选表,如果把整个数据库备份太大了,超过10G,能不能把一个10G的文件拷贝出来都是一个问题。

Adming | 园豆:119 (初学一级) | 2018-08-23 10:24
其他回答(2)
0

有这个时间和精力的话,我都觉得停机一会儿,把数据库放到好点的服务器上靠谱些,你们总不至于24小时不能停的吧?

要不然就只能时间更长更长,比如每小时拉一条数据之类的,呵呵。

收获园豆:3
爱编程的大叔 | 园豆:30844 (高人七级) | 2018-08-23 10:22

7x24h运行,周末和每天上午10点左右,下午2-6点是高峰期,晚上比白天还忙,而且数据量也不小,停一会儿数据都拷不出来。

支持(0) 反对(0) Adming | 园豆:119 (初学一级) | 2018-08-23 10:27

@Adming: 看了一下你的业务:GPS轨迹记录表。

这样的业务,也就是说可以基本没有查询旧记录的需求(可能我不熟悉业务,考虑的不对),

你完全可以把新的记录全部导向到一台新的服务器上,这台服务器就可以只做查询(甚至都没有查询?),

这样压力就小了,然后你如果需要查询,再把这些就记录导入到新服务器上。

理论上来说,停止查询一两个小时应该问题不大。写入不影响。

或者说,像这种大量垃圾数据的,报表应该也是后期生成的,这些都可以适当延期、暂停。

支持(0) 反对(0) 爱编程的大叔 | 园豆:30844 (高人七级) | 2018-08-23 10:36

@爱编程的大叔: 是的,新平台就是这样做的,但目前是过渡阶段,老平台还处于主力军角色,但老平台数据库基本表,报表,GPS轨迹记录表都在一个数据库下。

支持(0) 反对(0) Adming | 园豆:119 (初学一级) | 2018-08-23 10:45
0

备份源数据库,在目标机器上用备份文件恢复数据库,然后进行日志传送,参考 实战 SQL Server 2008 日志传送

收获园豆:4
dudu | 园豆:30939 (高人七级) | 2018-08-23 10:59

 现在是这个大一个备份文件拷贝出来就是一个大问题

支持(0) 反对(0) Adming | 园豆:119 (初学一级) | 2018-08-23 11:39
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册