Não é possível aplicar a atualização de configuração da postgres após a configuração do Diretório de Dados Personalizados -- 16.04 campo com systemd campo com postgresql campo com aws camp askubuntu Relacionado O problema

Can't apply Postgres configuration update after setting up custom data directory


1
vote

problema

português

Eu estou provisionando um servidor de banco de dados que é executado em uma instância da AWS EC2 usando o Ubuntu 16.04 com base em uma imagem oficial da AMI da Canonical. Nesta instância eu instalei o Postgres 9.6 do ABCDEFGHIJKLMNABCDEFGHIJKLMBCDefGHIJKLMN0 Repositório e, em seguida, alterou o local do diretório de dados a partir do padrão, porque eu quero usar um volume de capacidade maior para o cluster de banco de dados que é separado da raiz volume. Depois de alterar o local de cluster de dados, não consigo recarregar / reiniciar com sucesso o serviço Postgres para que qualquer alteração subseqüente de configuração tome efeito. No mínimo, eu preciso configurar o ABCDEFGHIJKLMNABCDEFGHIJKLMN1 e ABCDEFGHIJKLMNABCDEFGHIJKLMN2 Arquivos No diretório ABCDEFGHIJKLMNABCDefGHIJKLMN3 para permitir que um servidor específico se conecte a este servidor de banco de dados.

Aqui estão as informações de antecedentes relevantes sobre a configuração do servidor.

versão:

  ubuntu@ip-10-144-96-189:~$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description:    Ubuntu 16.04.2 LTS Release:    16.04 Codename:   xenial    

Eu criei um postgres usuário do Linux e grupo. Montou a nova unidade para o cluster de banco de dados e fez postgres o proprietário do diretório de dados. Adicionado o xenial-pgdg repositório e instalou os seguintes pacotes:

  postgresql-9.6 postgresql-contrib-9.6 python-psycopg2 postgresql-9.6-postgis-2.3 libgeos-dev postgresql-common s3cmd    

