数据库实时备份——什么办法最好?

时间:2022-09-14 00:02:32
目前有大概20多个DB(假设为A1、A2、A3、A4……), 想将它们统一集中地备份到一个数据库(Z)中。
这些DB可能都不在同一个服务器上。
A1、A2、A3、A4等中的若干表, 如产生增、删、改等即立即更新Z中的备份。

要求:
(1)实时性——产生更新后,一分钟内必须更新Z中的数据;
(2)安全性——如更新不成功,将有短信或者邮件等预警;
(3)可扩展性——Z的容量可能会比较大, 要考虑其扩容与执行效率。

22 个解决方案

#1


 想将它们统一集中地备份到“一个数据库(Z)”中,要是有这么一个数据库,会是什么样子,想不到。学习了

#2


引用 楼主 yenange 的回复:
目前有大概20多个DB(假设为A1、A2、A3、A4……), 想将它们统一集中地备份到一个数据库(Z)中。
这些DB可能都不在同一个服务器上。
A1、A2、A3、A4等中的若干表, 如产生增、删、改等即立即更新Z中的备份。

要求:
(1)实时性——产生更新后,一分钟内必须更新Z中的数据;
(2)安全性——如更新不成功,将有短信或者邮件等预警;
(3)可扩展性——Z的容量可能会比较大, 要考虑其扩容与执行效率。
这个貌似只有事务复制加数据库邮件才能实现了(2012之前)

#3


事务复制,一般来说秒级延时,安全性方面,事务复制有监控,如果有一定的延时或者失败就可以发起警告,这个警告可以触发数据库邮件功能发邮件,如果需要更高级的警告功能,就要加一些外围应用了。
第三个要求,如果你要这样汇总,那提及肯定会很大,不做分区分文件组的话,很难在后期有什么效率可言,真要达到你这个规模的环境,不可能只有一个简单的高可用方案。可能会有很多高可用组合、多机器协同,甚至多级汇总等等。

#4


由于你有多个数据库,备份到同一个数据库,所以试试数据库复制把。

#5


建议写代码实现,调度每分钟执行一次喽,若某次失败,下次从上次失败的地方再同步,最灵活
给上海455医院做过同步,还是走COM口呢(基于隔离网段安全)

复制会有副作用,比如系统升级或改点什么时

若有预算,欢迎联系ME

#6


引用 2 楼 DBA_Huangzj 的回复:
这个貌似只有事务复制加数据库邮件才能实现了(2012之前)

引用 4 楼 yupeigu 的回复:
由于你有多个数据库,备份到同一个数据库,所以试试数据库复制把。


请教大牛:事务复制要怎么做, 推荐好点的文章?

#7


引用 5 楼 luckyrandom 的回复:
建议写代码实现,调度每分钟执行一次喽,若某次失败,下次从上次失败的地方再同步,最灵活
给上海455医院做过同步,还是走COM口呢(基于隔离网段安全)

复制会有副作用,比如系统升级或改点什么时

若有预算,欢迎联系ME


用代码每分钟执行一次?就像一个人都无时无刻地得不到休息, 有事没事得守着。
这个谁都会做,就不用发帖了……

#9


但是你这个要求,特别是第三点,基础事务复制估计顶不住,要高级应用的话我也不熟

#10


引用 6 楼 yenange 的回复:
Quote: 引用 2 楼 DBA_Huangzj 的回复:

这个貌似只有事务复制加数据库邮件才能实现了(2012之前)

引用 4 楼 yupeigu 的回复:
由于你有多个数据库,备份到同一个数据库,所以试试数据库复制把。


请教大牛:事务复制要怎么做, 推荐好点的文章?


可以看看这个:

【SQL Server高可用性】数据库复制:SQL Server 2008R2中通过数据库复制,把A表的数据复制到B表
http://blog.csdn.net/sqlserverdiscovery/article/details/17059073

毕竟你之后要在生产环境上部署,所以先在你自己的电脑上试试,对这个复制有个感性的认识

