TimesTen 数据库复制学习:9. 更改Active Standby Pair

在Active Standby Pair中复制DDL语句

在以下的例子中,active master为cachedb2, standby master为cachedb1

在Active Standby Pair复制数据库对象

DDLReplicationLevel 连接属性可以控制复制对象的行为。

DDLReplicationLevel = 1:不复制表,索引和同义词的create 和 drop,只复制复制表的添加和删除列操作

DDLReplicationLevel = 2: 缺省,复制表,索引和同义词的create 和 drop;DDLReplicationAction 必须设置为INCLUDE(缺省)

DDLReplicationLevel = 3:除了2 的所有行为外,还复制视图,序列,ttCacheUidPwdSet,以及可以为一个表加一个非空的列

控制复制的行为

以下是DDLReplicationLevel = 2 的情形(缺省)

cachedb2> call ttconfiguration;
......
< DDLReplicationAction, INCLUDE >
< DDLReplicationLevel, 2 >

cachedb2> create table a1(a int, primary key(a));
cachedb1> select * from a1;
cachedb2> insert into a1 values(1);
cachedb1> select * from a1;
< 1 >
cachedb2> drop table a1;
cachedb1> select * from a1;
 2206: Table TTHR.A1 not found

cachedb2> create table a2(a int);
17061: When DDLReplicationAction=‘INCLUDE‘ tables must be created with a primary key or a unique constraint on non-nullable column(s)

cachedb2> ALTER SESSION SET ddl_replication_action=‘EXCLUDE‘; <- 只是不复制DML,DDL仍复制

Session altered.
cachedb2> call ttconfiguration(‘DDLReplicationAction‘);
< DDLReplicationAction, EXCLUDE >
cachedb2> create table a1(a int, primary key(a));
cachedb1> select * from a1;
cachedb2> insert into a1 values(1);
cachedb1> select * from a1;

cachedb2>  create table a2(a int);
cachedb1> select * from a2;

cachedb1> repschemes;

Replication Scheme Active Standby:

  Master Store: CACHEDB2 on TIMESTEN-HOL
  Master Store: CACHEDB1 on TIMESTEN-HOL

  Excluded Tables: <- 注意这里
    TTHR.A1
    TTHR.A2

  Excluded Cache Groups:
    None

  Excluded sequences:
    None

  Store: CACHEDB1 on TIMESTEN-HOL
    Port: (auto)
    Log Fail Threshold: (none)
    Retry Timeout: 120 seconds
    Compress Traffic: Disabled

  Store: CACHEDB2 on TIMESTEN-HOL
    Port: (auto)
    Log Fail Threshold: (none)
    Retry Timeout: 120 seconds
    Compress Traffic: Disabled

  Store: _ORACLE from TIMESTEN-HOL
    Port: (auto)
    Log Fail Threshold: (none)
    Retry Timeout: 120 seconds
    Compress Traffic: Disabled

cachedb2> ALTER ACTIVE STANDBY PAIR INCLUDE TABLE a1;
cachedb2> insert into a1 values(3);
cachedb1> select * from a1;
< 3 >

cachedb2> repschemes;

Replication Scheme Active Standby:

  Master Store: CACHEDB2 on TIMESTEN-HOL
  Master Store: CACHEDB1 on TIMESTEN-HOL

  Excluded Tables:
    TTHR.A2
  Included Tables: <- 注意这里
    TTHR.A1

  Excluded Cache Groups:
    None

  Excluded sequences:
    None

  Store: CACHEDB1 on TIMESTEN-HOL
    Port: (auto)
    Log Fail Threshold: (none)
    Retry Timeout: 120 seconds
    Compress Traffic: Disabled

  Store: CACHEDB2 on TIMESTEN-HOL
    Port: (auto)
    Log Fail Threshold: (none)
    Retry Timeout: 120 seconds
    Compress Traffic: Disabled

  Store: _ORACLE from TIMESTEN-HOL
    Port: (auto)
    Log Fail Threshold: (none)
    Retry Timeout: 120 seconds
    Compress Traffic: Disabled

cachedb2> create index idx on a1(a);
17063: CREATE INDEX can only refer to empty tables when DDLReplicationLevel > 1

先不复制一个表,后续又将其加入到复制计划中

