把数据库放在两台服务器上面,请问如何才能实现两台服务器的数据同步

把数据库放在两台服务器上面,请问如何才能实现两台服务器的数据同步,第1张

1
sql
server
复制:事务发布
2
配置发布服务器
3
快照发布:隔一段时间会覆盖订阅服务器的数据库,在订阅服务器上做的修改同样被覆盖;
4
事务发布:是一种接近实时地从源到目标分发数据的方法;
5
具有可更新订阅的事务发布:订阅服务器可更新发布服务器的数据;
6
合并发布:发布服务器和订阅服务器的更新都会同步到对方,注意id在合并发布上的冲突
7
1
在sql
server下实现发布服务器和订阅服务器的通信正常(即可以互访),打开1433端口,在防火墙中设置入站规则;
8
2
发布服务器与订阅服务器的sql
server
agent代理帐号必须设置的一样,否则不能互访;
9
3
如果你希望在复制的过程中一并复制非聚集索引,可以对发布属性-项目进行如下设置,修改完之后需要重新生成快照;

这种架构一般用在以下三类场景
1 备份多台 Server 的数据到一台如果按照数据切分方向来讲,那就是垂直切分。比如图 2,业务 A、B、C、D 是之前拆分好的业务,现在需要把这些拆分好的业务汇总起来备份,那这种需求也很适用于多源复制架构。实现方法我大概描述下:业务 A、B、C、D 分别位于 4 台 Server,每台 Server 分别有一个数据库来隔离前端的业务数据,那这样,在从库就能把四台业务的数据全部汇总起来,而不需要做额外的 *** 作。那没有多源复制之前,要实现这类需求,只能在汇总机器上搭建多个 MySQL 实例,那这样势必会涉及到跨库关联的问题,不但性能急剧下降,管理多个实例也没有单台来的容易。

2 用来聚合前端多个 Server 的分片数据。

同样,按照数据切分方向来讲,属于水平切分。比如图 3,按照年份拆分好的数据,要做一个汇总数据展现,那这种架构也非常合适。实现方法稍微复杂些:比如所有 Server 共享同一数据库和表,一般为了开发极端透明,前端配置有分库分表的中间件,比如爱可生的 DBLE。

3 汇总并合并多个 Server 的数据

第三类和第一种场景类似。不一样的是不仅仅是数据需要汇总到目标端,还得合并这些数据,这就比第一种来的相对复杂些。比如图 4,那这样的需求,是不是也适合多源复制呢?答案是 YES。那具体怎么做呢?

如果是同一个mysql服务端的两个数据库同步可考虑下触发器,如果是不同端口的两个mysql服务端跟在两台服务器同步配置上没有区别。

数据库最好不要做主从,不然性能会降低很多的。

可以采取其他的方法撒,比如分布式存储。可以考虑下memcachedb,实现持久存储。

表结构一致的话,可以考虑映射表去实现来的(shell脚本定时同步,触发器),不过shell脚本会将环境搞的复杂一点,维护也会相对麻烦
映射表具体实现(在要同步的数据库下创建相同的表结构):

CREATE TABLE table_name
(
    column_name  column_type  
    
    key 
)
ENGINE=MYISAM DEFAULT CHARSET=utf8 
CONNECTION="mysql://user:pwd@ip_address/db_name/table_name";

1首先域名并非直接解析到一个IP上,你可以百度下DNSPOD,就会明白,域名可以根据地域不通解析到不同的服务器IP上。
2非常多的集群并不是你直接可以访问到的,你所访问到的只是前面一台入口服务器。这台服务器负责转发请求。它可以根据目前后端几台专业服务器的运行状态,将当前你所访问的用户的请求转发到一个比较健康的服务器上面去。这方面的软件有很多,比如Nginx,还有淘宝的Tengine,还有个专业叫LVS。
3在后端的服务器上每台都放上我们的代码,然后坐等前面的入口转发给我们请求。如果接到请求,我们就进行响应,然后返回给入口,入口再返回给用户,最终呈现在你面前。
4另外,用户上传的之类的动态文件,要么就专门放在文件服务器上,一般需要独立的域名,如>

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10611329.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存