I. Introduction

Nous posons ici les postulats de départ

Composant Nom générique pour cet article
ASE Source ASESource
ASE Cible ASECible
Réplication Server ASE_RS
Base référentielle du RS ASE_RS_RSSD
Replication Server Manager ASE_RSM
Base de données source et cible MaBase
SA pour ASE source et cible sa, pwd Null
SA pour RS sars, pwd sarssars
Maintenance user rs_maint
   

II. Comptes/logins

II-A. Synchronisation

De par le risque de désynchronisation des logins/users sous ASE, on fera en sorte que le serveur ASE cible ait la même table des logins que le serveur source.

Chaque création de login doit se faire dès à présent sur les deux serveurs ASE de manière parallèle. La méthode la plus judicieuse serait de créer une procédure stockée répliquée sp__addlogin, compte tenu du fait que sp_addlogin ne peut être répliquée (procédure système).

En cas de désynchronisation des logins entre les deux sites, purge des logins sur le site secondaire :

 
Sélectionnez
isql -Usa -P -SASECible -D master
sp_configure 'allow updates', 1
go

delete syslogins where name not in ('sa', 'sars','ASE_RS_RSSD_prim', ASE_RS_RSSD_maint')
go

delete sysloginroles from   syslogins l, sysloginroles r  
where  l.suid = r.suid and  l.name not in ('sa', 'sars', 'ASE_RS_RSSD_prim', 'ASE_RS_RSSD_maint')
go

puis rechargement des logins de la base primaire par commandes bcp :

 
Sélectionnez
bcp master..sysloginroles out loginroles.bcp -Usa -P -SASESource -c
bcp master..syslogins in logins.bcp -Usa -P -SASECible -c -b1
bcp master..sysloginroles in loginroles.bcp -Usa -P -SASECible -c -b1

II-B. Changement du mot de passe

L'installation du Replication Server a été faite en se basant sur le login sa de base (sans mot de passe). L'option de cryptage des logins n'a pas été enclenchée, ce qui fait que les logins et les mots de passe sont visibles dans les scripts de configuration de la réplication (visibles pour toute personne ayant accès au login sybase).

Pour changer ensuite le mot de passe SA, veuillez suivre scrupuleusement la procédure suivante (cette procédure est aussi valable pour les logins de maintenance et de primary users) :

  1. Stopper le Replication Server ;
  2. Se connecter à ASECible en tant que sa ;
  3. Changer son mot de passe (sp_password) ;
  4. Modifier les mots de passe des fichiers de configuration de la réplication pour les logins SA ;
  5. Redémarrer le Replication Server.

III. Installation de Sybase Replication Server

III-A. Programme binaire

Avant la version 12, il était absolument nécessaire que replication Server et Adaptive Server soient de même niveau de version afin que les bibliothèques communes puissent cohabiter. Dans le cas de deux versions spécifiques, on utilise alors deux arborescences Sybase spécifiques, ce qui, selon le système d'exploitation, s'avère être la croix et la bannière.

Dès la version 12, Sybase offre une arborescence spécifique multiversion. Celà simplifie considérablement l'installation d'un ASE et d'un RS.

III-B. rs_init

Pour s'éviter certains problèmes de configuration, insérez dans les fichiers $SYBASE/interfaces de vos serveurs source (ASESource) et cible (ASECible) les entrées suivantes

Service Protocole Adresse IP Port
ASECible tli IP du host de ASECible 5100
ASE_RS tli IP du host de ASECible 5400
ASE_RSM tli IP du host de ASECible 5500

Après avoir démarré $SYBASE/install/rs_init, choisissez

  • 1. Release directory : /opt/sybase ;
  • 2. Configure a server product ;
  • 1. Replication Server ;
  • 1. Install a new Replication Server.
Image non disponible

1. Replication Server Information

Image non disponible

1. Replication Server Name

Image non disponible

Attention de bien coller à la configuration du serveur si c'est possible (sp_helpsort)

Image non disponible


Rien de spécial à spécifier au sujet du ID Server (ASECible)

Image non disponible
Image non disponible
Image non disponible

Dans notre cas, les devices pour la base référentielle de la réplication (ASECible_RS_RSSD) ont été créés au préalable.

Image non disponible
Image non disponible

IV. Paramétrage de la base référentielle

Se connecter ensuite au serveur ASECible et paramétrer la réplication

 
Sélectionnez
use ASE_RS_RSSD
go
update rs_config set charvalue="80" where optionname ="num_threads"
update rs_config set charvalue="100" where optionname ="init_sqm_write_delay"
update rs_config set charvalue="100" where optionname ="init_sqm_write_max_delay"
update rs_config set charvalue="1024" where optionname ="num_mutexes"
update rs_config set charvalue="10" where optionname ="memory_max"
update rs_config set charvalue="8192" where optionname ="dsi_cmd_batch_size"
update rs_config set charvalue="51" where optionname ="sqm_warning_thr_ind"
update rs_config set charvalue="40" where optionname ="memory_max"
update rs_config set charvalue="200" where optionname ="num_concurrent_subs"
go

V. Paramétrage du Replication Server

V-A. Création de la connexion logique

C'est au travers de cette connexion logique que la réplication va se passer. Son utilisation - contrairement à une connexion physique de réplication "classique"- permet un switch quasi instantané d'un serveur à l'autre.

 
Sélectionnez
%SYBASE/bin/isql -Usa -P -S ASE_RS
create logical connection to LDS.MaBase_LDB
go

V-B. Ajout des bases de données dans le système de réplication

En utilisant rs_init, on va insérer la base primaire (MaBase de ASESource) et la base Warm (MaBase de ASECible). Cette base Warm Standby va devoir être initialisée par un load/dump pendant que la base de production continue à être en ligne. Cela va nous obliger à utiliser le Dump Marker.

Démarrez donc rs_init et suivez l'option 2 (Add a database to the replication system) pour chacune des deux bases de données

Image non disponible
  • 1. Replication Server information : spécifiez ASECible_rs
  • 2. Database information

V-B-1. Pour la base primaire

  1. SQL Server name : ASESource
  2. SA user : sa
  3. SA password :
  4. Database name : MaBase
  5. Will the database be replicated : yes
  6. Maintenance user : MaBase_maint
  7. Maintenance password : MaBase_maint_ps
  8. Is this a physical Connection for Existing Logical Connection : yes
  9. Logical DB Setup
  1. Is is an Active Connection or a Standby Connection : Active
  2. Logical DS name : LDS
  3. Logical DB Name : MaBase_LDB

Le maitenance User de ASESource.MaBase doit être créée sur ASECible.MaBase, et tous les droits sur tous les objets doivent lui être attribués.

V-B-2. Pour la base répliquée en WSB

  1. SQL Server name : ASECible
  2. SA user : sa
  3. SA password :
  4. Database name : MaBase
  5. Will the database be replicated : yes
  6. Maintenance user : MaBase_maint
  7. Maintenance password : MaBase_maint_ps
  8. Is this a physical Connection for Existing Logical Connection : yes
  9. Logical DB Setup
  1. Is is an Active Connection or a Standby Connection : Standby
  2. Logical DS name : LDS
  3. Logical DB Name : MaBase_LDB
  4. Physical DS name : ASESource
  5. Physical DB name : MaBase
  6. Active DB SA user : sa
  7. Active DB SA password :
  8. Initialize standby using dump and load : yes
  9. Use Dump Marker to Start Replicating to Standby : yes

V-C. Warm Standby automatique

Dès la version 11.5 du Replication Server, la procédure stockée sp_reptostandby permet de gérer une réplication Warm StandBy automatique, ajoutant la possibilité de répliquer les ordres DDL.

 
Sélectionnez
sp_reptostandby MaBase, ['all', 'none'] 
  1. Sauvegarder la base primaire sous ASESource : dump database MaBase to '/dev/tape/wsb'
  2. Recharger la base sur ASECible : load databse MaBase from '/dev/tape'
  3. Exécuter sp_reptostandby MaBase, 'all' dans ASECible et ASESource, depuis la base MaBase
  4. Résumer les connexions du replication server
 
Sélectionnez
%SYBASE/bin/isql -Usa -P -SASECible_rs
resume connection to ASECible.MaBase
resume connection to ASESource.MaBase
go

VI. Installation du Replication Server Manager

Pour initialiser le Replication Server Manager, exécuter tout d'abord $SYBASE/install/rsmgen ASECible_rsm

Image non disponible

Pour le démarrer ensuite, exécuter %SYBASE/install/RUN_ASECible_rsm. Dès lors, Sybase Central pourra se connecter au Replication Server Manager (du moment que le Plug-In de la réplication soit installé et que les services aient été installés dans sql.ini !)

VII. Procédure de bascule

VII-A. Procédure de bascule en cas de crash/non planifiée

Dans le cas d'un problème de l'Adaptive Serveur actif/primaire, ou de la base de données de production sans possibilité de récupération rapide, nous devons basculer le système de réplication du serveur actif (ASESource) au serveur StandBy (ASECible).

VII-A-1. Bascule de ASESource à ASECible

Suspendre toutes les applications du serveur primaire (ASESource) qui ne l'auraient pas été lors du crash, et mettre la base MaBase de production (ASESource) en mode 'dbo use only'.

 
Sélectionnez
isql -Usa -P -SASESource
use master
go 
sp_dboption MaBase, "dbo use only", true
go

Se connecter au RS

 
Sélectionnez
isql -Usa -P -SASECible_rs

Basculer sur la base StandBy et attendre que le basculement se soit bien passé

 
Sélectionnez
switch active for ASESource.MaBase to ASECible.MaBase
wait for switch for ASESource.MaBase

Monitorer le status

 
Sélectionnez
admin logical_status

Stopper l'agent de replication de la base de données MaBase sous ASESource

 
Sélectionnez
isql -Usa -P -SASESource
use MaBase
go
exec sp_stop_rep_agent rft [, nowait] 
go

Démarrer l'agent de réplication de la nouvelle base active (ASECible.MaBase)

 
Sélectionnez

isql -Usa -P -SASECible
use MaBase
go
exec sp_start_rep_agent rft [, for_recovery]  
go 

Marquer les tables de ASECible comme réplicables

 
Sélectionnez
isql -Usa -P -SASECible
use MaBase
go
exec sp_reptostandby MaBase, 'all'
go

Se connecter à ASECible et trouver l'heure de la dernière transaction commitée sur le serveur anciennement actif (ASESource). Toutes les transactions appliquées depuis seront définitivement perdues. Tentez de rejouer ces transactions perdues avant de redémarrer les applicatifs.

Cette information est stockée dans la table MaBase..rs_lastcommit du serveur ASESource. (origin_time, dest_commit_time columns)

 
Sélectionnez
isql -Usa -P -SASESource
use MaBase
go
select origin_time,dest_commit_time from rs_lastcommit
go

Se connecter au serveur ASECible, faire une sauvegarde des bases de données

Redémarrer les applicatifs en les connectant à ASECible

Lorsque vous aurez atteint ce point, votre système aura basculé correctement.

VII-A-2. Resynchronisation de ASECible à ASESource

Après avoir effectué une bascule d'urgence, la nouvelle base de données WSB (ASESource) est dans un état "peu clair".

  • Les transactions qui ont été rejouées manuellement sur ASECible sont stockées dans la Stable Queue et attendent d'être appliquées sur le nouveau StandBy Db(ASESource).
  • Les transactions qui n'ont pas pu être rejouées sur ASECible sont quant à elles toujours présentes dans la base de données StandBy d'ASESource. Ces transactions peuvent alors causer des erreurs relatives à des duplications de clés lorsque la connexion au StandBy (ASESource) sera réactivée. Pour éviter ces problèmes, il est recommandé de resynchroniser totalement la base StandBy d'ASESource.

Se connecter au replication serveur. Détruire la connexion standBy d'ASESource : cela aura pour effet de vider la Stable Queue.

 
Sélectionnez
isql -Usa -P -SASECible_rs
drop connection to ASESource.MaBase

Se connecter au serveur secondaire (ASECible) et sauvegarder la base nouvellement active

 
Sélectionnez
isql -Usa -P -SASECible
dump database MaBase to ?

Se connecter à ASESource et spécifier les options de base 'no chkpt on recovery' et 'read only' sur la base StandBy.

 
Sélectionnez

isql -Usa -P -SASECible
use master
go
exec sp_dboption MaBase, 'no chkpt', true
exec sp_dboption MaBase, 'dbo use only', true
go
use MaBase
go
checkpoint
go

Recharger la base d'ASESource avec le dump d'ASECible

 
Sélectionnez
isql -Usa -P -SASESource
 load database MaBase from ...

Se connecter au Replication Server et recréer la connexion StandBy pour la base MaBase d'ASESource

 
Sélectionnez
isql -Usa -P -SASECible_rs
create connection to ASESource.MaBase
set error class rs_sqlserver_error_class
set function string class rs_sqlserver_function_class
set username sars
set password sars99
with log transfer on
as standby for ASESource.MaBase
use dump marker
go

Se connecter à ASECible et sauvegarder le journal de transactions

 
Sélectionnez
isql -Usa -P -SASECible
dump tran MaBase to ....
go

Se connecter à ASESource et charger le journal de transaction sauvegardé sous ASECible sur ASESource

 
Sélectionnez
isql -Usa -P -SASESource 
load tran MaBase from ...

Mettre la base de données MaBase de ASESource en ligne

 
Sélectionnez
Online database MaBase

Ôter les options de base 'no chkpt on recovery' et 'read only' de la base MaBase de ASESource

 
Sélectionnez

exec sp_dboption MaBase, 'no chkpt', false
exec sp_dboption MaBase, 'dbo use only', false
go
use MaBase
go
checkpoint
go

Marquer la base MaBase de ASESource comme "réplicable"

 
Sélectionnez
isql -Usa -P -SASESource
sp_reptostandby MaBase, 'all'
go

Se connecter au Replication Server et réactiver la connexion de la base StandBy d'ASESource

 
Sélectionnez

resume connection to ASESource.MaBase

S'assurer que tout fonctionne parfaitement

 
Sélectionnez
admin who_is_down