cachedb2> drop table a2;
cachedb2> ALTER SESSION SET ddl_replication_action=‘exclude‘;

Session altered.

cachedb2> create table a2(a int not null);
cachedb1> select * from a2;
cachedb2> ALTER ACTIVE STANDBY PAIR INCLUDE TABLE a2;
 8000: No primary or unique index on non-nullable column found for replicated table TTHR.A2
cachedb2> CREATE UNIQUE INDEX ixnewtab ON a2(a);
cachedb2> ALTER ACTIVE STANDBY PAIR INCLUDE TABLE a2;

下面例子说明了,如果一个表最初不在复制计划中,然后又加入复制计划,此表必须为空

cachedb2> ALTER SESSION SET ddl_replication_action=‘exclude‘;

Session altered.

cachedb2> create table a2(a int, primary key(a));
cachedb2> insert into a2 values(1);
cachedb2> insert into a2 values(2);
cachedb2> ALTER ACTIVE STANDBY PAIR INCLUDE TABLE a2;
17059: Replicated INCLUDE TABLE failed for (TTHR.A2) because the table is not empty
cachedb2> delete from a2;
cachedb2> ALTER ACTIVE STANDBY PAIR INCLUDE TABLE a2;

可以自动复制的对象

以下的对象在DDLReplicationLevel = 2或3时可以自动复制

* Create, alter, or drop a user with the CREATE USER, ALTER USER, or DROP USER statements.

* Grant or revoke privileges from a user with the GRANT or REVOKE statements.

* Alter a table to add or drop a column with the ALTER TABLE … ADD COLUMN or ALTER TABLE … DROP COLUMN statements. These are the only ALTER TABLE clauses that are replicated. However, when DDLReplicationLevel=2, you cannot alter a table to add a NOT NULL column to a table that is part of a replication scheme with the ALTER TABLE … ADD COLUMN NOT NULL DEFAULT statement. You can execute this statement if DDLReplicationLevel=3.

* Create or drop a table, including global temporary tables with the CREATE TABLE or DROP TABLE statements. The new table is also included in the active standby pair.

* Create or drop a synonym with the CREATE SYNONYM or DROP SYNONYM statements.

* Create or drop an index with the CREATE INDEX or DROP INDEX statements.

以下的对象仅在 DDLReplicationLevel = 3时可以自动复制

* 视图

* 序列(sequence)

* ttCacheUidPwdSet 操作

以上的复制操作均不需要停止复制代理。

对于物化视图的操作,更改autorefresh mode,PL/SQL都不会复制

如果需要创建PL/SQL函数,需要在所有的数据库中执行create语句并赋权

只有在空表创建的索引才会被复制,如果需要复制索引,可以将DDLReplicationLevel设为1,然后在所有数据库上手工建立

对于active standby pair的其它更改操作

以下的操作必须先停止复制代理:

* Include or exclude a cache group.

* Add or drop a subscriber.

* Change values in the STORE clause.

* Change network operations (ADD ROUTE or DROP ROUTE clause).

以上操作的过程如下:

1. 在active上停rep agent

2. 如果ASP包含缓存组,在active上停cache agent

3. 使用ALTER ACTIVE STANDBY PAIR修改复制schema

4. 在active上启动rep agent

5. 如果ASP包含缓存组,在active上启动cache agent

6. destroy所有的standby和subscriber

7. 使用ttRepAdmin 克隆standby

8. 启动standby上的rep agent

9. 等待standby的状态自动变为STANDBY(ttRepStateGet )

10. 如果ASP包含缓存组,在standby上启动cache agent

11. 通过standby克隆subsc

12. 启动subscriber上的复制代理

时间: 2024-11-07 07:00:21

TimesTen 数据库复制学习:9. 更改Active Standby Pair的相关文章

TimesTen 数据库复制学习:7. 管理Active Standby Pair(无缓存组)

Active Standby Pair是TimesTen复制的一种固定模式,就是1个active到1个standby,再到0个或127个subscriber,如下图: 配置 Active Standby Pair (不带缓存组) 大致步骤如下: 1. 创建数据库 2. 使用CREATE ACTIVE STANDBY PAIR创建复制 3. 调用Call ttRepStateSet('ACTIVE'),将active数据库的角色设为ACTIVE 4. 调用Call ttRepStart, 启动复制

