Labels

admin (1) aix (1) alert (1) always-on (2) Architecture (1) aws (3) Azure (1) backup (3) BI-DWH (10) Binary (3) Boolean (1) C# (1) cache (1) casting (3) cdc (1) certificate (1) checks (1) cloud (3) cluster (1) cmd (7) collation (1) columns (1) compilation (1) configurations (7) Connection-String (2) connections (6) constraint (6) copypaste (2) cpu (2) csv (3) CTE (1) data-types (1) datetime (23) db (547) DB2 (1) deadlock (2) Denali (7) device (6) dotNet (5) dynamicSQL (11) email (5) encoding (1) encryption (4) errors (124) excel (1) ExecutionPlan (10) extended events (1) files (7) FIPS (1) foreign key (1) fragmentation (1) functions (1) GCP (2) gMSA (2) google (2) HADR (1) hashing (3) in-memory (1) index (3) indexedViews (2) insert (3) install (10) IO (1) isql (6) javascript (1) jobs (11) join (2) LDAP (2) LinkedServers (8) Linux (15) log (6) login (1) maintenance (3) mariadb (1) memory (4) merge (3) monitoring (4) MSA (2) mssql (444) mssql2005 (5) mssql2008R2 (20) mssql2012 (2) mysql (36) MySQL Shell (5) network (1) NoSQL (1) null (2) numeric (9) object-oriented (1) offline (1) openssl (1) Operating System (4) oracle (7) ORDBMS (1) ordering (2) Outer Apply (1) Outlook (1) page (1) parameters (2) partition (1) password (1) Performance (103) permissions (10) pivot (3) PLE (1) port (4) PostgreSQL (14) profiler (1) RDS (3) read (1) Replication (12) restore (4) root (1) RPO (1) RTO (1) SAP ASE (48) SAP RS (20) SCC (4) scema (1) script (8) security (10) segment (1) server (1) service broker (2) services (4) settings (75) SQL (74) SSAS (1) SSIS (19) SSL (8) SSMS (4) SSRS (6) storage (1) String (35) sybase (57) telnet (2) tempdb (1) Theory (2) tips (120) tools (3) training (1) transaction (6) trigger (2) Tuple (2) TVP (1) unix (8) users (3) vb.net (4) versioning (1) windows (14) xml (10) XSD (1) zip (1)

SAP Replication Server Routing

How does it work?
In a "standard" replication - we have a replication definition and subscription that declare the replication between database A to database B (and C, D, ...).

In a routing replication there is one more step before the target replicated database - another RS.

The second RS should know when and what to replicate to it's target DB.

The route from The first RS to the second, and specific between their RSSDs - replicate the required definitions (rep. definition, etc.) from the first RSSD to the second one.

When the second RSSD has these definitions - we can create a subscription on the second RS from the source database to the target database. This is how it works.

Before declare a routing
  1. Two replication servers are installed and started.
  2. All target databases must have the same columns and Primary key.
  3. No identity in the target table (or subscription that know to update identity column).

Importent notes:
  1. The passwords to all RSs in the process should be the same.
  2. The RepAgent has to use a known servers names (in the ini files).
  3. Source and target tables must have a primary keys.

Routing definitions

Init servers
  1. Edit the ini file in the new server with:
    1. Current (new) RS.
    2. ASE instance of the RSSD.
    3. ASE instance of the replicatec(=target) database.
    4. First (=source) RS.
  2. Edit the ini of the first (=source) RS with:
    1. New RS.
    2. ASE instance of the source RSSD.
  3. Run rs_init:
    1. Two ways to do that:
      1. run rs_init
      2. create <SAP_RS_FOLSER>/REP-16_0/init/rs/RS2.rs (copied and edited from install.rs) and run it
        1. ./rs_init -r ../init/rs/RS2.rs
    2. In rs_init we define the servers, databases, RSSDs, users, etc.
  4. Check that RS is up:
    1. isql64 -S RSFOG2 -Usa -P<password>
    2. admin version
      go
    3. admin who
      go


Manage the route

#

RS1 (source RS)

RSSD of RS1 (RS1_RSSD)

RS2 (second RS)

Target replicated database

1

Create route

alter connection to SERVERNAME.RS1_RSSD set log transfer ON
go

create route to RS2
set username sa
set password PASSWORD
go

 

 

 

1.a

Monitor the new route until it became active

 

1> rs_helproute
2> go
 route        route_status                                                                                                 
 ----------------------------------
RS1 --------> RS2
Route is being created. Destination has not yet finished creating system table subscriptions.
 Systable Subs to be created
…… (list of what created)

* re-run to re-check untio all created.

 

 

2

add connection RS2 (second RS) → target database

 

Use rs_init

Declare DATABASE INFORMATION

1. SQL Server name: (target ASE)
2. SA user: sa
3. SA password: ******
4. Database name: (target database name)
5. Will the database be replicated: no

6. Maintenance user: <target database name>_maint
7. Maintenance password: ******
8. Is this a Physical Connection for Existing Logical Connection: no

Can be done also with "create connection" command.

 

3

Configure a  rep_agent to the RSSD

 

1> use RS1_RSSD
2> go
1> sp_config_rep_agent RS1_RSSD , 'enable' , 'RS1' , 'sa' ,'PASSWORD'
2> go
Replication Agent enabled for database 'RS1_RSSD'. The Replication Agent thread needs to be started using sp_start_rep_agent.
(return status = 0)
1> sp_start_rep_agent RS1_RSSD
2> go
Replication Agent thread is started for database 'RS1_RSSD'.
(return status = 0)

 

 

4

Grant permissions in the target database

 

 

 

1> grant all on FirstTable to  <target database name>_maint
2> go

5

create a subscription to the replicate connection in the second RS

 

 

1> create subscription subTest3 for repdefTest with primary at PRIMARYDBSERVERNAME.PRIMARYDB with replicate at TARGETDBSERVER.TARGETDBNAME without materialization
2> go
Subscription 'subTest3' is in the process of being created.
1> check subscription subTest3 for repdefTest with primary at PRIMARYDBSERVERNAME.PRIMARYDB with replicate at TARGETDBSERVER.TARGETDBNAME
2> go

 


No comments:

Post a Comment