SelectEtoile : Base de connaissance SGBD

Posts Tagged 'spstoprepagent'

Mise en place d'un Replication MSA

Pour commencer, il faut avoir installer un Replication Server (Lire l'article suivant : Mise en place d'un Replication Server SYBASE 15)

 

Nous allons mettre une réplication entre DBSource (ASE SYBServerSource sur la machine HostSource) et DBCible (ASE SYBServerCible sur la machine HostCible)

 

Sourcer le fichier SYBASE.sh sur le RSServer. Ajouter dans le fichier interfaces les entrées des serveurs primaire et secondaire (SYBServerSource et SYBServerCible)

 

Créer un login DB_repl_maint sur SYBServerSource et SYBServerCible (login spécifique à la repli).

 

Mise en place d'une connexion logique (surtout utile pour du WarmStandBy) sur RSServer :

create logical connection to LDS_DBSource.LDB_DBSource

go

 

Mise en place de l'agent sur le Primaire (SYBServerSource) :

use DBSource

go

sp_configure '"enable rep agent thread"', 1

go

sp_config_rep_agent "DBSource", '"scan batch size"','"20000"'

go

sp_config_rep_agent "DBSource" , '"schema cache growth factor"','"2"'

go

sp_adduser DB_repl_maint

go

 

Préinstallation de la repli via l'utilitaire rs_init

sybinit.release_directory: "$SYBASE"
sybinit.product: rs
rs.rs_operation: rs_setup_db
rs.rs_name: RSServer
rs.rs_rs_sa_user: sa
rs.rs_rs_sa_pass: "SaPasswdRsServer"
rs.rs_ds_name: "SYBServerSource"
rs.rs_ds_sa_user: sa
rs.rs_ds_sa_password: "SaPasswdSYBServerSource"
rs.rs_db_name: "DBSource"
rs.rs_requires_ltm: yes
rs.rs_db_maint_user: USE_DEFAULT
rs.rs_db_maint_password: USE_DEFAULT
rs.rs_db_dbo_user: sa
rs.rs_db_dbo_password: "SaPasswdSYBServerSourcer"
rs.ltm_name: "SYBServerSource"
rs.rs_ltm_rs_user: USE_DEFAULT
rs.rs_ltm_rs_pass: USE_DEFAULT
rs.rs_ltm_admin_user: USE_DEFAULT
rs.rs_ltm_admin_pass: USE_DEFAULT
rs.rs_ltm_errorlog: USE_DEFAULT
rs.rs_ltm_cfg_file: USE_DEFAULT
rs.rs_charset: USE_DEFAULT
rs.rs_language: USE_DEFAULT
rs.rs_sortorder: USE_DEFAULT
rs.rs_db_physical_for_logical: yes
rs.rs_db_active_or_standby: active
rs.rs_db_logical_ds_name: "LDS_DBSource"
rs.rs_db_logical_db_name: "LDB_DBSource"
rs.rs_init_by_dump: no
rs.do_add_replication_server: no
rs.do_add_ltm: no

 

Activation de la replication sur le Primaire (SYBServerSource) :

use DBSource

go

sp_reptostandby "DBSource","ALL"

go

 

Lancer la connection sur le RSServer :

resume connection to SYBServerSource.DBSource

 

Mise en place de la replication vers le secondaire (connection, Replication Definition, Souscription)

Se connecter au RSServer

create connection to SYBServerCible.DBCible
set error       class rs_sqlserver_error_class
set function string class rs_sqlserver_function_class
set username DB_repl_maint
set password DB_repl_maint_pwd
go
!!sleep 5
go
create   database replication definition  RD_DBSource
with primary at LDS_DBSource.LDB_DBSource
not replicate system procedures
not replicate ddl
go
!!sleep 5
go
define subscription SU for database replication definition RD_DBSource
with primary at LDS_DBSource.LDB_DBSource
with replicate at SYBServerCible.DBCible
subscribe to truncate table
use dump marker
go

 

Rafraichissement de la base secondaire DBCible :

dump de la base primaire DBSource et load de ce dump sur la base secondaire DBCible

 

Démarrage de la réplication :