#11


如果你比较清楚复制的机制、特点,的确不太需要发这个贴子

#12


引用 11 楼 luckyrandom 的回复:
如果你比较清楚复制的机制、特点,的确不太需要发这个贴子


大牛: 不是每个人都是大牛……

#13


不敢当,也当不了
论坛嘛,大家有不同的思维、角度、方式,发表一下

#14


引用 7 楼 yenange 的回复:
Quote: 引用 5 楼 luckyrandom 的回复:

建议写代码实现,调度每分钟执行一次喽,若某次失败,下次从上次失败的地方再同步,最灵活
给上海455医院做过同步,还是走COM口呢(基于隔离网段安全)

复制会有副作用,比如系统升级或改点什么时

若有预算,欢迎联系ME


用代码每分钟执行一次?就像一个人都无时无刻地得不到休息, 有事没事得守着。
这个谁都会做,就不用发帖了……


要求1分钟同步,间隔1分钟肯定是长了
应该有更新,5秒钟同步一次,没更新,才30秒同步一次,程序能自动调整同步周期

另外,不同服务器,是在同一个局域网还是跨地区?
如果跨地区,只有互联网,还是程序同步可控一些

做过跨城市的多个服务器往一个服务器的同步,不过源数据是只增不删改的那种

#15


引用 14 楼 sz_haitao 的回复:
Quote: 引用 7 楼 yenange 的回复:

Quote: 引用 5 楼 luckyrandom 的回复:

建议写代码实现,调度每分钟执行一次喽,若某次失败,下次从上次失败的地方再同步,最灵活
给上海455医院做过同步,还是走COM口呢(基于隔离网段安全)

复制会有副作用,比如系统升级或改点什么时

若有预算,欢迎联系ME


用代码每分钟执行一次?就像一个人都无时无刻地得不到休息, 有事没事得守着。
这个谁都会做,就不用发帖了……


要求1分钟同步,间隔1分钟肯定是长了
应该有更新,5秒钟同步一次,没更新,才30秒同步一次,程序能自动调整同步周期

另外,不同服务器,是在同一个局域网还是跨地区?
如果跨地区,只有互联网,还是程序同步可控一些

做过跨城市的多个服务器往一个服务器的同步,不过源数据是只增不删改的那种


如何知道有更新,如何知道无更新?

我知道有更新, 立马就更新了。
知道无更新, 那我更新做什么?

除了触发器和酒家说的事务复制,还有别的办法?

别谈虚的, 成么?

#16


引用 10 楼 yupeigu 的回复:
Quote: 引用 6 楼 yenange 的回复:

Quote: 引用 2 楼 DBA_Huangzj 的回复:

这个貌似只有事务复制加数据库邮件才能实现了(2012之前)

引用 4 楼 yupeigu 的回复:
由于你有多个数据库,备份到同一个数据库,所以试试数据库复制把。


请教大牛:事务复制要怎么做, 推荐好点的文章?


可以看看这个:

【SQL Server高可用性】数据库复制:SQL Server 2008R2中通过数据库复制,把A表的数据复制到B表
http://blog.csdn.net/sqlserverdiscovery/article/details/17059073

毕竟你之后要在生产环境上部署,所以先在你自己的电脑上试试,对这个复制有个感性的认识


你的文章写得非常好,但还是得再请教一下:
我也是用本机和虚拟机来做实验的。

本机的计算机名和实例: xxxx-yng\sqlserver2005
但虚拟机死活用这个 xxxx-yng\sqlserver2005 访问不了, 
在虚拟机只能访问 ip地址 , 但订阅偏偏不接受用ip地址…… 
怎么办?

还有, 即使这个实验象你一样成功了, 但如果发布和订阅不接受  ip地址访问 的话, 那众多的远程服务器之间要做发布和订阅怎么办?

#17


引用 15 楼 yenange 的回复:
Quote: 引用 14 楼 sz_haitao 的回复:

Quote: 引用 7 楼 yenange 的回复:

