简单介绍一下ODSEE的复制拓扑的建立,复制协议可以通过管理界面进行创建,也可以通过命令行创建。在此之前需要了解一些复制协议的相关概念,这里针对OESEE。

1,复制角色

  master(提供者,也可以叫做数据源):为hub和consumer提供数据,可进行读写操作

  hub(路由也可称为):可以为consumer提供数据源,读写操作通过referral到master主数据源上进行

  consumer(消费者):只能进行读取操作,写操作通过referral到master主数据源上进行。

  复制角色之间可以进行相互转换,倒是遵循变动顺序:master-->hub-->consumer,consumer-->hub-->master。

2,复制类型

  1)多主复制(master---master):读写复制,复制协议两端的角色都为master,均可进行读写操作;但是同时在两端进行操作可能会引起复制冲突,不建议同时在两端进行写操作。

  2)主从复制(master--consumer):主从复制,consumer保存一份master拷贝;

  3)master--hub--consumer:和主从复制相同,hub保存一分master拷贝,并向comsumer提供数据源。

  如果复制拓扑里超过16台服务器进行复制,这时需要考虑使用主从复制;如果超过百台服务器,这是需考虑使用3)种复制类型,并且每个master链接的hub数量至少是10个,每个hub最多能连接20个consumer;任何一个复制拓扑当中都不应该出现hub数量与master相同,或则hub数量与consumer数量相同(原文出处:https://docs.oracle.com/cd/E19424-01/820-4806/gadwv/index.html)

3,复制管理员条目

  consumer提供一个针对复制使用的复制管理员对master的变更进行认证;master使用这个复制管理员连接到consumer。

  在consumer服务器上,复制管理员具有操作条目变更的权限;复制管理员不能作为被复制的条目信息;创建复制协议时,复制管理员需配置在复制角色为master及hub的一方。

  创建复制协议时,可以使用简单的复制协议,consumer不对数据源进行认证;可以使用复制管理员进行认证(SSL server authentication);可以使用证书进行认证(SSL client authentication)。

了解以上内容后就可以创建复制协议了,复制协议基于DN,因此复制协议的创建步骤:创建复制管理员(可选),设置复制角色,在master/hub角色上创建复制协议,初始化复制协议。

4,创建复制管理员

  由于复制管理员账户不能作为被复制的数据,所以只能通过ldapmodify命令进行添加,添加命令如下(真多ldapmodify,ldapsearch等命令会在后面介绍):

  ldapmodify -a -h hostanme -p port -D cn=admin,cn=Administrators,cn=dscc -w 12345678 -f File_path

    参数说明:

      -a :添加操作

      -f:ldif文件路径,如果不写该选择,则可以在命令行中直接进行编辑操作,推荐使用ldif文件方式

    文件内容可以如下:

      dn: cn=RM_From_masterHost,cn=replication,cn=config

      changetype: add

      objectClass: person

      objectClass: top

      sn: replicat_manager

      cn: replicat_manager

      userPassword: 12345678

5,配置复制角色

  1)启用master复制角色

    /bin/dsconf enable-repl -h hostname -p port -w PWD_FILE -d REL_ID master BASE_DB

      参数说明: -w:directory Manager密码文件路径,-d:master 角色唯一标识符,1--65534,BASE_DB:启用复制角色的dn,例如dc=example,dc=cr

  2)启用hub复制角色

    /bin/dsconf enable-repl -h hostname -p port -w PWD_FILE hub BASE_DB

  3)启用consumer复制角色

    /bin/dsconf enable-repl -h hostname -p port -w PWD_FILE  consumer BASE_DB

6,创建复制协议

  复制协议的创建在master和hub角色上,执行命令如下:

  /bin/dsconf create-repl-agmt -h hostname -p port suffix-DN consumer-host:consumer-port [consumer-host:consumer-port]

  (如果master服务器或consumer服务器更改了端口,和该服务器相关的复制协议就需要重新建立)

  查看复制协议(status :ok标识复制协议转台正常)

  ./bin/dsconf show-repl-agmt-status -h hostname -p port suffix-DN consumer-host:consumer-port

  执行如下命令,使复制协议两端的服务器使用相同的复制协议配置

  /bin/dsconf accord-repl-agmt -h hostname -p port suffix-DN consumer-host:consumer-port

  默认情况下创建的复制协议,在consumer端会自动添加一个到master的referral,即在consumer也是可以写的,只不过通过referral到了master上,但是为了保证读写完全分离,此时应该将consumer短的referral设置为一个不可达地址。设置命令如下:

  /bin/dsconf set-suffix-prop -h host -p port suffix-DN referral-url:ldaps://servername:port

