PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Atualizando o Slony-I 2.0.x para a versão mais recente 2.1.x

O Slony-1 2.1 tem correções muito boas e novos recursos, como adição de tabelas em massa, melhoria em WAIT FOR com Merge Set/Move Set, suporte para TRUNCATE em tabelas replicantes e muito mais. Estou usando o Slony-I 2.0.7, então pensei em atualizá-lo para a versão mais recente. A atualização do Slony-I é muito simples e pode ser alcançada em poucos passos. Meu procedimento de atualização assume que já existe uma configuração Master/Slave com o Slony 2.0.7.

Plano de backup:
1. Faça backup do esquema slony existente (_slonyschema) do mestre/escravo
2. Faça backup dos antigos binários Slony
3. Backup all cria inicialmente arquivos de configuração desleixados.

Procedimento de atualização:
1. Pare todos os processos slon em execução em todos os nós.
2. Instale a nova versão dos binários do Slony 2.1.x.
3. Execute o script de atualização do SLONIK
4. Comece slony com novos binários em todos os nós.

Link:http://slony.info/documentation/2.1/slonyupgrade.html
Current PostgreSQL & Slony version:

repdb=# select substr(version(),1,26) as "PostgreSQL-Version",_myrep.slonyversion();
PostgreSQL-Version | slonyversion
----------------------------+--------------
PostgreSQL 9.1.3 on x86_64 | 2.0.7
(1 row)

Instalar/Configurar a versão mais recente da fonte Slony-I 2.1.x
 wget http://main.slony.info/downloads/2.0/source/slony1-2.1.0.tar.bz2
./configure --prefix=/opt/PostgreSQL/9.1/bin --with-pgconfigdir=/opt/PostgreSQL/9.1/bin
make
make install

After installation, you can find three executables slon, slonik & slon_logshipper under "/opt/PostgreSQL/9.1/bin/bin".

-bash-4.1$ ./slon -v
slon version 2.1.0

Script de atualização:
## Upgrade script

cluster name = myrep;
node 1 admin conninfo='host=localhost dbname=postgres user=postgres port=5432';
node 2 admin conninfo='host=localhost dbname=repdb user=postgres port=5433';
UPDATE FUNCTIONS ( ID = 1 );
UPDATE FUNCTIONS ( ID = 2 );

Note: Update all the nodes with UPDATE FUNCTIONS. I have two nodes Master(5432) and Slave(5433).

Execute o script:
-bash-4.1$ slonik upgrade_207_201.slonik

Inicie o processo slony com novos binários e verifique as alterações.
postgres=# select substr(version(),1,26) as "PostgreSQL-Version",_myrep.slonyversion();
PostgreSQL-Version | slonyversion
----------------------------+--------------
PostgreSQL 9.1.3 on x86_64 | 2.1.0
(1 row)

Você pode ver que minha versão slony foi atualizada para a mais recente. Você também pode executar a verificação de integridade no esquema com uma função fornecida pelo Slony-I em sua documentação. A função Health Check deve retornar TRUE, senão em algum lugar seus catálogos PG &Slony estão danificados.
Link da função:http://slony.info/documentation/2.1/function.slon-node-health-check.html
postgres=# select node_health_check();
node_health_check
-------------------
t
(1 row)