Quote: 引用 5 楼 luckyrandom 的回复:

建议写代码实现,调度每分钟执行一次喽,若某次失败,下次从上次失败的地方再同步,最灵活
给上海455医院做过同步,还是走COM口呢(基于隔离网段安全)

复制会有副作用,比如系统升级或改点什么时

若有预算,欢迎联系ME


用代码每分钟执行一次?就像一个人都无时无刻地得不到休息, 有事没事得守着。
这个谁都会做,就不用发帖了……


要求1分钟同步,间隔1分钟肯定是长了
应该有更新,5秒钟同步一次,没更新,才30秒同步一次,程序能自动调整同步周期

另外,不同服务器,是在同一个局域网还是跨地区?
如果跨地区,只有互联网,还是程序同步可控一些

做过跨城市的多个服务器往一个服务器的同步,不过源数据是只增不删改的那种


如何知道有更新,如何知道无更新?

我知道有更新, 立马就更新了。
知道无更新, 那我更新做什么?

除了触发器和酒家说的事务复制,还有别的办法?

别谈虚的, 成么?


当然是别的办法。。。。。
论坛里谈,就是虚的了,所以,成!不谈了

#18


引用 16 楼 yenange 的回复:
Quote: 引用 10 楼 yupeigu 的回复:

Quote: 引用 6 楼 yenange 的回复:

Quote: 引用 2 楼 DBA_Huangzj 的回复:

这个貌似只有事务复制加数据库邮件才能实现了(2012之前)

引用 4 楼 yupeigu 的回复:
由于你有多个数据库,备份到同一个数据库,所以试试数据库复制把。


请教大牛:事务复制要怎么做, 推荐好点的文章?


可以看看这个:

【SQL Server高可用性】数据库复制:SQL Server 2008R2中通过数据库复制,把A表的数据复制到B表
http://blog.csdn.net/sqlserverdiscovery/article/details/17059073

毕竟你之后要在生产环境上部署,所以先在你自己的电脑上试试,对这个复制有个感性的认识


你的文章写得非常好,但还是得再请教一下:
我也是用本机和虚拟机来做实验的。

本机的计算机名和实例: xxxx-yng\sqlserver2005
但虚拟机死活用这个 xxxx-yng\sqlserver2005 访问不了, 
在虚拟机只能访问 ip地址 , 但订阅偏偏不接受用ip地址…… 
怎么办?

还有, 即使这个实验象你一样成功了, 但如果发布和订阅不接受  ip地址访问 的话, 那众多的远程服务器之间要做发布和订阅怎么办?


对了,你首先从虚拟机ping 一下你的主机的ip,然后看看,你的主机的防火墙,和你的虚拟机的防火墙,是否阻止了sql server的端口了

可以在hosts文件中,加上对应关系:

xxx        192.168.1.16

#19


一般,我在设置前,都会在主机上,用ssms连接虚拟机看看能不能连接上,同样的,虚拟机上也连接一下主机试试,是否能连接上,这时可以用 ip,端口  的方式来连接,比如:

192.168.1.16,xxxxx

#20


引用 17 楼 sz_haitao 的回复:
当然是别的办法。。。。。
论坛里谈,就是虚的了,所以,成!不谈了

不送……

#21


引用 18 楼 yupeigu 的回复:
对了,你首先从虚拟机ping 一下你的主机的ip,然后看看,你的主机的防火墙,和你的虚拟机的防火墙,是否阻止了sql server的端口了
可以在hosts文件中,加上对应关系:
xxx        192.168.1.16


双方的防火墙都是关了的……

数据库实时备份——什么办法最好?

疑惑……
你有用 ip 做过发布和订阅的试验吗?

#22


引用 21 楼 yenange 的回复:
Quote: 引用 18 楼 yupeigu 的回复:

对了,你首先从虚拟机ping 一下你的主机的ip,然后看看,你的主机的防火墙,和你的虚拟机的防火墙,是否阻止了sql server的端口了
可以在hosts文件中,加上对应关系:
xxx        192.168.1.16


