forked from gleu/pgdocs_fr
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathconcepts.xml
More file actions
201 lines (157 loc) · 6.2 KB
/
concepts.xml
File metadata and controls
201 lines (157 loc) · 6.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
<?xml version="1.0" encoding="UTF-8"?>
<!-- Dernière modification
le $Date$
par $Author$
révision $Revision$ -->
<sect1 id="concepts">
<title>Les concepts</title>
<indexterm><primary>concepts et terminologie</primary></indexterm>
<para>
Afin de mettre en place une réplication &slony1;, il est nécessaire de
comprendre la terminologie utilisée :
</para>
<itemizedlist>
<listitem><para>Cluster ;</para></listitem>
<listitem><para>Noeud (« node ») ;</para></listitem>
<listitem><para>Ensemble de réplication (« replication
set ») ;</para></listitem>
<listitem><para>Origine (« Origin »), Fournisseurs
(« Providers ») et Abonnés
(« Subscribers ») ;</para></listitem>
<listitem><para>Les démons slon ;</para></listitem>
<listitem><para>La commande slonik.</para></listitem>
</itemizedlist>
<para>
Il est également nécessaire de connaître quelques mots de russe :
</para>
<itemizedlist>
<listitem><para>slon signifie <quote>éléphant</quote> en russe ;</para></listitem>
<listitem><para>slony est le pluriel de slon, et désigne ainsi un groupe
d'éléphants ;</para></listitem>
<listitem><para>slonik désigne un <quote>petit éléphant</quote>.</para></listitem>
</itemizedlist>
<para>
L'utilisation de ces termes dans &slony1; est un <quote>coup de chapeau</quote>
à Vadim Mikheev qui est l'auteur du prototype <application>rserv</application>
qui inspira une partie des algorithmes utilisé dans &slony1;.
</para>
<sect2>
<title>Cluster</title>
<indexterm><primary>cluster</primary></indexterm>
<para>
Selon &slony1;, un <quote>cluster</quote> est ensemble nommé d'instances de
bases de données &postgres;. Une réplication a lieu entre ces bases.
</para>
<para>
Le nom du cluster est spécifié dans chaque script Slonik via la directive :
</para>
<programlisting>
cluster name = quelque_chose;
</programlisting>
<para>
Si le nom du cluster est <envar>plop</envar>, alors &slony1; crée, dans
chaque instance du cluster, le schéma <envar>_plop</envar>.
</para>
</sect2>
<sect2><title>Noeud</title>
<indexterm><primary>nœud</primary></indexterm>
<para>
Un nœud &slony1; est une base &postgres; nommée qui participe à la
réplication.
</para>
<para>
Le nom du nœud est défini au début de chaque script Slonik, avec la
directive :
</para>
<programlisting>
NODE 1 ADMIN CONNINFO = 'dbname=testdb host=server1 user=slony';
</programlisting>
<para>
La ligne <xref linkend="admconninfo"/> précise les informations de connexion
qui seront utilisées par la fonction libpq <function>PQconnectdb()</function>.
</para>
<para>
Ainsi un cluster &slony1; se compose :
</para>
<itemizedlist>
<listitem><para>d'un nom de cluster ;</para></listitem>
<listitem><para> d'un ensemble de nœuds &slony1;, qui disposent chacun
d'un schéma portant le nom du cluster.</para></listitem>
</itemizedlist>
</sect2>
<sect2><title>Ensemble de réplication</title>
<indexterm><primary>Ensemble de réplication</primary></indexterm>
<para>
Un ensemble de réplication est défini comme un ensemble de tables et de
séquences qui doivent être répliquées entre plusieurs nœuds dans un
cluster &slony1;.
</para>
<para>
Vous pouvez avoir plusieurs sets, et le <quote>flux</quote> de réplication
n'est pas nécessairement identique pour tous les ensembles.
</para>
</sect2>
<sect2><title>Origine, Fournisseurs et Abonnés</title>
<indexterm><primary>Nœud d'origine</primary></indexterm>
<indexterm><primary>Nœud fournisseur</primary></indexterm>
<para>
Chaque ensemble de réplication a un nœud d'origine, qui est le
<emphasis>seul</emphasis> endroit où les applications sont autorisées à
modifier les données répliquées. On peut aussi rencontrer le terme
<quote>nœud maître</quote>. Il s'agit du nœud principal qui
fournit les données.
</para>
<indexterm><primary>Nœud Abonné</primary></indexterm>
<para>
Les autres nœuds du cluster s'abonnent à l'ensemble de réplication, ce
qui indique qu'ils veulent recevoir les données.
</para>
<para>
Le nœud d'origine ne sera jamais considéré comme un
<quote>abonné</quote> (on ignore ici le cas ou le cluster est restructuré
et où l'origine est explicitement déplacée sur un autre nœud).
Mais &slony1; supporte la notion d'abonnements en cascade, c'est-à-dire
qu'un nœud qui est abonné à un ensemble de réplication, peut également
se comporter comme un <quote>fournisseur</quote> du même ensemble de
réplication pour d'autres nœuds du cluster.
</para>
</sect2>
<sect2><title>Le démon slon</title>
<indexterm><primary>démon slon</primary></indexterm>
<para>
Pour chaque nœud du cluster, il y a un processus <xref
linkend="slon"/> qui gère l'activité de réplication pour le nœud.
</para>
<para>
<xref linkend="slon"/> est un programme implémenté en C qui traite les
évènements de réplication. Il y a deux principaux types d'événements :
</para>
<itemizedlist>
<listitem>
<para>Les évènements de configuration</para>
<para>
Ils se produisent en général lorsqu'un script <xref linkend="slonik"/>
est exécuté et qu'il modifie la configuration du cluster.
</para>
</listitem>
<listitem>
<para>Les événements <command>SYNC</command></para>
<para>
Les mises à jour des tables répliquées sont regroupées dans des
événements <command>SYNC</command> ; ces groupes de transactions
sont appliquées ensemble sur les nœuds abonnés.
</para>
</listitem>
</itemizedlist>
</sect2>
<sect2><title>La commande slonik</title>
<indexterm><primary>La commande slonik</primary></indexterm>
<para>
La commande <xref linkend="slonik"/> traite des scripts écrits dans un
<quote>langage spécial</quote> qui est utilisé pour soumettre des événements
de configuration du cluster &slony1;. Cela comprend des actions telles que
l'ajout et la suppression de nœuds, la modification des voies de
communications, l'ajout ou la suppression d'abonnements.
</para>
</sect2>
</sect1>