TimesTen 数据库复制学习:8. 管理Active Standby Pair(带缓存组)

带缓存组的Active standby pairs(ASP) 在不带缓存组的ASP中,复制发生在TimesTen的表间:而在带缓存组的ASP中,复制发生在cache table之间.带缓冲组的复制仅支持只读和AWT缓存组.对于只读缓存组,复制的意义在于保持状态的连续,而对于AWT,复制可以保证数据不丢失. 设置带只读缓存组的ASP(例) 假设active master为cachedb1,standby master为cachedb2 在active上创建dynamic readonly缓存组 c

TimesTen 数据库复制学习:2. 配置Active Standby Pair

本文为一个动手实验,配置Active Standby Pair,配置3个数据库, master, standby和一个subscriber.拓扑如下: 在本实验中,为简化,三个数据库皆位于同一主机. 创建DSN [ODBC Data Sources] master1=TimesTen 11.2.2 Driver master2=TimesTen 11.2.2 Driver subscriber1=TimesTen 11.2.2 Driver [master1] Driver=/home/orac

TimesTen 数据库复制学习:5. 设定复制网络传输的return service

return service指在复制源和目标之间的同步模式,可以是no return(异步),return receipt(准同步)和return twosafe(全同步). 本文的描述对于active standby和classic replication都适用. 脚本准备 $ cat insert1.sql INSERT INTO employees VALUES ( 202, 'Pat', 'Fay', 'PFAY', '603-123-7777', TO_DATE('17-AUG-199

TimesTen 数据库复制学习:15. 监控复制系统

复制系统的监控主要通过ttStatus 和 ttRepAdmin命令,也可以从系统表中得到信息. 以下的输出,基于cachedb1为复制源,cachedb2为复制目标 显示复制代理的状态 ttstatus显示复制代理状态 注意Replication agent is running. 这行 $ ttstatus TimesTen status report as of Wed Jun 29 18:04:26 2016 Daemon pid 2644 port 53392 instance tt1

TimesTen 数据库复制学习:10. 定义classic复制

设计高可用系统 复制的目标为: 1. 提供一个或多个复制数据库,保证数据可以为应用所用 2. 提供复制数据库用于恢复 3. 负载均衡 4. 无中断的软件升级和维护 classic replication scheme支持以下形式: Unidirectional - 这个和ASP有和区别,会切换角色吗 Bidirectional split workload - 双向,属于互备型,两个数据库负责不同的工作负载 Bidirectional distributed workload - 双向,属于双活

TimesTen 数据库复制学习:16. 一个缓存组,复制,客户端自动切换的串烧实验

简介 这时一个集只读,AWT缓存组,Active Standby 复制,client auto failover为一体的集成实验. 整个过程来至于Doc ID 1359840.1, 本文基于此文档按照自己的环境重做了一遍,并更正了其中的小错误,增加了自己的理解. 本文省略了在Oracle端设置缓存组的过程,可以参见前面的文章. 搭建的环境为虚拟机 timesten-hol 上安装了两个TimesTen实例, 实例名分别为tt1122和ttnew, 分别驻留在端口53392(缺省)和55555 t

TimesTen 数据库复制学习:1. TimesTen复制概述

本文为TimesTen数据库复制系列的第一篇. 什么是复制 复制就是在多个数据库中存在多份数据拷贝,对性能影响最小的同时保证数据高可用,除了数据恢复外,还可以均衡工作负载,以最大化性能和实现滚动升级和维护 TT复制的实现是在master和subscriber数据库都有复制代理,一个负责读,一个负责加载,数据在rep agent间传递 TT推荐的方法是ASP(active standby pair),TT支持复制整库,部分表,cache group, sequence等.ASP是唯一支持复制cac

TimesTen 数据库复制学习:6. 利用STORE关键字设定复制网络传输的属性

利用STORE关键字,可以在CREATE ACTIVE STANDBY PAIR, ALTER ACTIVE STANDBY PAIR, CREATE REPLICATION, 和 ALTER REPLICATION 设置复制的属性,如超时,压缩,commit行为,表定义检查,return service,对于classic复制,还可以设置表一级的数据冲突 设定return service的超时 缺省的超时为10秒,可用RETURN WAIT TIME设定超时,例如: Command> ALTE