Baseado em este artigo Eu coloquei o cluster de banco de dados padrão e criei um novo no novo diretório de dados (comandos executados como o usuário ABCDEFGHIJKLMNABCDEFGHIJKLMN9 :

  postgresql.conf0   

Eu editei o arquivo postgresql.conf1 para ouvir conexões de postgresql.conf2 e um endereço IP sobre o TCP na porta 5432:

  postgresql.conf3   

Então, depois de reiniciar o serviço PostgreSQL Não houve conexão TCP Abrir ouvindo no endereço IP configurado, apenas no padrão abcdefghijklmnabcdefgijklmn14 :

  postgresql.conf5   

A última linha na saída anterior também mostra o soquete Open UNIX para uma conexão de postgres local. Também preciso configurar a autenticação do cliente a partir do endereço postgresql.conf6 no arquivo postgresql.conf7 .

pergunta: Que etapas eu preciso tomar para poder aplicar nova configuração a partir do postgresql.conf8 e postgresql.conf9 arquivos para o serviço postgres?

Eu considerei personalizando os arquivos de serviço Systemd e encontrei o seguinte arquivo de serviço recomendado no site PostgreSQL :

pg_hba.conf0

  pg_hba.conf1   

Infelizmente, o pg_hba.conf2 pontos de entrada para um comando que não existe no meu servidor.

Pergunta: Qual é a configuração do sistema equivalente que se aplica ao Ubuntu 16.04 com o PostgreSQL 9.6?

Por fim, aqui está o status do serviço de postgres e do serviço de cluster:

  pg_hba.conf3   

Eu vejo os fracassos no status do processo postgres@9.6-main, mas não tenho ideia do que eles significam e como corrigir esta situação.

english

I am provisioning a database server that runs on an AWS EC2 instance using Ubuntu 16.04 based on an official AMI image from Canonical. On this instance I installed Postgres 9.6 from the xenial-pgdg repository, then changed the location of the data directory from the default one because I want to use a larger capacity volume for the database cluster that is separate from the root volume. After changing the data cluster location I can't seem to successfully reload/restart the postgres service in order for any subsequent configuration change to take effect. At a minimum I need to configure the postgresql.conf and pg_hba.conf files in the /etc/postgresql/9.6/main/ directory to allow one specific other server to connect to this database server.

Here's relevant background information about the server setup.

OS version:

ubuntu@ip-10-144-96-189:~$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description:    Ubuntu 16.04.2 LTS Release:    16.04 Codename:   xenial 

I created a postgres linux user and group. Mounted the new drive for the database cluster, and made postgres the owner of the data directory. Added the xenial-pgdg repository and installed the following packages:

postgresql-9.6 postgresql-contrib-9.6 python-psycopg2 postgresql-9.6-postgis-2.3 libgeos-dev postgresql-common s3cmd 

Based on this write-up I dropped the default database cluster and created a new one in the new data directory (commands executed as the postgres user):

pg_dropcluster --stop 9.6 main pg_createcluster -d /mnt/pg_data/pg --start 9.6 main 

I edited the /etc/postgresql/9.6/main/postgresql.conf file to listen for connections from localhost and an IP address over TCP on port 5432:

listen_addresses = 'localhost, 10.112.190.57'     # what IP address(es) to listen on; port = 5432                                       # (change requires restart) 

Then after restarting the postgresql service there was no open TCP connection listening at the configured IP address, only at the default localhost:

ubuntu@ip-10-144-96-189:~$ sudo systemctl restart postgresql ubuntu@ip-10-144-96-189:~$ netstat -nlp (Not all processes could be identified, non-owned process info  will not be shown, you would have to be root to see it all.) Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address           Foreign Address         State        PID/Program name tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -                tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN      -                tcp6       0      0 :::22                   :::*                    LISTEN      -                udp        0      0 0.0.0.0:68              0.0.0.0:*                           -                udp        0      0 10.144.96.189:123       0.0.0.0:*                           -                udp        0      0 127.0.0.1:123           0.0.0.0:*                           -                udp        0      0 0.0.0.0:123             0.0.0.0:*                           -                udp6       0      0 fe80::2000:bff:fed5:123 :::*                                -                udp6       0      0 ::1:123                 :::*                                -                udp6       0      0 :::123                  :::*                                -                Active UNIX domain sockets (only servers) Proto RefCnt Flags       Type       State         I-Node   PID/Program name    Path unix  2      [ ACC ]     STREAM     LISTENING     166227   23611/systemd       /run/user/1000/systemd/private unix  2      [ ACC ]     SEQPACKET  LISTENING     8758     -                   /run/udev/control unix  2      [ ACC ]     STREAM     LISTENING     8754     -                   /run/systemd/private unix  2      [ ACC ]     STREAM     LISTENING     8760     -                   /run/lvm/lvmpolld.socket unix  2      [ ACC ]     STREAM     LISTENING     8765     -                   /run/systemd/journal/stdout unix  2      [ ACC ]     STREAM     LISTENING     8891     -                   /run/lvm/lvmetad.socket unix  2      [ ACC ]     STREAM     LISTENING     13009    -                   /run/snapd-snap.socket unix  2      [ ACC ]     STREAM     LISTENING     13005    -                   /var/lib/lxd/unix.socket unix  2      [ ACC ]     STREAM     LISTENING     13008    -                   /run/snapd.socket unix  2      [ ACC ]     STREAM     LISTENING     13010    -                   /run/acpid.socket unix  2      [ ACC ]     STREAM     LISTENING     13011    -                   /var/run/dbus/system_bus_socket unix  2      [ ACC ]     STREAM     LISTENING     13012    -                   /run/uuidd/request unix  2      [ ACC ]     STREAM     LISTENING     13169    -                   @ISCSIADM_ABSTRACT_NAMESPACE unix  2      [ ACC ]     STREAM     LISTENING     148848   -                   /var/run/postgresql/.s.PGSQL.5432 

The last line in the previous output also shows the open Unix socket for a local Postgres connection. I also need to configure the client authentication from the 10.112.190.57 IP address in the pg_hba.conf file.

Question: What steps do I need to take to be able to apply new configuration from the postgres.conf and pg_hba.conf files to the postgres service?

I have considered customizing the systemd service files, and found the following recommended service file on the PostgreSQL website:

When using systemd, you can use the following service unit file (e.g., at /etc/systemd/system/postgresql.service):

[Unit] Description=PostgreSQL database server Documentation=man:postgres(1)  [Service] Type=notify User=postgres ExecStart=/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data ExecReload=/bin/kill -HUP $MAINPID KillMode=mixed KillSignal=SIGINT TimeoutSec=0  [Install] WantedBy=multi-user.target 

Unfortunately, the ExecStart=/usr/local/pgsql/bin/postgres -D ... entry points to a command that doesn't exist on my server.

Question: What is the equivalent systemd setup that applies to Ubuntu 16.04 with PostgreSQL 9.6?

Lastly, here is the postgres service and cluster service status:

ubuntu@ip-10-144-96-189:~$ systemctl status postgresql xe2x97x8f postgresql.service - PostgreSQL RDBMS    Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)    Active: active (exited) since Wed 2017-12-06 18:44:43 UTC; 1 day 2h ago   Process: 18307 ExecStart=/bin/true (code=exited, status=0/SUCCESS)  Main PID: 18307 (code=exited, status=0/SUCCESS)     Tasks: 0    Memory: 0B       CPU: 0    CGroup: /system.slice/postgresql.service  Dec 06 18:44:43 ip-10-144-96-189 systemd[1]: Starting PostgreSQL RDBMS... Dec 06 18:44:43 ip-10-144-96-189 systemd[1]: Started PostgreSQL RDBMS.  ubuntu@ip-10-144-96-189:~$ systemctl status postgresql@9.6-main xe2x97x8f postgresql@9.6-main.service - PostgreSQL Cluster 9.6-main    Loaded: loaded (/lib/systemd/system/postgresql@.service; enabled; vendor preset: enabled)    Active: active (running) since Wed 2017-12-06 18:44:43 UTC; 1 day 2h ago   Process: 18274 ExecStop=/usr/bin/pg_ctlcluster --skip-systemctl-redirect -m fast %i stop (code=exited, status=1/FAILURE)   Process: 18281 ExecStart=postgresql@%i --skip-systemctl-redirect %i start (code=exited, status=0/SUCCESS)  Main PID: 18290 (postgres)    CGroup: /system.slice/system-postgresql.slice/postgresql@9.6-main.service            xe2x94x9cxe2x94x8018290 /usr/lib/postgresql/9.6/bin/postgres -D /mnt/pg_data/pg -c config_file=/etc/postgresql/9.6/main/postgresql.conf            xe2x94x9cxe2x94x8018292 postgres: 9.6/main: checkpointer process                                                                                   xe2x94x9cxe2x94x8018293 postgres: 9.6/main: writer process                                                                                         xe2x94x9cxe2x94x8018294 postgres: 9.6/main: wal writer process                                                                                     xe2x94x9cxe2x94x8018295 postgres: 9.6/main: autovacuum launcher process                                                                            xe2x94x94xe2x94x8018296 postgres: 9.6/main: stats collector process                                                                       Dec 06 18:44:40 ip-10-144-96-189 systemd[1]: Stopped PostgreSQL Cluster 9.6-main. Dec 06 18:44:40 ip-10-144-96-189 systemd[1]: postgresql@9.6-main.service: Unit entered failed state. Dec 06 18:44:40 ip-10-144-96-189 systemd[1]: postgresql@9.6-main.service: Failed with result 'exit-code'. Dec 06 18:44:40 ip-10-144-96-189 systemd[1]: Starting PostgreSQL Cluster 9.6-main... Dec 06 18:44:43 ip-10-144-96-189 systemd[1]: Started PostgreSQL Cluster 9.6-main. 

