Oi, estou executando em uma máquina centos 7, estou no processo de migrar um banco de dados postgres antigo para o novo servidor, ele tem 10 TB de dados, então estou tentando com pg_basebackup. O novo servidor tem um disco independente com armazenamento suficiente para lidar com a operação, mas não é o disco primário. Eu gostaria de definir o PGDATA neste disco de big data.
Eu segui estes passos:
Instale postgres-12 e postgres12-contrib
Monte o disco de dados na nova máquina
Crie um diretório pgdata vazio no disco de dados. Todos com o usuário postgres.
Usar
/usr/bin/pg_basebackup -h IP_OF_OLD_MACHINE -D /mnt/disks/data-disk/pgdata -P -U USERNAME --wal-method=stream
Acho que pg_basebackup
terminou com sucesso, os dados levaram várias horas, mas terminaram sem solicitar nenhum erro.
total 132K
-rw-------. 1 postgres postgres 230 Mar 18 12:36 backup_label
drwx------. 7 postgres postgres 4.0K Mar 18 12:43 base
-rw-------. 1 postgres postgres 30 Mar 19 00:13 current_logfiles
drwx------. 2 postgres postgres 4.0K Mar 19 00:13 global
drwx------. 2 postgres postgres 4.0K Mar 18 12:36 log
drwx------. 2 postgres postgres 4.0K Mar 18 12:36 pg_commit_ts
drwx------. 2 postgres postgres 4.0K Mar 18 12:36 pg_dynshmem
-rw-------. 1 postgres postgres 4.8K Mar 18 12:36 pg_hba.conf
-rw-------. 1 postgres postgres 4.7K Mar 18 12:36 pg_hba.conf~
-rw-------. 1 postgres postgres 1.6K Mar 19 00:13 pg_ident.conf
drwx------. 4 postgres postgres 4.0K Mar 18 12:36 pg_logical
drwx------. 4 postgres postgres 4.0K Mar 18 12:36 pg_multixact
drwx------. 2 postgres postgres 4.0K Mar 18 12:36 pg_notify
drwx------. 2 postgres postgres 4.0K Mar 18 12:36 pg_replslot
drwx------. 2 postgres postgres 4.0K Mar 18 12:36 pg_serial
drwx------. 2 postgres postgres 4.0K Mar 18 12:36 pg_snapshots
drwx------. 2 postgres postgres 4.0K Mar 18 12:36 pg_stat
drwx------. 2 postgres postgres 4.0K Mar 18 12:36 pg_stat_tmp
drwx------. 2 postgres postgres 4.0K Mar 18 12:36 pg_subtrans
drwx------. 2 postgres postgres 4.0K Mar 18 12:36 pg_tblspc
drwx------. 2 postgres postgres 4.0K Mar 18 12:36 pg_twophase
-rw-------. 1 postgres postgres 3 Mar 19 08:27 PG_VERSION
drwx------. 3 postgres postgres 4.0K Mar 18 12:36 pg_wal
drwx------. 2 postgres postgres 4.0K Mar 18 12:36 pg_xact
-rw-------. 1 postgres postgres 88 Mar 18 12:36 postgresql.auto.conf
-rw-------. 1 postgres postgres 24K Mar 19 08:39 postgresql.conf
Ok, agora estou tentando inicializar um servidor postgres com esses dados, o que acabei de trazer.
Estas são minhas tentativas, olhando a documentação:
/usr/pgsql-12/bin/postgresql-12-setup initdb -D /mnt/disks/data-disk/pgdata
systemctl: invalid option -- 'D'
failed to find PGDATA setting in -D.service
/usr/pgsql-12/bin/postgresql-12-setup initdb --pgdata=/mnt/disks/data-disk/pgdata
systemctl: unrecognized option '--pgdata=/mnt/disks/data-disk/pgdata.service'
failed to find PGDATA setting in --pgdata=/mnt/disks/data-disk/pgdata.service
Existe algum erro no processo?
Atualização: como @pifor me disse, adicionei o PATH ao postgres bash_profile e comecei a reconhecer PG_DATA. O problema agora é que o initdb visa encontrar uma pasta vazia e não está vazia devido ao pg_basebackup
Um backup físico (como pg_basebackup) resulta em um diretório já inicializado. Você não executa o initdb. Você acabou de iniciá-lo, possivelmente depois de alterar os arquivos de configuração da maneira que for apropriada para sua situação.
Você provavelmente deve ter configurado isso para streaming com um slot nomeado, ou ficará para trás enquanto o backup estava sendo feito, mas essa seria uma pergunta diferente.
Por que não apenas mover a matriz de unidades de um servidor para outro? É o desejo de mudar o hardware de armazenamento, bem como o hardware do servidor?