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.
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:~#
Espero que tenham gostado!
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/datapostgres 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: Postgres
E ai Emerson !
ResponderExcluirAcho que nossos Santos estão sincronizado, era justamente isso que eu precisava,
Vai ser criado as partições /postgresql e /postgresql_bkp
E me pediram pra usar o /postgresql para por o cluster.
Sakamoto
MyTraceLog - Registro de um DBA
http://mytracelog.blogspot.com
Opa Sakamoto..Que bom que te ajudou.
ResponderExcluirSempre digo,que compartilhar conhecimento é uma forma de crescer..
Abraços.