1 |
|
2 |
NĆ©lio Alves Pereira Filho |
3 |
nelio@ime.usp.br |
4 |
|
5 |
+-------------------------------------------------------------------------+ |
6 |
| AlteraƧƵes na distribuiĆ§Ć£o padrĆ£o do RServ (PostgreSQL-Contrib) | |
7 |
+-------------------------------------------------------------------------+ |
8 |
|
9 |
Data: Mon Apr 29 15:32:03 BRT 2002 |
10 |
|
11 |
|
12 |
No novo pacote, os seguintes arquivos estĆ£o inclusos: |
13 |
|
14 |
eRserver/bin/ApplySnapshot |
15 |
eRserver/bin/CleanLog |
16 |
eRserver/bin/GetSyncID |
17 |
eRserver/bin/InitRservTest |
18 |
eRserver/bin/MasterAddTable |
19 |
eRserver/bin/MasterDelTable |
20 |
eRserver/bin/MasterInit |
21 |
eRserver/bin/MasterRemove |
22 |
eRserver/bin/MasterSync |
23 |
eRserver/bin/PrepareSnapshot |
24 |
eRserver/bin/Replicate |
25 |
eRserver/bin/RservTest |
26 |
eRserver/bin/SlaveAddTable |
27 |
eRserver/bin/SlaveDelTable |
28 |
eRserver/bin/SlaveInit |
29 |
eRserver/bin/SlaveRemove |
30 |
eRserver/share/RServ.pm |
31 |
eRserver/doc/README.rserv |
32 |
eRserver/doc/eRserver.ChangeLog |
33 |
eRserver/lib/rserv.so |
34 |
|
35 |
|
36 |
|
37 |
+ Novos arquivos: |
38 |
|
39 |
eRserver/bin/MasterDelTable: |
40 |
elimina-se uma tabela do sistema de replicaĆ§Ć£o (master). |
41 |
eRserver/bin/MasterRemove: |
42 |
elimina-se todo o sistema de replicaĆ§Ć£o, preservando as |
43 |
outras informaƧƵes da base de dados (master). |
44 |
eRserver/bin/SlaveDelTable: |
45 |
elimina-se uma tabela do sistema de replicaĆ§Ć£o (slave). |
46 |
eRserver/bin/SlaveRemove: |
47 |
elimina-se todo o sistema de replicaĆ§Ć£o, preservando as |
48 |
outras informaƧƵes da base de dados (slave). |
49 |
eRserver/doc/eRserver.ChangeLog: |
50 |
este arquivo. |
51 |
|
52 |
|
53 |
|
54 |
+ AlteraƧƵes em arquivos existentes: |
55 |
|
56 |
|
57 |
eRserver/bin/ApplySnapshot: |
58 |
- correĆ§Ć£o de uso de variĆ”vel |
59 |
eRserver/bin/MasterInit |
60 |
- opĆ§Ć£o de se passar o caminho para o shared object |
61 |
rserv.so (opcional). |
62 |
- alteraĆ§Ć£o nas queries feitas no BD para se criar as tabelas. |
63 |
Foram criadas FK entre as tabelas _rserv_.*, de modo a manter |
64 |
a integridade das informaƧƵes aĆ contidas. |
65 |
- criaĆ§Ć£o da view _rserv_human_log_ para auxiliar a manutenĆ§Ć£o e |
66 |
visualizaĆ§Ć£o do funcionamento do replicador. |
67 |
- criaĆ§Ć£o da view _rserv_daily_log_ para auxiliar a manutenĆ§Ć£o das |
68 |
transaƧƵes que ocorrem diariamente e seu processo de replicaĆ§Ć£o. |
69 |
eRserver/bin/PrepareSnapshot: |
70 |
- opĆ§Ć£o para se passar o hostname do slave (obrigatĆ³ria). |
71 |
- correĆ§Ć£o para receber um nome de arquivo como parĆ¢metro. |
72 |
eRserver/bin/Replicate: |
73 |
- alteraĆ§Ć£o para determinar o snapshot correto para o slave |
74 |
quando em um ambiente com mĆŗltiplos slaves. |
75 |
eRserver/bin/SlaveInit: |
76 |
- opƧƵes para possibilitar a conexĆ£o com a base servidora. |
77 |
- apĆ³s as configuraƧƵes do slave, adiciona uma entrada no servidor |
78 |
na tabela _rserv_servers_ com seus dados. |
79 |
eRserver/share/RServ.pm: |
80 |
- criaĆ§Ć£o da funĆ§Ć£o GetSlaveId, que retorna o identificador de |
81 |
um dado servidor slave. |
82 |
- alteraĆ§Ć£o de query na funĆ§Ć£o PrepareSnapshot, para evitar a |
83 |
duplicidade de informaƧƵes e replicaƧƵes. |
84 |
|
85 |
|
86 |
|
87 |
+-------------------------------------------------------------------------+ |
88 |
| Testes Realizados no modelo de ReplicaĆ§Ć£o e no rServ | |
89 |
+-------------------------------------------------------------------------+ |
90 |
|
91 |
+++ SimulaĆ§Ć£o de Falhas aleatĆ³rias durante a execuĆ§Ć£o da replicaĆ§Ć£o. |
92 |
De acordo com a lĆ³gica interna deste modelo de replicaĆ§Ć£o, foram |
93 |
simuladas possĆveis falhas durante sua execuĆ§Ć£o. As falhas eram |
94 |
semelhantes a um situaĆ§Ć£o de queda de conexĆ£o, que poderia ocorrer em |
95 |
vƔrias partes do processo. |
96 |
|
97 |
Resultado: o programa se mostrou muito estƔvel, pois estava preparado |
98 |
para lidar com tais situaƧƵes. Nenhuma informaĆ§Ć£o foi perdida |
99 |
e/ou corrompida. |
100 |
|
101 |
|
102 |
+++ SimulaĆ§Ć£o de um nĆŗmero muito grande de inserƧƵes concorrentes na base, com |
103 |
o mecanismo de replicaĆ§Ć£o ativado uma vez por minuto, para mais de uma base. |
104 |
Especificamente, foram 10 processos concorrentes, cada um realizando 500 |
105 |
inserƧƵes, sendo que todas deveriam ser replicadas para duas bases. |
106 |
|
107 |
Resultado: As inserƧƵes sĆ£o efetuadas corretamente. Devido ao fato da |
108 |
replicaĆ§Ć£o ocorrer simultaneamente para mais de uma base, |
109 |
ocorria uma interferĆŖncia de um processo no outro, que resultava |
110 |
em um erro de replicaĆ§Ć£o. |
111 |
|
112 |
ResoluĆ§Ć£o: Associar valores Ćŗnicos e independentes para cada processo de |
113 |
replicaĆ§Ć£o. |
114 |
|
115 |
|
116 |
+++ CƔlculo de limites do rserv, quando utilizado muitas vezes. |
117 |
De acordo com a lĆ³gica interna, certos contadores sĆ£o utilizados e estes |
118 |
poderiam comprometer a replicaĆ§Ć£o, desde que seus limites fossem estourados. |
119 |
|
120 |
Resultado: pelos limites dos contadores, um sistema em produĆ§Ć£o mĆ”xima |
121 |
rServ (uma replicaĆ§Ć£o por minuto) pode funcionar por mais de |
122 |
4000 anos. |
123 |
|
124 |
|
125 |
+++ Teste de replicaĆ§Ć£o de uma tabela do servidor que nĆ£o foi configurada no |
126 |
cliente. |
127 |
|
128 |
Resultado: houve a indicaĆ§Ć£o de erro por parte do rserv, pois este se |
129 |
baseava somente na configuraĆ§Ć£o do servidor. |
130 |
|
131 |
ResoluĆ§Ć£o: no momento de se preparar a lista de alteraƧƵes a serem |
132 |
replicadas, hĆ” uma consulta tanto na configuraĆ§Ć£o do servidor |
133 |
como na do cliente, a fim de trocar as informaƧƵes somente das |
134 |
tabelas desejadas. |
135 |
|
136 |
|
137 |
+++ ExecuĆ§Ć£o simultĆ¢nea do processo de replicaĆ§Ć£o para a mesma base. |
138 |
|
139 |
Resultado: erro aletĆ³rio. |
140 |
|
141 |
ResoluĆ§Ć£o: verificaĆ§Ć£o inicial se algum processo de replicaĆ§Ć£o jĆ” estĆ” |
142 |
sendo executado. |
143 |
|
144 |
|
145 |
|
146 |
+--------------------------------------------------------------------------+ |
147 |
| AlteraƧƵes no DataBase existente para contemplar exigĆŖncias do rServ | |
148 |
+--------------------------------------------------------------------------+ |
149 |
|
150 |
Como descrito na documentaĆ§Ć£o do rserv, Ć© necessĆ”rio existir um campo Ćŗnico |
151 |
por tabela. Tal campo Ć© usado para identificar a linha e questĆ£o e fazer as |
152 |
atualizaƧƵes necessƔrias. |
153 |
Para contemplar tal exigĆŖncia, foi criado um campo chamado 'id', com tipo |
154 |
serial em cada tabela, com a restriĆ§Ć£Ć£o de nĆ£o poder ser null. |