I see the failures in the postgres@9.6-main process status, but I have no idea what they mean and how to fix this situation.

           

Lista de respostas

1
 
vote
vote
Melhor resposta
 

Após alguma pesquisa, encontrei uma solução para provisionar um servidor de banco de dados do Ubuntu 16.04 com o PostgreSQL 9.6 que usa um local de cluster personalizado e permite a aplicação de alterações de configuração subseqüentes.

No meu caso, uma instância AWS EC2 foi provisionada, mas o processo deve ser o mesmo para qualquer host Ubuntu 16.04. Eu também acabei usando Ansible (v2.3.1) para automatizar o processo de provisionamento, mas a mesma seqüência de operações, conforme realizado por ansible, deve levar ao mesmo resultado. Aqui estão os principais passos:

    .
  1. instalar python 2.7 no servidor Ubuntu (isso só é necessário por ansible).

  2. use o geerlingguy.postgresql função ansible, que fornece as etapas padrão para Instale o PostgreSQL 9.5 no sistema com o cluster de banco de dados inicializado no local padrão ( /var/lib/postgresql/9.5/main diretório). Esta função é totalmente parametrizada para fácil personalização. Eu modificei para instalar o PostgreSQL 9.6 com PostGis v2.3.

    • alterar __postgresql_version para "9.6" em vars / ubuntu-16.yml .
    • alterar __postgresql_packages lista para incluir v9.6 nomes de pacotes conforme necessário em vars / ubuntu-16.yml . Adicione pacotes de extensão necessários, como postgis, para a lista.
    • modificar _tasks / setup_debian.yml_ Para adicionar o xenial-pgdg repositório, incluindo sua chave de repositório antes de instalar a lista abcdefghijklmnabcdefgijklmn3 . Veja https://www.postgresql.org/download/linux/ubuntu para detalhes específicos .
    • Atualize o arquivo Padrões / Main.yml com sua informação de usuário de banco de dados, extensão e banco de dados. Você pode modificar o postgresql_global_config_options para personalizar o valor listen_addresses e modificar o postgresql_hba_entries com valores de conexão personalizados.
    • em tarefas / bancos de dados.yml Após a criação do seu banco de dados, adicione todas as extensões ao seu banco de dados.