Lancer un 'resume connection to SYBServerCible.DBCible' sur le RSServer

 

Vérification du bon fonctionnement :

Sur le RSServer : lancer un 'admin who_is_down'. Si pas de ligne, tout fonctionne

Sur le SYBServerCible, dans la base DBCible : lancer 'select origin_time,dest_commit_time from rs_lastcommit'. Cela permet de visualiser le temps de réplication.

 

 

 

 

 

 

 

 

 

 

 

 

 

Pb de désinstallation / installation Replication SYBASE

Si une réplication ne se désinstalle pas car il y a des queues en cours de traitement qui diffèrent le drop effectif des souscriptions

On peut procéder comme suit :

 

1/ Déterminer les queues à purger

1> admin who

2> go

 Spid Name       State                Info

 ---- ---------- -------------------- ----------------------------------------

   89 DIST       Awaiting Wakeup      177 LDS_MABASE.ldb_MABASE

   51 SQT        Awaiting Wakeup      177:1  DIST LDS_MABASE.ldb_MABASE

   48 SQM        Awaiting Message     177:1 LDS_MABASE.ldb_MABASE

   65 SQM        Awaiting Message     177:0 LDS_MABASE.ldb_MABASE

   38 DSI EXEC   Active               178(1) IQ_MABASE.IQ_MABASE2

  139 DSI        Awaiting Command     178 IQ_MABASE.IQ_MSBASE2

  127 SQM        Awaiting Message     178:0 IQ_MABASE.IQ_MSBASE2

   94 DSI EXEC   Awaiting Command     179(1) DATASERVER.MABASE

   79 DSI        Awaiting Message     179 DATASERVER.MABASE

      REP AGENT  Down                 DATASERVER.MABASEB

   13 DSI EXEC   Awaiting Command     101(1) RSSDSERVER.RSSD

    9 DSI        Awaiting Message     101 RSSDSERVER.RSSD

    8 SQM        Awaiting Message     101:0 RSSDSERVER.RSSD

   10 dSUB       Sleeping

    6 dCM        Awaiting Message

    7 dAIO       Awaiting Message

   11 dREC       Sleeping             dREC

   12 dSTATS     Sleeping

   14 USER       Active               sa

    5 dALARM     Awaiting Wakeup

1> admin quiesce_check

2> go

Msg 6145, Level 12, State 0:

Server 'RSSDSERVER':

Can't Quiesce. Queue 178:0 has not been read out. Write=77.40 Read=41.35 Reader=178:0  DSI 178 IQ_MABASE.IQ_MABASE2

1> shutdown

2> go

CT-LIBRARY error:

        ct_results(): network packet layer: internal net library error: Net-Library operation terminated due to disconnect

 

 

2/ Redémarrer le replication server en mode maintenance

cd $SYBASE/REP-12_6/install

startserver –f RUN_RSSDSERVER_Maint

Ce fichier RUNSERVER possède le flag –M de maintenance.

 

3/ Purger la queue de la réplication

1> sysadmin sqm_purge_queue, 178, 0

2> go

1> shutdown

2> go

 

4/ Redémarrer le replication server en mode normal

 

5/ Relancer la désinstallation de la réplication

 

 

Problème de drop connexion et de purge d'une queue

Avant toute chose, stopper et supprimer l’agent sur le Serveur Primaire
sp_stop_rep_agent
Se le serveur RS :   
Sysadmin dropdb, DATASERVER1,MABASE   
Sysadmin dropdb, DATASERVER2,MABASE   
Sysadmin dropldb, LDS_MABASE, ldb_MABASE   
Shutdown   
Start RS   
Drop connection to DATASERVER2.MABASE   
Drop connection to DATASERVER1.MABASE  
Drop connection to LDS_MABASE.ldb_MABASE

 

Puis, vérifier que les stable queues sont bien vides

 

On peut alors réinstaller la repli

 

 

 Purge d'une queue à la sauvage :

 

1> sysadmin hibernate_on

2> go

The Replication Server has now entered hibernation mode.

1> sysadmin sqm_purge_queue,120,0

2> go

1> sysadmin hibernate_off

2> go