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 :
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 :
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) :
- Stopper le Replication Server ;
- Se connecter à ASECible en tant que sa ;
- Changer son mot de passe (sp_password) ;
- Modifier les mots de passe des fichiers de configuration de la réplication pour les logins SA ;
- 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.
1. Replication Server Information
1. Replication Server Name
Attention de bien coller à la configuration du serveur si c'est possible (sp_helpsort)
Rien de spécial à spécifier au sujet du ID Server (ASECible)
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.
IV. Paramétrage de la base référentielle▲
Se connecter ensuite au serveur ASECible et paramétrer la réplication
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.
%
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
- 1. Replication Server information : spécifiez ASECible_rs
- 2. Database information
V-B-1. Pour la base primaire▲
- SQL Server name : ASESource
- SA user : sa
- SA password :
- Database name : MaBase
- Will the database be replicated : yes
- Maintenance user : MaBase_maint
- Maintenance password : MaBase_maint_ps
- Is this a physical Connection for Existing Logical Connection : yes
- Logical DB Setup
- Is is an Active Connection or a Standby Connection : Active
- Logical DS name : LDS
- 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▲
- SQL Server name : ASECible
- SA user : sa
- SA password :
- Database name : MaBase
- Will the database be replicated : yes
- Maintenance user : MaBase_maint
- Maintenance password : MaBase_maint_ps
- Is this a physical Connection for Existing Logical Connection : yes
- Logical DB Setup
- Is is an Active Connection or a Standby Connection : Standby
- Logical DS name : LDS
- Logical DB Name : MaBase_LDB
- Physical DS name : ASESource
- Physical DB name : MaBase
- Active DB SA user : sa
- Active DB SA password :
- Initialize standby using dump and load : yes
- 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.
sp_reptostandby MaBase, ['all', 'none']
- Sauvegarder la base primaire sous ASESource : dump database MaBase to '/dev/tape/wsb'
- Recharger la base sur ASECible : load databse MaBase from '/dev/tape'
- Exécuter sp_reptostandby MaBase, 'all' dans ASECible et ASESource, depuis la base MaBase
- Résumer les connexions du replication server
%
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
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'.
isql -
Usa -
P -
SASESource
use
master
go
sp_dboption
MaBase, "dbo use only"
, true
go
Se connecter au RS
isql -
Usa -
P -
SASECible_rs
Basculer sur la base StandBy et attendre que le basculement se soit bien passé
switch active for
ASESource.MaBase to
ASECible.MaBase
wait for
switch for
ASESource.MaBase
Monitorer le status
admin logical_status
Stopper l'agent de replication de la base de données MaBase sous ASESource
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)
isql -
Usa -
P -
SASECible
use
MaBase
go
exec
sp_start_rep_agent rft [, for_recovery]
go
Marquer les tables de ASECible comme réplicables
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)
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.
isql -
Usa -
P -
SASECible_rs
drop
connection to
ASESource.MaBase
Se connecter au serveur secondaire (ASECible) et sauvegarder la base nouvellement active
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.
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
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
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
isql -
Usa -
P -
SASECible
dump
tran
MaBase to
....
go
Se connecter à ASESource et charger le journal de transaction sauvegardé sous ASECible sur ASESource
isql -
Usa -
P -
SASESource
load
tran
MaBase from
...
Mettre la base de données MaBase de ASESource en ligne
Online database
MaBase
Ôter les options de base 'no chkpt on recovery' et 'read only' de la base MaBase de ASESource
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"
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
resume connection to
ASESource.MaBase
S'assurer que tout fonctionne parfaitement
admin who_is_down