Maintenance des données
[postgres@srv-pg1 ~]$ pglift database -i main run "ANALYZE"
[postgres@srv-pg1 ~]$ pglift database -i main run -d postgres "VACUUM FULL"
[postgres@srv-pg1 ~]$ pglift database -i main run -x postgres "VACUUM"
Atelier Industrialisation PostgreSQL
Dalibo & Contributors
dalibo.pglift
dalibo.essential
: PostgreSQL, réplication, monitoring,
sauvergardedalibo.advanced
: HA, performances, audit, ldap,
poolerdalibo.extras
: Tous les outils annexes
(ETCD,rsyslog, logrotate, etc)postgres
Installer PostgreSQL 16 :
[root@srv-pg1 ~]# dnf install -y postgresql16 postgresql16-server \
postgresql16-contrib
Installer pgBackRest :
[root@srv-pg1 ~]# dnf install -y pgbackrest
Installer pglift avec pipx
, en tant que
postgres
:
[root@srv-pg1 ~]# su - postgres << EOF
pip3.9 install pipx
~/.local/bin/pipx install "pglift[cli]" --include-deps
~/.local/bin/pipx ensurepath
EOF
Ouvrir une nouvelle session est nécessaire pour que le binaire
pglift
soit dans le ${PATH}
de l’utilisateur
postgres
~/.config/pglift/settings.yaml
/etc/pglift/settings.yaml
pglift site-configure install
[postgres@srv-pg1 ~]$ pglift instance create main \
--pgbackrest-stanza=main
Inventaire Ansible : ~/ansible/inventory
srv-pg1 ansible_user=dalibo ansible_port=2201 ansible_host=51.158.107.167
srv-helper1 ansible_user=dalibo ansible_port=2202 ansible_host=51.158.107.167
[database]
srv-pg1
[primary]
srv-pg1
[standby]
srv-pg1
[temboard]
srv-helper1
collections:
- dalibo.pglift
- community.general
- dalibo.essential
- dalibo.advanced
- dalibo.extras
[dalibo@srv-helper1 ~/ansible]$ ansible-galaxy collection install -fr collections/requirements.yml
dalibo.essential.temboard
: Pour l’installationtemboard
: Pour la configurationtemboard.yml
[dalibo@srv-helper1 ~/ansible]$ ansible-playbook -i inventory temboard.yml
- name: Install Database Server
hosts: database
become: true
roles:
- dalibo.extras.repo_epel
- dalibo.essential.repo_pgdg
- dalibo.essential.repo_dalibo
- dalibo.extras.accounts
- dalibo.essential.postgresql
- dalibo.essential.pgbackrest
- dalibo.essential.temboard_agent
- dalibo.essential.pglift
[dalibo@srv-helper1 ~/ansible]$ ansible-playbook -i inventory postgresql.yml
dalibo.pglift.instance
---
- name: Deploy a standalone Instance
hosts: primary
become: true
become_user: postgres
tasks:
- name: Create Instance
dalibo.pglift.instance:
name: main
state: started
version: 16
port: 5432
surole_password: Passw0rd
pgbackrest:
password: Passw0rd
stanza: main-stz
temboard:
password: Passw0rd
replrole_password: Passw0rd
databases:
- name: ws1
[dalibo@srv-helper1 ~/ansible]$ ansible-playbook -i inventory instance_standalone.yml
---
- name: Deploy standby Instance
hosts: standby
become: true
become_user: postgres
tasks:
- name: Creating standby Instance
dalibo.pglift.instance:
name: standby
state: started
version: 16
port: 5433
surole_password: Passw0rd
pgbackrest:
password: Passw0rd
stanza: main-stz
standby:
primary_conninfo: "host=127.0.0.1 user=replication port=5432"
password: Passw0rd
temboard:
password: Passw0rd
port: 2346
[dalibo@srv-helper1 ~/ansible]$ ansible-playbook -i inventory standby_instance.yml
[postgres@srv-pg1 ~]$ pglift instance backup main
INFO backing up instance 16/main with pgBackRest
[postgres@srv-pg1 ~]$ pglift instance stop main
INFO stopping PostgreSQL 16-main
[postgres@srv-pg1 ~]$ pglift instance restore main --date '2024-01-18 08:48:43'
INFO restoring instance 16/main with pgBackRest
pglift pgconf
edit
, remove
,
set
, show
pg_hba.conf
avec la commande
pglift pghba
add
, remove
[postgres@srv-pg1 ~]$ pglift database -i main run "ANALYZE"
[postgres@srv-pg1 ~]$ pglift database -i main run -d postgres "VACUUM FULL"
[postgres@srv-pg1 ~]$ pglift database -i main run -x postgres "VACUUM"
temboard
temboard-agent
---
- name: Get instances gather facts
hosts: database
gather_facts: true
- name: Register instances in temBoard
hosts: temboard
connection: local
gather_facts: true
become: true
tasks:
- name: Register instances in temBoard
become_user: temboard
ansible.builtin.shell: "temboard register-instance {{ hostvars[item]['ansible_default_ipv4']['address'] }} 2345 -e default"
loop: "{{ groups['primary'] }}"
- name: Register instances in temBoard
become_user: temboard
ansible.builtin.shell: "temboard register-instance {{ hostvars[item]['ansible_default_ipv4']['address'] }} 2346 -e default"
loop: "{{ groups['standby'] }}"
[dalibo@srv-helper1 ~/ansible]$ ansible-playbook -i inventory temboard_register.yml
VACUUM [FULL]
, ANALYZE
,
REINDEX
)