Depois de executar uma lista de reprodução Ansible que contenha as duas etapas acima, o servidor PostGreSQL está em alta e em execução Permitindo o usuário ABCDEFGHIJKLMN7 O usuário conectar ao seu banco de dados. Você pode fazer alterações de configuração, como no arquivo /etc/postgresql/9.6/main/postgres.conf e use o comando systemctl para reiniciar o postgresql Serviço para aplicar as alterações.

O ABCDEFGHIJKLMNABCDEFGHIJKLMN10 A função ANSIBLE permite configurar o diretório de dados PostgreSQL, mas ainda não tentei isso. Em vez disso, alterei com sucesso o diretório de dados após o processo descrito acima, seguindo as etapas no https://www.tutorialspoint.com/articles/how-to-change-postgresql-data-folder-location-on-ubuntu-16-04 < / a> artigo.

Espero que isso seja útil para alguém chegar à velocidade no postgresql no Ubuntu 16.04.

 

After some research I have found a solution to provisioning an Ubuntu 16.04 database server with PostgreSQL 9.6 that uses a custom cluster location and that allows applying subsequent configuration changes.

In my case an AWS EC2 instance was provisioned, but the process should be the same for any Ubuntu 16.04 host. I also ended up using Ansible (v2.3.1) to automate the provisioning process, but same sequence of operations as performed by Ansible should lead to the same result. Here are the major steps:

  1. Install Python 2.7 on the Ubuntu server (this is only needed by Ansible).

  2. Use the geerlingguy.postgresql Ansible role, which provides the default steps to install PostgreSQL 9.5 on the system with the database cluster initialized in the default location (/var/lib/postgresql/9.5/main directory). This role is fully parametrized for easy customization. I modified it to install PostgreSQL 9.6 with postgis v2.3.

    • Change __postgresql_version to "9.6" in vars/Ubuntu-16.yml.
    • Change __postgresql_packages list to include v9.6 package names as needed in vars/Ubuntu-16.yml. Add necessary extension packages, such as postgis, to the list.
    • Modify _tasks/setup_Debian.yml_ to add the xenial-pgdg repository, including its repository key, before installing the postgres_packages list. See https://www.postgresql.org/download/linux/ubuntu for specifics.
    • Update the defaults/main.yml file with your database, extension and database user information. You can modify the postgresql_global_config_options to customize the listen_addresses value, and modify the postgresql_hba_entries with custom connection values.
    • In tasks/databases.yml after creating your database add any extensions to your database.