双方的防火墙都是关了的……

数据库实时备份——什么办法最好?

疑惑……
你有用 ip 做过发布和订阅的试验吗?



哦,我没有用过ip地址,在你的图后面,WIN-ACKEJK1M680 这个是服务器名称?

#1


 想将它们统一集中地备份到“一个数据库(Z)”中,要是有这么一个数据库,会是什么样子,想不到。学习了

#2


引用 楼主 yenange 的回复:
目前有大概20多个DB(假设为A1、A2、A3、A4……), 想将它们统一集中地备份到一个数据库(Z)中。
这些DB可能都不在同一个服务器上。
A1、A2、A3、A4等中的若干表, 如产生增、删、改等即立即更新Z中的备份。

要求:
(1)实时性——产生更新后,一分钟内必须更新Z中的数据;
(2)安全性——如更新不成功,将有短信或者邮件等预警;
(3)可扩展性——Z的容量可能会比较大, 要考虑其扩容与执行效率。
这个貌似只有事务复制加数据库邮件才能实现了(2012之前)

#3


事务复制,一般来说秒级延时,安全性方面,事务复制有监控,如果有一定的延时或者失败就可以发起警告,这个警告可以触发数据库邮件功能发邮件,如果需要更高级的警告功能,就要加一些外围应用了。
第三个要求,如果你要这样汇总,那提及肯定会很大,不做分区分文件组的话,很难在后期有什么效率可言,真要达到你这个规模的环境,不可能只有一个简单的高可用方案。可能会有很多高可用组合、多机器协同,甚至多级汇总等等。

#4


由于你有多个数据库,备份到同一个数据库,所以试试数据库复制把。

#5


建议写代码实现,调度每分钟执行一次喽,若某次失败,下次从上次失败的地方再同步,最灵活
给上海455医院做过同步,还是走COM口呢(基于隔离网段安全)

复制会有副作用,比如系统升级或改点什么时

若有预算,欢迎联系ME

#6


引用 2 楼 DBA_Huangzj 的回复:
这个貌似只有事务复制加数据库邮件才能实现了(2012之前)

引用 4 楼 yupeigu 的回复:
由于你有多个数据库,备份到同一个数据库,所以试试数据库复制把。


请教大牛:事务复制要怎么做, 推荐好点的文章?

#7


引用 5 楼 luckyrandom 的回复:
建议写代码实现,调度每分钟执行一次喽,若某次失败,下次从上次失败的地方再同步,最灵活
给上海455医院做过同步,还是走COM口呢(基于隔离网段安全)

复制会有副作用,比如系统升级或改点什么时

若有预算,欢迎联系ME


用代码每分钟执行一次?就像一个人都无时无刻地得不到休息, 有事没事得守着。
这个谁都会做,就不用发帖了……

#8


#9


但是你这个要求,特别是第三点,基础事务复制估计顶不住,要高级应用的话我也不熟

#10


引用 6 楼 yenange 的回复:
Quote: 引用 2 楼 DBA_Huangzj 的回复:

这个貌似只有事务复制加数据库邮件才能实现了(2012之前)

引用 4 楼 yupeigu 的回复:
由于你有多个数据库,备份到同一个数据库,所以试试数据库复制把。


请教大牛:事务复制要怎么做, 推荐好点的文章?


可以看看这个:

【SQL Server高可用性】数据库复制:SQL Server 2008R2中通过数据库复制,把A表的数据复制到B表
http://blog.csdn.net/sqlserverdiscovery/article/details/17059073

毕竟你之后要在生产环境上部署,所以先在你自己的电脑上试试,对这个复制有个感性的认识

#11


如果你比较清楚复制的机制、特点,的确不太需要发这个贴子

#12


引用 11 楼 luckyrandom 的回复:
如果你比较清楚复制的机制、特点,的确不太需要发这个贴子


大牛: 不是每个人都是大牛……

#13


