2023-02-17 15:13:18 +00:00
|
|
|
- name: Restore database
|
|
|
|
when: postgresql_wal_g_force_delete_and_restore
|
|
|
|
block:
|
|
|
|
- name: Stop PostgreSQL
|
|
|
|
systemd:
|
|
|
|
daemon_reload: true
|
|
|
|
name: "{{ postgresql_unit_name }}"
|
|
|
|
state: stopped
|
|
|
|
masked: no
|
|
|
|
|
|
|
|
- name: Force purge database directory
|
|
|
|
file:
|
|
|
|
path: "{{ postgresql_data_dir }}"
|
|
|
|
state: absent
|
|
|
|
|
|
|
|
- name: Recreate database directory
|
|
|
|
file:
|
|
|
|
path: "{{ postgresql_data_dir }}"
|
|
|
|
state: directory
|
|
|
|
become_user: postgres
|
|
|
|
|
2023-07-31 20:44:44 +00:00
|
|
|
- name: Check if database folder is empty before proceeding
|
2023-02-17 15:13:18 +00:00
|
|
|
find:
|
|
|
|
paths: "{{ postgresql_data_dir }}"
|
|
|
|
register: postgresql_files_found
|
|
|
|
|
|
|
|
- name: Restore database
|
|
|
|
when:
|
|
|
|
- postgresql_files_found.matched == 0
|
|
|
|
block:
|
|
|
|
- name: Restore database dir from backup
|
2023-07-31 20:44:44 +00:00
|
|
|
shell: "{{ postgresql_restore_dbs_from_backup_command }}"
|
2023-02-17 15:13:18 +00:00
|
|
|
become_user: postgres
|
2023-07-21 14:14:47 +00:00
|
|
|
|
2023-02-17 15:13:18 +00:00
|
|
|
- name: Include PostgreSQL configuration
|
|
|
|
vars:
|
2023-03-15 09:26:09 +00:00
|
|
|
postgresql_archive_command: "cd ."
|
2023-07-31 20:44:44 +00:00
|
|
|
postgresql_restore_command: "{{ postgresql_restore_wals_from_backup_command }}"
|
2024-05-26 14:56:35 +00:00
|
|
|
recovery_target_time: "{{ postgresql_wal_g_pitr }}"
|
2023-02-17 15:13:18 +00:00
|
|
|
include_tasks: config.yaml
|
2023-07-21 14:14:47 +00:00
|
|
|
|
2023-02-17 15:13:18 +00:00
|
|
|
- name: Create recovery.signal file
|
2023-07-21 14:14:47 +00:00
|
|
|
file:
|
2023-02-17 15:13:18 +00:00
|
|
|
name: "{{ postgresql_data_dir }}/recovery.signal"
|
|
|
|
state: touch
|
|
|
|
become_user: postgres
|
2023-07-21 14:14:47 +00:00
|
|
|
|
2023-02-17 15:13:18 +00:00
|
|
|
- name: Start PostgreSQL for recovery
|
|
|
|
systemd:
|
|
|
|
daemon_reload: true
|
|
|
|
name: "{{ postgresql_unit_name }}"
|
|
|
|
state: started
|
|
|
|
masked: no
|
|
|
|
register: postgresql_start_for_recovery
|
2023-07-21 14:14:47 +00:00
|
|
|
|
2023-02-17 15:13:18 +00:00
|
|
|
- name: Ping PostgreSQL server
|
|
|
|
community.postgresql.postgresql_ping:
|
|
|
|
db: "{{ postgresql_superuser_db }}"
|
|
|
|
register: postgresql_ping
|
|
|
|
until: postgresql_ping.is_available
|
2024-05-26 14:56:35 +00:00
|
|
|
retries: 100
|
2023-02-17 15:13:18 +00:00
|
|
|
delay: 20
|
2023-07-21 14:14:47 +00:00
|
|
|
|
2023-02-17 15:13:18 +00:00
|
|
|
- name: debug
|
|
|
|
debug:
|
|
|
|
msg: "{{ postgresql_ping }}"
|
|
|
|
|
2024-05-26 14:56:35 +00:00
|
|
|
- name: Reset {{ postgresql_superuser_username }} password after restore
|
|
|
|
become_user: "{{ postgresql_user }}"
|
|
|
|
community.postgresql.postgresql_query:
|
|
|
|
db: "{{ postgresql_superuser_db }}"
|
|
|
|
query: ALTER USER {{ postgresql_superuser_username }} with password '{{ postgresql_superuser_password }}';
|
|
|
|
|
2023-02-17 15:13:18 +00:00
|
|
|
- name: Stop PostgreSQL
|
|
|
|
systemd:
|
|
|
|
daemon_reload: true
|
|
|
|
name: "{{ postgresql_unit_name }}"
|
|
|
|
state: stopped
|
|
|
|
masked: no
|
|
|
|
register: postgresql_stop
|
|
|
|
|
2023-07-21 14:14:47 +00:00
|
|
|
- name: Include PostgreSQL configuration
|
|
|
|
include_tasks: config.yaml
|