Once you execute an Ansible playlist that contains the above two steps, the PostgreSQL server is up and running allowing the local postgres user to connect to your database. You can make configuration changes such as in the /etc/postgresql/9.6/main/postgres.conf file and use the systemctl command to restart the postgresql service to apply the changes.

The geerlingguy.postgresql Ansible role does allow configuring the PostgreSQL data directory, but I haven't tried that yet. Instead, I have successfully changed the data directory after the above described process by following the steps in the https://www.tutorialspoint.com/articles/how-to-change-postgresql-data-folder-location-on-ubuntu-16-04 article.

I hope this is helpful for someone coming up to speed on PostgreSQL on Ubuntu 16.04.

 
 

Perguntas relacionadas

0  Pergunta sobre o GKSudo / GKSU [duplicado]  ( Question regarding gksudo gksu ) 
. Esta pergunta já tem respostas aqui : (4 respostas) ...

2  O que é o valor do SKEEW na replicação do banco de dados do MOGO DB?  ( What is skew value in mongo db database replication ) 
Acabei de iniciar os três servidores de réplica de Três MongoDB. Eu não entendo o que é esse valor de parafuso O que deve ser em que servidor? Quais valo...

2  Elasticfox no firefox 4  ( Elasticfox on firefox 4 ) 
Como você deve instalar o elasticfox add-on no Firefox (4.0.1) no último Ubuntu (11.04)? (ElasticFox é uma extensão para a gestão da Amazon EC2.) indo par...

1  Anexar disco ao AWS VM faz com que o host inicialize no modo de emergência  ( Attaching disk to aws vm causes host to boot into emergency mode ) 
Eu já tive essa experiência em nuvem azul e amp; A Amazon AWS Minha questão atual é em um host executando o Ubuntu 15.10, mas eu tinha experiências semelhante...

0  PAM: falha de autenticação  ( Pam authentication failure ) 
perdão para pergunta idiota, apenas começando com o Linux, e acho que essas múltiplas perguntas se enrolaram em um. Eu configurei uma máquina AWS Ubuntu. Eu e...

7  Instância AWS Ubuntu - Direitos do Usuário  ( Aws ubuntu instance user rights ) 
Eu estou executando uma instância do Ubuntu no Amazon Web Services, todos trabalhando bem Dândy. Eu tenho um pequeno obstáculo que estou tentando encontrar a ...

2  Como fazer login no Skype via linha de comando  ( How to log in to skype via command line ) 
Estou ciente de como instalar o Skype via linha de comando - adicionando o repo do parceiro canônico e usando o apt-get. No entanto, como posso fazer login ...

0  Como transferir o nome de domínio da Rota AWS 53 para o servidor Home Bind  ( How to transfer aws route 53 domain name to home bind server ) 
Eu tenho jogado com a ideia de hospedar meus próprios sites. Eu lancei uma infinidade de servidores do Ubuntu com diferentes configurações. Meu último foi com...

252  Como executar o comando sudo sem senha?  ( How to run sudo command with no password ) 
Como é o usuário ubuntu usuário nas imagens da AWS para o Ubuntu Server 12.04 tem swessless sudo para todos os comandos quando não há configuração para e...

4  Ubuntu Jeos como imagem mínima para servidor com jre  ( Ubuntu jeos like minimal image for server with jre ) 
Eu preciso criar um dispositivo minimalista para executar no Amazon EC2 (AMI). Eu tentei debotstrap. Sua vinda até 200+ MB, o mesmo com a VMBuilder também. Há...




© 2022 pergunte.org All Rights Reserved. Casa de perguntas e respostas todos os direitos reservados


Licensed under cc by-sa 3.0 with attribution required.