不敢当,也当不了
论坛嘛,大家有不同的思维、角度、方式,发表一下

#14


引用 7 楼 yenange 的回复:
Quote: 引用 5 楼 luckyrandom 的回复:

建议写代码实现,调度每分钟执行一次喽,若某次失败,下次从上次失败的地方再同步,最灵活
给上海455医院做过同步,还是走COM口呢(基于隔离网段安全)

复制会有副作用,比如系统升级或改点什么时

若有预算,欢迎联系ME


用代码每分钟执行一次?就像一个人都无时无刻地得不到休息, 有事没事得守着。
这个谁都会做,就不用发帖了……


要求1分钟同步,间隔1分钟肯定是长了
应该有更新,5秒钟同步一次,没更新,才30秒同步一次,程序能自动调整同步周期

另外,不同服务器,是在同一个局域网还是跨地区?
如果跨地区,只有互联网,还是程序同步可控一些

做过跨城市的多个服务器往一个服务器的同步,不过源数据是只增不删改的那种

#15


引用 14 楼 sz_haitao 的回复:
Quote: 引用 7 楼 yenange 的回复:

Quote: 引用 5 楼 luckyrandom 的回复:

建议写代码实现,调度每分钟执行一次喽,若某次失败,下次从上次失败的地方再同步,最灵活
给上海455医院做过同步,还是走COM口呢(基于隔离网段安全)

复制会有副作用,比如系统升级或改点什么时

若有预算,欢迎联系ME


用代码每分钟执行一次?就像一个人都无时无刻地得不到休息, 有事没事得守着。
这个谁都会做,就不用发帖了……


要求1分钟同步,间隔1分钟肯定是长了
应该有更新,5秒钟同步一次,没更新,才30秒同步一次,程序能自动调整同步周期

另外,不同服务器,是在同一个局域网还是跨地区?
如果跨地区,只有互联网,还是程序同步可控一些

做过跨城市的多个服务器往一个服务器的同步,不过源数据是只增不删改的那种


如何知道有更新,如何知道无更新?

我知道有更新, 立马就更新了。
知道无更新, 那我更新做什么?

除了触发器和酒家说的事务复制,还有别的办法?

别谈虚的, 成么?

#16


引用 10 楼 yupeigu 的回复:
Quote: 引用 6 楼 yenange 的回复:

Quote: 引用 2 楼 DBA_Huangzj 的回复:

这个貌似只有事务复制加数据库邮件才能实现了(2012之前)

引用 4 楼 yupeigu 的回复:
由于你有多个数据库,备份到同一个数据库,所以试试数据库复制把。


请教大牛:事务复制要怎么做, 推荐好点的文章?


可以看看这个:

【SQL Server高可用性】数据库复制:SQL Server 2008R2中通过数据库复制,把A表的数据复制到B表
http://blog.csdn.net/sqlserverdiscovery/article/details/17059073

毕竟你之后要在生产环境上部署,所以先在你自己的电脑上试试,对这个复制有个感性的认识


你的文章写得非常好,但还是得再请教一下:
我也是用本机和虚拟机来做实验的。

本机的计算机名和实例: xxxx-yng\sqlserver2005
但虚拟机死活用这个 xxxx-yng\sqlserver2005 访问不了, 
在虚拟机只能访问 ip地址 , 但订阅偏偏不接受用ip地址…… 
怎么办?

还有, 即使这个实验象你一样成功了, 但如果发布和订阅不接受  ip地址访问 的话, 那众多的远程服务器之间要做发布和订阅怎么办?

#17


引用 15 楼 yenange 的回复:
Quote: 引用 14 楼 sz_haitao 的回复:

Quote: 引用 7 楼 yenange 的回复:

Quote: 引用 5 楼 luckyrandom 的回复:

建议写代码实现,调度每分钟执行一次喽,若某次失败,下次从上次失败的地方再同步,最灵活
给上海455医院做过同步,还是走COM口呢(基于隔离网段安全)

复制会有副作用,比如系统升级或改点什么时

