编辑: 木头飞艇 2018-07-31

二、 MR 的概念和构架 MR 是Master Replication,也就是主体站点复制的概念,是高级复制区别于普通复制的一个 重要的功能.本章节对于 MR 中出现的种种概念作详细解释. MR 分为 single master 和multi master 两种.single master 指一个 master site 支持多个 materialized view site,而multi master 则包含多个 master site. Multimaster Replication 也被称为 peer-to-peer 或者 n-way replication,任何一个 master 上发生的变化都将被送到其它的 master 上. 1. 为什么使用 Multimaster Replication. Failover:当主数据库发生问题的时候,可以通过配置 Oracle Net 来实现 automatic connect-time failover,需要将客户端的 tnsnames.ora 中的 FAILOVER_MODE 参数设置 为ON.同时在主数据库正常的时候,其它的 master site 仍然可以作为一个具有完全功 能的数据库来支持其它业务,比如报表等. Load Balancing::提供读动态平衡以及更本地化的数据存取. 2. 比较 RAC(Oracle Real Application Clusters)和Advanced Replication Load Balancing::高级复制提供读动态平衡,而RAC 则提供读写动态平衡.因为每一 次写操作都会在所有的 replication site 上体现,所以高级复制不能提供写动态平衡. Survivability::高级复制提供更加强有力的灾难恢复功能,因为高级复制环境中的各 个site 可以位于物理上的不同地点, 而RAC 因为使用的是磁盘阵列或其他类型的并行系统, 所以通常在同一个物理地点. Interoperability:高级复制可以在不同平台和操作系统的 Oracle 之间实现,而RAC 环境则必须运行在相同的平台上. 3. Multimaster Replication Process Asynchronous Replication: 说明:使用非同步复制能够减少网络资源和硬件资源的消耗,但是不同的 master sites 之间 会有一段时间不同步,并且可能会造成数据冲突. 以下描述非同步复制的过程: 1) 用户执行 DML 操作或者执行 replicated procedure 的wrapper,当一个 table 被设 定为需要复制,那么对于此表的任何 DML 操作都会被捕获并且复制到其他的 master site.对于每一行被插入,更新或者删除的数据都将由一个内部触发器来创 建一个 deferred remote procedure call (RPC)并且放在 deferred transaction queue 中,如果一个存储过程被设置为需要复制并且它的 wrapper 被执行,则这个 procedure call 被放置在 transaction queue 中.由于内部触发器是由 Oracle 本身 内部维护的,所以可以以最小的系统资源消耗来很快地获取需要复制的对象的变 化. 2) deferred transaction queue 中保存着所有的 deferred RPCs.每个 site 都有一个事 务队列,这个队列可以被多个 replication group 共用. 3) 在指定的间隔之后或者被手工调用,事务将被传递到其他的 site,每个 site 都可能 有不同的间隔. 4) 事务在这些 site 上被应用, 如果出错该事务将被放置到一个错误队列中, 以备 DBA 检查处理,如果出现数据冲突,冲突解决方法将被调用,如果冲突无法解决那么将 被记录在错误队列中 5) 当事务在所有的 remote master sites 上被成功执行之后,并不会从源 site 的事务 队列中立刻删除,删除工作将由另外的 purge job 来执行,此job 的执行间隔可以 由用户来定义. Synchronous Replication: 说明:同步复制始终在同一个 transaction 中完成,如果整个环境中的任何一个 site 没有成 功执行事务,那么整个 transaction 将被回滚,包括源 site.这就保证了数据一致性. 以下描述同步复制的过程: 1) 用户执行 DML 操作或者执行 replicated procedure 的wrapper, 操作被内部触发器 立刻捕获. 2) 事务被传递到其他 site 并且立刻执行,任何一个 site 出错,就回滚整个事务. 4. 冲突解决方案的概念 冲突的类型:更新冲突,唯一性冲突,删除冲突. 当发生冲突的时候,冲突解决方法将被调用以解决冲突,如果无法解决,则被记录到目 标站点的错误队列中.记录到错误队列中的冲突只能由数据库管理员手动解决. 为了实现冲突解决方案, 可能会需要修改表结构, 比如如果使用最新时间戳的解决方案, 那么就应该在表中添加一个 timestamp 列. 5. 配置高级复制的工具 1) 图形界面:Oracle Enterprise Manager 提供了一个友好的 GUI 界面用以配置高级复 制. 2) 命令行方式:Oracle 提供了一套 replication management application programming interface (API)来支持用户编写自定义的脚本用以配置高级复制,这些 API 是一系 列的 PL/SQL packages.实际上 GUI 界面的高级配置工具也是调用这些 API 来完成 配置的. 注意点: 在高级复制环境中的对于需要复制的对象作任何 DDL 操作,都应该使用高级复制配置 工具来作,比如利用 DBMS_REPCAT 包中的相应存储过程.在有些场合下也可以用导出 导入(EXP/IMP)来创建复制对象.在SQL*PLUS 中直接执行的任何 DDL 操作都不会被 复制到其它的 site 上. 6. 高级复制中的几个角色 Replication Administrator:默认名称是 repadmin,也可以修改. Propagator:一个高级复制环境中可能有多个 RA 来管理不同的 schema,但是只能有 一个 propagator 将延迟处理事务队列中的事务传递到目标站点. Receiver:负责接收和处理从 propagator 处传来的延迟处理事务.可以通过 DBMS_REPCAT_ADMIN 包中 REGISTER_USER_REPGROUP 存储过程来注册一个 receiver. 7. Database Links 数据库链接在高级复制环境中提供了数据传送的通道,在一个 MMR 环境中,如果有 N 个Master Site,就会有 N-1 个数据库链接.在MVR 环境中,则只需要从实体化视图站 点上到主站点的数据库链接. 如果使用设置向导来创建 dblink, 则会在 USING 后面使用 连接描述字串,而不是连接服务名,这样在对方数据库发生变化的时候,就必须删除重 建现有的 dblink,所以我们应该手动设定 dnlink,从而在 USING 后面使用连接服务名. 这样即使对方数据库改变,我们也只需要修改 tnsnames.ora 中的配置即可,而不需要 重建 dblink. 8. 可以进行复制的对象 ? Tables 当一个对象被复制到目标站点上时,复制支持不会自动生成.利用这个特点可以快速地 发布一个标准的数据库环境到另外的站点上. ? Indexes 作为约束的索引,当表在主站点上被创建的时候,会自动在复制站点上创建,但是对于 提高性能的索引则不会被自动创建而必须手动指定.对于索引被复制到目标站点之后, 等同于本地的索引,不需要再添加复制支持. ? Packages and Package Bodies 存储过程中的所有参数必须是 IN 的,OUT 和INOUT 不被支持.存储过程和函数也必须 定义在包中,单独的存储过程和函数无法进行复制. ? Procedures and Functions 虽然单独的存储过程和函数无法进行复制,........

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题