7,配置复制协议复制管理员

  管理员的创建要在创建复制协议之前,创建复制协议的时候配置复制管理员,同样是在master/hub端:

  /bin/dsconf set-repl-agmt-prop -h hostname -p port  $3consumer-host:consumer-port auth-bind-dn:REPL_MAG_DN auth-pwd-file:REPL_MAG_PWD

8,复制协议启停

  启用复制协议:创建完复制协议后,应该执行启用复制协议操作

  /bin/dsconf enable-repl-agmt -h hostname -p port suffix-DN consumer-host:consumer-port [consumer-host:consumer-port ...]

  停止复制协议:

  /bin/dsconf disable-repl-agmt -h hostname -p port suffix-DN consumer-host:consumer-port [consumer-host:consumer-port ...]

9,删除复制协议

  /bin/dsconf delete-repl-agmt -h hostname -p port suffix-DN consumer-host:consumer-port

10,复制协议初始化

  如果数据量较大推荐使用命令行进行,如果数据量较小,推荐使用管理界面进行操作。在进行复制协议初始化之前需保证master已经被正确初始化,可以通过dsconf或则dsadm的方式初始化创建的master suffix;也可以使用二进制文件进行初始化,但是限制条件较多不建议使用。

  /bin/dsconf init-repl-dest -h host -p port suffix-DN destination-host:destination-port [destination-host:destination-port]

  完成后查看复制协议状态:

  /bin/dsconf show-repl-agmt-status -h host -p port suffix-DN destination-host:destination-port

11,强制更新consumer

  如果复制协议停止,可以执行此操作,这个操作不能通过管理界面进行。通过dsconf执行的配置操作可能会需要重新启动服务器实例

  /bin/dsconf update-repl-dest-now -h host -p port suffix-DN destination-host:destination-port [destination-host:destination-port]

12,复制冲突的解决

  1)复制冲突

   存在更改冲突的条目包含操作属性,nsds5ReplConflict作为冲突标记,使用ldapSearch查找冲突.
    $ ldapsearch -h hostname -p port -D cn=admin,cn=Administrators,cn=config -w - -b BASE_DN "(nsds5ReplConflict=*)"

  2)命名冲突

   在相互复制的时候发生,存在相同的dn,解决办法是重命名第二个条目。由属性nsuiqueid提供。多值属性进行重命名解决(nsuniqueid);单值属性通过重命名解决。

  3)孤立条目冲突

   再添加或是删除的时候,不存在父条目或者存在子条目的时候就可能产生孤立条目,此时会通过创建紧附条目的方式避免。紧附条目包含对象类glue和extensibleObject的临时条目。可以修改紧附条目以删除 glue 对象类和 nsds5ReplConflict 属性(以便使此条目保持为普通条目),或者删除紧附条目及其子条目

  4)潜在互操作问题

   限制访问存在nsds5ReplConflict 属性的条目,添加aci:

    (target="ldap:///dc=example,dc=com")(targetattr!="userPassword")

    (targetfilter="(!(nsds5ReplConflict=*))")(version 3.0;acl
    "Anonymous read-search access";allow (read, search, compare)
    (userdn="ldap:///anyone");)

复制拓扑的建立区分好读写功能,可以很好的避免由于操作导致的复制冲突。以上内容参考一下内容:
参考链接:http://docs.oracle.com/cd/E29127_01/doc.111170/e28972/ds-replication.htm

