Alterando o Cluster de dados do Postgres para um Novo Disco

Posted by Emerson on 21:01 with 2 comments
Olá caros colegas.

Desta vez vamos descrever uma situação que ainda não tinha feito anteriormente em ambiente de produção com Banco de Dados PostgreSQL, que é alterar o cluster de dados do Postgres para um novo disco.

Algumas informações que devemos saber sobre o cluster chamado PGDATA é diretório que contém vários subdiretórios  e arquivos de controle, além dos arquivos de configuração como postgresql.conf, pg_hba.conf e pg_ident.conf, embora podemos mante-los em outro local a partir da versão 8.0.

Após incluir o disco e monta-lo no nosso sistema de arquivos vamos ao que interessa.

Ambiente:
Máquina Virtual
SO: Slackware 13.1
BD: PostgreSQL 8.4.1



Passo 1 - Visualizando espaço em disco
root@serverpostgres:~# df -h
Sist. Arq.            Size  Used Avail Use% Montado em
/dev/root             7,7G  5,5G  1,9G  75% /
tmpfs                 247M     0  247M   0% /dev/shm
/dev/sdb            19,9G  151M  19,2G   2% /postgresql


Observe que o disco da partição do sistema encontra-se com espaço em disco e tamanho crítico de 75%, por essa razão precisamos colocar o cluster do banco em outro disco.

Passo 2 - Encontrar o diretório do cluster do banco
root@serverpostgres:~# ps -ef|grep -i postgres
postgres  1685     1 47 03:27 pts/0    00:00:00 /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data
postgres  1687  1685  0 03:27 ?        00:00:00 postgres: writer process
postgres  1688  1685  0 03:27 ?        00:00:00 postgres: wal writer process
postgres  1689  1685  1 03:27 ?        00:00:00 postgres: autovacuum launcher process
postgres  1690  1685  0 03:27 ?        00:00:00 postgres: archiver process   archiving 000000010000000000000007
postgres  1691  1685  0 03:27 ?        00:00:00 postgres: stats collector process
postgres  1692  1690 10 03:27 ?        00:00:00 cp pg_xlog/000000010000000000000007 /home/postgres/replication/000000010000000000000007
root      1694  1658  0 03:27 pts/0    00:00:00 grep -i postgres

Observe que o diretório que do cluster estar em /usr/local/pgsql/data.


Passo 3 - Tirar o banco de dados do ar.
root@serverpostgres:~# /etc/rc.d/rc.postgresql stop
Stopping PostgreSQL: ok
root@serverpostgres:~#

Passo 4 - Dar permissão no disco.
root@serverpostgres:/usr/local/pgsql# chown postgres:postgres /postgresql

Passo 5 - Mover o cluster
root@serverpostgres:/usr/local/pgsql# mv data /postgresql/
root@serverpostgres:/usr/local/pgsql#

Passo 6 -  Alterar o script de inicialização do postgres
root@serverpostgres:/usr/local/pgsql# vim /etc/rc.d/rc.postgresql

Script:
root@serverpostgres:/usr/local/pgsql# vim /etc/rc.d/rc.postgresql
# $PostgreSQL: pgsql/contrib/start-scripts/linux,v 1.11 2010/02/23 22:15:35 momjian Exp $
## EDIT FROM HERE
# Installation prefix
prefix=/usr/local/pgsql
# Data directory
PGDATA="/postgresql/data"
# Who to run the postmaster as, usually "postgres".  (NOT "root")
PGUSER=postgres
# Where to keep a log file
-- VISUAL --                                                                    9         39,0-1        13%

Passo 7 - Reinicializar o Postgresql
root@serverpostgres:/usr/local/pgsql# ps -ef|grep -i postgres
postgres  1752     1  4 03:45 pts/0    00:00:00 /usr/local/pgsql/bin/postmaster -D /postgresql/data
postgres  1754  1752  0 03:45 ?        00:00:00 postgres: writer process
postgres  1755  1752  0 03:45 ?        00:00:00 postgres: wal writer process
postgres  1756  1752  0 03:45 ?        00:00:00 postgres: autovacuum launcher process
postgres  1757  1752  0 03:45 ?        00:00:00 postgres: archiver process
postgres  1758  1752  0 03:45 ?        00:00:00 postgres: stats collector process
root      1761  1658  0 03:45 pts/0    00:00:00 grep -i postgres
root@serverpostgres:/usr/local/pgsql#

Processo concluído!Veja que o cluster já encontra-se no novo disco montado na partição /postgresql.
O processo pode ser demorado, vai depender também do tamanho do banco, em ambientes de produção com bases maiores o processo pode demorar um pouco para que a base seja transferida com sucesso.


Espero que tenham gostado!
Abraços!

Emerson Martins













Categories: