Duplicando banco de dados no PostgreSQL
Fala pessoal, tudo bem?
No outro tutorial sobre PostgreSQL (link aqui), nós aprendemos a realizar o backup e restore de um banco de dados com PostgreSQL. Neste tutorial, veremos como duplicar um banco de dados já existente.
Inicialmente, pecisamos trocar para o usuário postgres
. Isso pode ser feito através do comando:
1 | sudo su - postgres |
Uma vez como usuário postgres
, podemos listar todos os bancos existentes com o comando:
1 | psql -l |
A título de exemplo, vamos supor que temos um banco de dados chamado codigo_avulso
e queremos duplicá-lo, criando um novo banco de dados chamado codigo_avulso_copia
.
Antes de presseguir, é aconselhável encerrar qualquer aplicação ou serviço que esteja fazendo uso do banco de dados a ser duplicado. Feito isso, basta executar o comando a seguir:
1 | createdb --template=codigo_avulso --owner=postgres codigo_avulso_copia |
No comando acima, temos o parâmetro template, que indica o nome do banco de dados original. Sempre que criamos um novo banco de dados no PostgreSQL, um template é utilizado. Se esse parâmetro não for passado para o comando createdb
, um novo banco de dados vazio será criado utilizando um template pré-definido chamado template1
.
O parâmetro owner indica o usuário postgres
(não confundir com usuário linux do PostgreSQL) dono do banco de dados que será criado. Se nenhum owner for especificado, o novo banco de dados será atribuído ao owner postgres
.
O parâmetro owner é muito útil quando alguma aplicação utiliza um usuário diferente de postgres. Utilizando o parâmetro owner com o nome do usuário do banco utilizado pela aplicação, não teremos erros de permissão quando a aplicação for acessar o novo banco de dados.
Agora, se executarmos novamente o comando psql -l
, veremos o banco de dados original e o novo banco recém-criado.
É isso pessoal! Até o próximo post.