ldap数据库--ODSEE--复制协议的更多相关文章

  1. ldap数据库--ODSEE--suffix

    ldap数据库的suffix是建立ldap之间复制协议的基础,suffix的创建也可以通过管理界面进行,也可以通过命令行进行.不同点是通过管理界面创建的suffix会自动创建一条对应该suffix的匿 ...

  2. ldap数据库--ODSEE--安装

    在安装之前最好查看一下服务器硬件是否满足要求,是否需要更改一些系统配置来达到使用ldap数据库的最有性能.实际使用的ldap数据库是oracle的产品,DS70即ODSEE. 安装环境:solaris ...

  3. MySQL同主机不同数据库的复制命令

    MySQL同主机不同数据库的复制命令:注意运行在Terminal中,不运行在MySQL命令行中. 1 mysqldump Portal_DEV -u root -ppassword1$ --add-d ...

  4. sql数据库表复制、查看是否锁表

    1.不同数据库之间复制表的数据的方法: 当表目标表存在时: insert into 目的数据库..表 select * from 源数据库..表 当目标表不存在时: select * into 目的数 ...

  5. SQL Server 跨服务器 不同数据库之间复制表的数据

    不同数据库之间复制表的数据的方法: 当表目标表存在时: insert into 目的数据库..表 select * from 源数据库..表 当目标表不存在时: select * into 目的数据库 ...

  6. 孤荷凌寒自学python第四十八天通用同一数据库中复制数据表函数最终完成

    孤荷凌寒自学python第四十八天通用同一数据库中复制数据表函数最终完成 (完整学习过程屏幕记录视频地址在文末) 今天继续建构自感觉用起来顺手些的自定义模块和类的代码. 今天经过反复折腾,最终基本上算 ...

  7. 孤荷凌寒自学python第四十七天通用跨数据库同一数据库中复制数据表函数

    孤荷凌寒自学python第四十七天通用跨数据库同一数据库中复制数据表函数 (完整学习过程屏幕记录视频地址在文末) 今天继续建构自感觉用起来顺手些的自定义模块和类的代码. 今天打算完成的是通用的(至少目 ...

  8. MySQL/MariaDB数据库的复制监控和维护

      MySQL/MariaDB数据库的复制监控和维护 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.清理日志 1>.删除指定日志文件名称之前的日志(也可用基于时间) M ...

  9. MySQL/MariaDB数据库的复制加密

      MySQL/MariaDB数据库的复制加密 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MySQL的安全问题 1>.基于SSL复制 在默认的主从复制过程或远程连接 ...

随机推荐

  1. MySQL之多表操作

    前言:之前已经针对数据库的单表查询进行了详细的介绍:MySQL之增删改查,然而实际开发中业务逻辑较为复杂,需要对多张表进行操作,现在对多表操作进行介绍. 前提:为方便后面的操作,我们首先创建一个数据库 ...

  2. Vim的基本使用(二)

    本文为原创文章,转载请标明出处 目录 11.可视模式 12.指定计数 13.重复命令 14.外部命令 15.命令行编辑 16.文件编辑 17.分割窗口 18.GUI命令 19.配置 20.Vim Ch ...

  3. 基于LoadRunner11,以wifi热点方式录制APP脚本简单指导

    本想详细写下操作过程,但并不觉着十分必要,通过baidu或我要自学网均能找到相关资料,所以详细操作过程不再赘述,只是把过程中遇到的问题说明下解释下,让大家“录制APP”的路更平坦! 1.如何使用Loa ...

  4. SQL server学习(五)——T-SQL编程之存储过程

    周五了,祝大家周末愉快. 之前一直在写SQL server的分享,今天再来个T-SQL编程中的存储过程. 存储过程 存储过程(procedure)类似于C语言中的函数,用来执行管理任务或应用复杂的业务 ...

  5. zabbix部署

    zabbix部署 ----2016年年终总结 二 服务器端安装   yum install zabbix-server 客户端安装 yum install zabbix-agent 配置Server ...

  6. PPT排版细节,写给大家看的设计书,完美总结

    原创作者:陈玓玏 相信每一位小宝贝在工作中都会被老板用PPT虐无数遍,虐到自己怀疑人生.奈何在网上随手一搜,出现的各类招聘要求都躲不开"熟练掌握PPT制作",尤其是各类科技公司.咨 ...

  7. .net Mvc框架原理

    .net Mvc框架原理 本文只是简要说明原理,学习后的总结. 1.当一个Http请求发送后会被URLRoutingModule拦截(这时候也就是正式进入管道,下章会讲管道事件) 2.这时根据Isap ...

  8. 张高兴的 Windows 10 IoT 开发笔记:DHT11 温湿度传感器

    GitHub : https://github.com/ZhangGaoxing/windows-iot-demo/tree/master/DHT11Demo

  9. servlet过滤器简化版

    什么是过滤器 在struts2 中集成了过滤器,并可以根据需要选择合适自己的过滤器进行配置 , 过滤器:是基于函数回调的,运用java中的反射机制工作在struts2只能对于action起作用,在se ...

  10. Iozone

    参考地址:iozone使用技巧.iozone和Fio安装测试说明 iozone介绍 iozone(www.iozone.org)是一个文件系统的benchmark工具,可以测试不同的操作系统中文件系统 ...