server-id=1
log-bin=mysql-bin
2从上修改配置文件 mycnf
server-id=2
relay-log=relay-bin
read-only =1
replicate-ignore-db = mysql
replicate-ignore-db = test
replicate-ignore-db = information_schema
#replicate-wild-do-table = ttadmin
replicate-wild-do-table = my_dbstu // 所要同步的数据库的单个表
3 创建 同步的用户(主上)
grant replication client,replication slave on to rep@'104150105' identified by 'root';
4同步到主库(在从上 *** 作)
change master to master_host='10415080',master_user='rep',master_password='root';
5在从上验证:
show slave status\G;
主从同步某些表这个应用应该不会要求太高。
设计上,网站程序(应用服务器)应该是对外的。数据库仅内部使用。
如果只是两台机器这种模式的应用,应用服务器可以直连数据库服务器。
看您的描述,硬件网络方面应该没有什么问题。
在设计上软件方面可能存在问题。要进一步检查判断。
ASP通常的设计方式存在一种问题,与数据库之间是实时的连接,不直接支持本地数据缓存的应用。如果是这个原因,可以改成异步的方式传输数据(使用类似NET的工具或开发类似中间件的数据连接)
关于问题补充:
“数据库和WEB站放同一服务器上访问正常,也不会老是会卡”
应该重点检查两台服务器的通讯情况。
另一方面就像上面说的,设计方式的调整。因为放在同一台机器上,会有效的使用本地数据缓存,而两台服务器的方式,如果设计上没有提供缓存的方式,会导致数据访问量较大。
这种架构一般用在以下三类场景
1 备份多台 Server 的数据到一台如果按照数据切分方向来讲,那就是垂直切分。比如图 2,业务 A、B、C、D 是之前拆分好的业务,现在需要把这些拆分好的业务汇总起来备份,那这种需求也很适用于多源复制架构。实现方法我大概描述下:业务 A、B、C、D 分别位于 4 台 Server,每台 Server 分别有一个数据库来隔离前端的业务数据,那这样,在从库就能把四台业务的数据全部汇总起来,而不需要做额外的 *** 作。那没有多源复制之前,要实现这类需求,只能在汇总机器上搭建多个 MySQL 实例,那这样势必会涉及到跨库关联的问题,不但性能急剧下降,管理多个实例也没有单台来的容易。
2 用来聚合前端多个 Server 的分片数据。
同样,按照数据切分方向来讲,属于水平切分。比如图 3,按照年份拆分好的数据,要做一个汇总数据展现,那这种架构也非常合适。实现方法稍微复杂些:比如所有 Server 共享同一数据库和表,一般为了开发极端透明,前端配置有分库分表的中间件,比如爱可生的 DBLE。
3 汇总并合并多个 Server 的数据
第三类和第一种场景类似。不一样的是不仅仅是数据需要汇总到目标端,还得合并这些数据,这就比第一种来的相对复杂些。比如图 4,那这样的需求,是不是也适合多源复制呢?答案是 YES。那具体怎么做呢?
SQL Server 复制:事务发布配置发布服务器,
快照发布:隔一段时间会覆盖订阅服务器的数据库,在订阅服务器上做的修改同样被覆盖;
事务发布:是一种接近实时地从源到目标分发数据的方法;
具有可更新订阅的事务发布:订阅服务器可更新发布服务器的数据;
合并发布:发布服务器和订阅服务器的更新都会同步到对方,注意ID在合并发布上的冲突
1 在SQL SERVER下实现发布服务器和订阅服务器的通信正常(即可以互访),打开1433端口,在防火墙中设置入站规则;
2 发布服务器与订阅服务器的SQL Server Agent代理帐号必须设置的一样,否则不能互访;
3 如果你希望在复制的过程中一并复制非聚集索引,可以对发布属性-项目进行如下设置,修改完之后需要重新生成快照;1 建立内部网络通信(这种方式快速一点)
2 在需要同步的服务器上,建立连接服务器,取个名字,按照向导填写验证信息。
3 在数据库中直接使用连接服务器上的数据,数据表格式如:连接服务器名数据库名表名
4 在计划任务中也可以把服务器表数据计划更新到本地数据库表里面一条语句执行跨越若干个数据库
我要在一条语句里 *** 作不同的服务器上的不同的数据库里的不同的表,怎么办呢
第一种方法:
select from OPENDATASOURCE('SQLOLEDB','Data Source=远程ip;User ID=sa;Password=密码')库名dbo表名
第二种方法:
先使用联结服务器:
EXEC sp_addlinkedserver '别名','','MSDASQL',NULL,NULL,'DRIVER={SQL Server};SERVER=远程名;UID=用户;PWD=密码;'
exec sp_addlinkedsrvlogin @rmtsrvname='别名',@useself='false',@locallogin='sa',@rmtuser='sa',@rmtpassword='密码'
GO
然后你就可以如下:
select from 别名库名dbo表名
insert 库名dbo表名 select from 别名库名dbo表名
select into 库名dbo新表名 from 别名库名dbo表名
go可以这样做:比如有两个TADODataSet组成主细表 adsMain和adsDetail,需要加上一个TDataSource对象用于连接主表的DataSet,然后设置adsDetail的DataSource为主表的DataSource,最后写各自的CommandText:主表为:select from 主表细表:select 。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)