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')
gopuis 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 -b1II-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"
goV. 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
goV-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
goVI. 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
goSe connecter au RS
isql -Usa -P -SASECible_rsBasculer 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.MaBaseMonitorer le status
admin logical_statusStopper 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]
goDé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]
goMarquer les tables de ASECible comme réplicables
isql -Usa -P -SASECible
use MaBase
go
exec sp_reptostandby MaBase, 'all'
goSe 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
goSe 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.MaBaseSe 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
goRecharger 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
goSe connecter à ASECible et sauvegarder le journal de transactions
isql -Usa -P -SASECible
dump tran MaBase to ....
goSe 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
goMarquer la base MaBase de ASESource comme "réplicable"
isql -Usa -P -SASESource
sp_reptostandby MaBase, 'all'
goSe connecter au Replication Server et réactiver la connexion de la base StandBy d'ASESource
resume connection to ASESource.MaBaseS'assurer que tout fonctionne parfaitement
admin who_is_down