若有预算,欢迎联系ME


用代码每分钟执行一次?就像一个人都无时无刻地得不到休息, 有事没事得守着。
这个谁都会做,就不用发帖了……


要求1分钟同步,间隔1分钟肯定是长了
应该有更新,5秒钟同步一次,没更新,才30秒同步一次,程序能自动调整同步周期

另外,不同服务器,是在同一个局域网还是跨地区?
如果跨地区,只有互联网,还是程序同步可控一些

做过跨城市的多个服务器往一个服务器的同步,不过源数据是只增不删改的那种


如何知道有更新,如何知道无更新?

我知道有更新, 立马就更新了。
知道无更新, 那我更新做什么?

除了触发器和酒家说的事务复制,还有别的办法?

别谈虚的, 成么?


当然是别的办法。。。。。
论坛里谈,就是虚的了,所以,成!不谈了

#18


引用 16 楼 yenange 的回复:
Quote: 引用 10 楼 yupeigu 的回复:

Quote: 引用 6 楼 yenange 的回复:

Quote: 引用 2 楼 DBA_Huangzj 的回复:

这个貌似只有事务复制加数据库邮件才能实现了(2012之前)

引用 4 楼 yupeigu 的回复:
由于你有多个数据库,备份到同一个数据库,所以试试数据库复制把。


请教大牛:事务复制要怎么做, 推荐好点的文章?


可以看看这个:

【SQL Server高可用性】数据库复制:SQL Server 2008R2中通过数据库复制,把A表的数据复制到B表
http://blog.csdn.net/sqlserverdiscovery/article/details/17059073

毕竟你之后要在生产环境上部署,所以先在你自己的电脑上试试,对这个复制有个感性的认识


你的文章写得非常好,但还是得再请教一下:
我也是用本机和虚拟机来做实验的。

本机的计算机名和实例: xxxx-yng\sqlserver2005
但虚拟机死活用这个 xxxx-yng\sqlserver2005 访问不了, 
在虚拟机只能访问 ip地址 , 但订阅偏偏不接受用ip地址…… 
怎么办?

还有, 即使这个实验象你一样成功了, 但如果发布和订阅不接受  ip地址访问 的话, 那众多的远程服务器之间要做发布和订阅怎么办?


对了,你首先从虚拟机ping 一下你的主机的ip,然后看看,你的主机的防火墙,和你的虚拟机的防火墙,是否阻止了sql server的端口了

可以在hosts文件中,加上对应关系:

xxx        192.168.1.16

#19


一般,我在设置前,都会在主机上,用ssms连接虚拟机看看能不能连接上,同样的,虚拟机上也连接一下主机试试,是否能连接上,这时可以用 ip,端口  的方式来连接,比如:

192.168.1.16,xxxxx

#20


引用 17 楼 sz_haitao 的回复:
当然是别的办法。。。。。
论坛里谈,就是虚的了,所以,成!不谈了

不送……

#21


引用 18 楼 yupeigu 的回复:
对了,你首先从虚拟机ping 一下你的主机的ip,然后看看,你的主机的防火墙,和你的虚拟机的防火墙,是否阻止了sql server的端口了
可以在hosts文件中,加上对应关系:
xxx        192.168.1.16


双方的防火墙都是关了的……

数据库实时备份——什么办法最好?

疑惑……
你有用 ip 做过发布和订阅的试验吗?

#22


引用 21 楼 yenange 的回复:
Quote: 引用 18 楼 yupeigu 的回复:

对了,你首先从虚拟机ping 一下你的主机的ip,然后看看,你的主机的防火墙,和你的虚拟机的防火墙,是否阻止了sql server的端口了
可以在hosts文件中,加上对应关系:
xxx        192.168.1.16


双方的防火墙都是关了的……

数据库实时备份——什么办法最好?

疑惑……
你有用 ip 做过发布和订阅的试验吗?



哦,我没有用过ip地址,在你的图后面,WIN-ACKEJK1M680 这个是服务器名称?