Vytvoření definice replikace v databázi ASA

Top  Previous  Next

Seznam témat:

řešení

 

Řešení

Tento dokument popisuje základní a typické kroky nutné k zavedení replikací do databází. Předpokládá se existence jedné centrální (konsolidované) DB a několika vzdálených (remote) DB. Všechny databáze musí být v okamžiku zavedení replikací shodné (!). Nejlépe se toho docílí off-line rozkopírováním databázových souborů. Všechny níže popsané akce lze provádět, jak pomocí SQL příkazů (příklady jsou uvedeny) tak vizuálně pomocí Sybase Centralu. Výjimkou je nastavení remote options, které se musí provést jen pomocí SQL jazyka.

 

Zavedení remote userů

Je třeba v DB definovat uživatele, na kterého se připojí replikační agent a pod jeho účtem provede příkazy došlé ze vzdálené DB. Tento uživatel musí mít privilegium "REMOTE DBA" a musí být rovněž definován ve vzdálené DB. Takže v konsolidované DB bude jeden vlastní remote user a dále tolik, kolik bude vzdálených DB. Ve vzdálených DB budou obvykle remote uživatelé dva (vlastní a pro kons. DB).

 

pro remote DB:

GRANT CONNECT TO "cons_user" IDENTIFIED BY 'sql';

GRANT REMOTE DBA TO "cons_user";

GRANT CONNECT TO "remote_userx" IDENTIFIED BY 'sql';

GRANT REMOTE DBA TO "remote_userx";

 

pro konsolidovanou DB:

GRANT CONNECT TO "cons_user" IDENTIFIED BY 'sql';

GRANT REMOTE DBA TO "cons_user";

GRANT CONNECT TO "remote_user1" IDENTIFIED BY 'sql';

GRANT REMOTE DBA TO "remote_user1";

...

GRANT CONNECT TO "remote_userx" IDENTIFIED BY 'sql';

GRANT REMOTE DBA TO "remote_userx";

 

Definice publishera

Jednoho (právě jednoho) z remote userů lze prohlásit za publishera. Tento user bude podepsán pod každou replikační zprávou odcházející z této DB. Dá se říct, že identifikuje od koho (ze které remote DB) replikační příkaz pochází.

 

pro remote DB:

GRANT PUBLISH TO "remote_userx";

 

pro konsolidovanou DB:

GRANT PUBLISH TO "cons_user";

 

 

Definice replikačního kanálu a vlastní adresy

Každá DB zúčastněná v replikačním systému musí mít přidělenou vlastní schránku (adresu), ze které si bude vybírat zprávy od jiných DB určené právě jí. Rovněž musí být definován způsob doručování replikačních zpráv. Adresou se rozumí adresář na serveru, do kterého vidí oba databázové servery (u přenosů prostřednictvím sdílených souborů či FTP). Při využití FTP nesmí adresa obsahovat žádná lomítka jako oddělovače cesty. Pokud se schránky nacházejí hlouběji v adresářové struktuře, je nutné definovat kořenový adresář (root_directory) společný všem replikačním schránkám, viz níže "nastavení remote options".

pro remote DB:

CREATE REMOTE TYPE "FTP" ADDRESS 'remotex';

 

pro konsolidovanou DB:

CREATE REMOTE TYPE "FTP" ADDRESS 'consolidated';

 

 

 

Definice replikačního kanálu a adresy ostatním remote userům

Předchozím příkazem se vlastně definoval komunikační kanál a adresa pro domácí databázi (publishera). Dále je nutné totéž definovat i pro ostatní databáze (remote usery). Vzdálené DB mají za normálních okolností už jen jednoho remote usera, a to kvůli konsolidované DB. Více než dva remote users připadají v úvahu jen u konsolidované DB, která musí mít samozřejmě tolik definovaných remote userů, s kolika DB si vyměňuje data (plus publishera).

 

pro remote DB:

GRANT CONSOLIDATE TO "cons_user" TYPE "FTP" ADDRESS 'consolidated';

 

pro konsolidovanou DB:

GRANT REMOTE TO "remote_userx" TYPE "FTP" ADDRESS 'remote1';

...

GRANT REMOTE TO "remote_userx" TYPE "FTP" ADDRESS 'remotex';

 

 

Vytvoření publikací

Publikací se rozumí předpis, co a za jakých podmínek se má posílat ven z databáze.

 

pro remote DB např.:

CREATE PUBLICATION "DBA"."cons_pub"

(

       TABLE "DBA"."gag",

       TABLE "DBA"."gbanky",

       TABLE "DBA"."gcl1stru",

       TABLE "DBA"."gcl1",

       TABLE "DBA"."gcl2",

       TABLE "DBA"."gcl3",

       TABLE "DBA"."gcl4",

       TABLE "DBA"."greports" WHERE user_id is null

);

 

pro konsolidovanou DB např.:

CREATE PUBLICATION "DBA"."remote_pub"

(

  TABLE "DBA"."gcl1",

       TABLE "DBA"."gcl2",

       TABLE "DBA"."gcl3",

       TABLE "DBA"."gcl4",

       TABLE "DBA"."greports" WHERE user_id is null

);

 

 

Vytvoření subskripcí

Subskripcí se rozumí přiřazení publikací konkrétním remote userům. Jakmile je subskripce odstartována, jsou sledovány veškeré změny do tabulek popsaných v příslušné publikaci.

 

pro remote DB:

CREATE SUBSCRIPTION TO "DBA"."cons_pub" FOR "cons_user";

go

START SUBSCRIPTION TO "DBA"."cons_pub" FOR "cons_user";

 

pro konsolidovanou DB:

CREATE SUBSCRIPTION TO "DBA"."remote_pub" FOR "remote_userx";

go

START SUBSCRIPTION TO "DBA"."remote_pub" FOR "remote_userx";

 

 

Nastavení remote options

Při transferu přes FTP je nutno ještě definovat adresu FTP serveru, přihlašovací jméno a heslo, popř. kořenový adresář pro jednotlivé replikační schránky. Tyto parametry jsou uloženy v systémové tabulce SYS.SYSREMOTEOPTION a budou pravděpodobně shodné pro všechny DB v replikačním systému.

 

SET REMOTE "FTP" OPTION PUBLIC."host" = '192.168.1.133';

go

SET REMOTE "FTP" OPTION PUBLIC."user" = 'userftp';

go

SET REMOTE "FTP" OPTION PUBLIC."root_directory" = 'usr/vision';

go

SET REMOTE "FTP" OPTION PUBLIC."password" = 'hesloftp';

 

Související témata