有两台服务器,不在同一局域网 怎么将文件实时同步
回答:
双机服务器一般用ca公司surviveit,不仅可以实时同步数据,还可以主备机切换,更可以主服务器挂掉后,备服务器自动顶替其位置,具体操作如下:两台服务器安装完surviveit后,primary
server和second
server便自动出现在管理软件的managed
servers列表中。此时需要建立一个replication
task:
1选中主服务器primary
server;
2选中数据备份服务器second
server;
3选择网络速度(10m选fast,100m选very
fast);
4选择数据保护等级,一般选择full
protection(既能进行数据的实时备份,也能进行服务器的实时切换);
5从primary
server中选择需要保护的目录;
6选择primary
server中被保护目录中的文件共享;
7选择enable
intelligent
failover和detect
another
computer
or
network
device;
8选择transfer
primary
ip
address
to
the
secondary
server
on
failover,change
primary
ip
address
on
failover。
9从已建立好的replication
task中可更改数据在second
server中的备份路径;
10在replication
task的failover
actions中,分别对primary
server和second
server增加sql70
scripts;
11运行建好replication
task后的第一次数据同步,同步结束后primary
server自动处于保护状态。
追问:
这个可以让两个服务器的同时更新吗
比如说从的上传
主的也会更新吗
而不是只是主的上传
从的更新
回答:
这服务器是你们托管的还是自己维护?托管的话,不会影响速度,除非你一次性更新超大量内容,还有我想说的是,如果是托管的,为啥不双线接入或者三线接入?还得用两台服务器对两种线路的用户?如果是自己维护,三台机器,你就更新主服务器,把那两个设成从服务器,只更新主服务器后那两个就都更新了,更不会拖慢速度了风尘々紫驿
的感言:
虽然没用你的方法还是谢谢你了
呵呵
2011-03-10
双机热备:基于共享存储与纯软件方式
数据库双机热备有两种典型的方式,一种是比较标准的,两台服务器通过一个共享的存储设备(一般是共享的磁盘阵列或存储区域网SAN),并且安装双机软件,实现双机热备,称为共享方式。另一种方式是通过纯软件的方式,一般称为纯软件方式或镜像方式(Mirror)。
对于共享方式,数据库放在共享的存储设备上。当一台服务器提供服务时,直接在存储设备上进行读写。而当系统切换后,另一台服务器也同样读取该存储设备上的数据。
对于纯软件的方式,通过镜像软件,将数据可以实时复制到另一台服务器上,这样同样的数据就在两台服务器上各存在一份,如果一台服务器出现故障,可以及时切换到另一台服务器。
纯软件方式可以在一定程度上降低成本,但它也有非常明显的缺点:
1可靠性相对较差,两服务器间的数据实时复制是一个比较脆弱的环节。
2一旦某台服务器出现中断,恢复后还要进行比较复杂的数据同步恢复。并且,这个时段系统处于无保护状态。
3没有事务机制,由于其复制是在文件和磁盘层进行的,复制是否成功不会影响数据库事务操作,因此有出现数据不完整变化的情况,这个存在着相当的风险。
因此,建议除非不得已,不要选择纯软件方案。
如何用nodejs实现客户端向服务器实时发送数据的功能
在数据层面,主要有:
Index:Elasticsearch用来存储数据的逻辑区域,它类似于关系型数据库中的db概念。一个index可以在一个或者多个shard上面,同时一个shard也可能会有多个replicas。
Document:Elasticsearch里面存储的实体数据,类似于关系数据中一个table里面的一行数据。
document由多个field组成,不同的document里面同名的field一定具有相同的类型。document里面field可以重复出现,也就是一个field会有多个值,即multivalued。
Document type:为了查询需要,一个index可能会有多种document,也就是document type,但需要注意,不同document里面同名的field一定要是相同类型的。
Mapping:存储field的相关映射信息,不同document type会有不同的mapping。
1 SQLSERVER服务器上面安装oracle客户端,配置服务命名(假设为 test)
2 在SQLSERVER服务器上面建立链接服务器,脚本如下
SQL code
SQL code-- Adding linked server:
exec sp_addlinkedserver @server = 'test' ,
@srvproduct = 'ORACLE',
@provider = 'MSDAORA',
@datasrc = 'test'
-- Adding linked server login:
exec sp_addlinkedsrvlogin @useself='false ', @rmtsrvname = 'test',
@rmtuser = 'user', --数据库用户
@rmtpassword = 'password' --密码
3 建立一个作业,通过作业调度存储过程,存储过程使用类似的语句将oracle的数据插入到sqlserver表中
SQL code
insert into sqlserver表 select from testoracle表名
4 如果要球ORACLE数据是实时增加的,并且ORACLE记录上有递增的字段,可以在SQLSERVER上面建立一个表记录上次插入的id,然后下次可以从上次的ID+1开始继续插入
SQL code
insert into sqlserver表 select from testoracle表名 where id>@id
5 防止sqlserver同步的时候oracle仍在不断的插入,每次要取一个结束ID
SQL code
select @endid=max(id) from testoracle表名
很好的问题,我说下我的想法,
腾讯有很多服务器,北京上海应该不是登录同一个服务器,但是数据库应该是同一个,用户资料这种数据应该也是采取分布式存储的(不一定是放在关系型数据库里面,腾讯这种公司现在在很好的使用云技术),有一个核心主库,各分布式服务器上的数据作为主库的实例缓存在分布式环境中,而修改在线签名这种操作,技术上认为是需要及时同步到主库的,那么上海服务器需要什么资料时,肯定需要从主库拿一次的,这时候拿到的肯定是最新的,同时主库发生了什么变更的时候可以主动发起一个PUSH操作,同步各分布式实例。总之,分布式环境下,我们可以定义同步操作的重要级别,级别高的需要迅速完成同步的,并不一定很多,所以效率上面没有问题就可以了。
0条评论