Skip to content
This repository was archived by the owner on May 12, 2025. It is now read-only.

Commit d4ba760

Browse files
Merge pull request #6 from stone-payments/fix/pbm-backup
Fix pbm backup script
2 parents b22db1d + ea31665 commit d4ba760

File tree

5 files changed

+30
-19
lines changed

5 files changed

+30
-19
lines changed

README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,7 @@ mongodb_backup_script_path: "/etc/mongodb-backup.sh"
197197
mongodb_backup_log_path: "{{ mongodb_systemlog_path|dirname }}/backup_mongod.log"
198198
mongodb_backup_path: "{{ mongodb_storage_dbpath }}/backup" # Local path to mongodump, or PBM path to backups # Do not use "/" in the end of directories
199199
mongodb_backup_path_hot_storage : "{{ mongodb_backup_path }}/storage" # Path to storage mongodump backup, or path to PBM Hot Backups when use PBM # Do not use "/" in the end of directories
200+
mongodb_backup_store_days: 0 # if the value is 0, the script will not copy the backups to the storage directory, and will keep only one local copy (mongodump).
200201
mongodb_backup_parameters: "--mongodb-uri \"mongodb://{{ mongodb_backup_user_name }}:{{ mongodb_backup_user_password }}@{{ inventory_hostname }}:{{ mongodb_net_port }}/admin?replicaSet={{ mongodb_replication_replset }}\"" # Mongodump: "--gzip --forceTableScan"
201202
mongodb_backup_cron_time:
202203
hour: 3
@@ -210,6 +211,10 @@ mongodb_backup_logrotate: |
210211
create 644
211212
}
212213
214+
# PBM Backup
215+
mongodb_backup_logical_store_days: "{{ mongodb_backup_store_days }}" # Number of days to store pbm logical backups
216+
mongodb_backup_hot_store_days: "{{ mongodb_backup_store_days }}" # Number of days to storage hot backups in disk
217+
213218
# Enable PBM Point-in-Time Recovery
214219
mongodb_backup_pbm_pitr_enable: true
215220
```

defaults/main.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,5 +156,9 @@ mongodb_backup_logrotate: |
156156
create 644
157157
}
158158
159+
# PBM Backup
160+
mongodb_backup_logical_store_days: "{{ mongodb_backup_store_days }}" # Number of days to store pbm logical backups
161+
mongodb_backup_hot_store_days: "{{ mongodb_backup_store_days }}" # Number of days to storage hot backups in disk
162+
159163
# Enable PBM Point-in-Time Recovery
160164
mongodb_backup_pbm_pitr_enable: true

tasks/backup/pbm_configure.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,11 +49,11 @@
4949
when: not ansible_check_mode
5050

5151
- name: PBM Config PBM_MONGODB_URI
52-
command: pbm config --file /mongodb/pbm_config.yml --mongodb-uri "mongodb://{{ mongodb_backup_user_name }}:{{ mongodb_backup_user_password }}@{{ inventory_hostname }}:{{ mongodb_net_port|default('27017') }}/admin?replicaSet={{ mongodb_replication_replset }}"
52+
command: pbm config --file /mongodb/pbm_config.yml --mongodb-uri "mongodb://{{ mongodb_backup_user_name }}:{{ mongodb_backup_user_password }}@{{ inventory_hostname }}:{{ mongodb_net_port }}/admin?replicaSet={{ mongodb_replication_replset }}"
5353
no_log: true
5454

5555
- name: PBM Enable Point-in-Time Recovery
56-
command: pbm config --set pitr.enabled=true --mongodb-uri "mongodb://{{ mongodb_backup_user_name }}:{{ mongodb_backup_user_password }}@{{ inventory_hostname }}:{{ mongodb_net_port|default('27017') }}/admin?replicaSet={{ mongodb_replication_replset }}"
56+
command: pbm config --set pitr.enabled=true --mongodb-uri "mongodb://{{ mongodb_backup_user_name }}:{{ mongodb_backup_user_password }}@{{ inventory_hostname }}:{{ mongodb_net_port }}/admin?replicaSet={{ mongodb_replication_replset }}"
5757
no_log: true
5858
when:
5959
- mongodb_backup_pbm_pitr_enable|bool
@@ -63,8 +63,8 @@
6363
name: "pbm-agent"
6464
state: started
6565

66-
- name: Add PBM_MONGODB_URI to bash profile
66+
- name: Add PBM_MONGODB_URI to bashrc
6767
lineinfile:
6868
path: /root/.bashrc
69-
line: 'export PBM_MONGODB_URI="mongodb://{{ mongodb_backup_user_name }}:{{ mongodb_backup_user_password }}@{{ inventory_hostname }}:{{ mongodb_net_port|default("27017") }}/admin?replicaSet={{ mongodb_replication_replset }}"'
69+
line: 'export PBM_MONGODB_URI="mongodb://{{ mongodb_backup_user_name }}:{{ mongodb_backup_user_password }}@{{ inventory_hostname }}:{{ mongodb_net_port }}/admin?replicaSet={{ mongodb_replication_replset }}"'
7070
no_log: true

tasks/backup/pbm_remove.yml

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
update_password: on_create
1919
login_user: "{{ mongodb_root_user_name }}"
2020
login_password: "{{ mongodb_root_user_password }}"
21-
login_port: "{{ mongodb_net_port|default('27017') }}"
21+
login_port: "{{ mongodb_net_port }}"
2222
state: absent
2323
no_log: true
2424

@@ -27,7 +27,7 @@
2727
mongo --quiet {{ '--ssl' if newrelic_mongodb_ssl == 'true' else '' }} \
2828
--host {{ inventory_hostname }} \
2929
-u {{ mongodb_root_user_name }} -p {{ mongodb_root_user_password }} \
30-
--port {{ mongodb_net_port|default('27017') }} \
30+
--port {{ mongodb_net_port }} \
3131
--eval 'db.getSiblingDB("admin").dropRole("pbmAnyAction")'
3232
ignore_errors: true
3333
no_log: true
@@ -43,8 +43,9 @@
4343
state: "absent"
4444
path: "/etc/sysconfig/pbm-agent"
4545

46-
- name: Remove PBM_MONGODB_URI to bash profile
46+
- name: Remove PBM_MONGODB_URI to bashrc
4747
lineinfile:
48-
path: /root/.bash_profile
49-
line: 'export PBM_MONGODB_URI="mongodb://{{ mongodb_pbm_user_name }}:{{ mongodb_pbm_user_name_password }}@{{ inventory_hostname }}:{{ mongodb_net_port|default("27017") }}/admin?replicaSet={{ mongodb_replication_replset }}"'
48+
path: /root/.bashrc
49+
line: 'export PBM_MONGODB_URI="mongodb://{{ mongodb_pbm_user_name }}:{{ mongodb_pbm_user_name_password }}@{{ inventory_hostname }}:{{ mongodb_net_port }}/admin?replicaSet={{ mongodb_replication_replset }}"'
5050
state: absent
51+
no_log: true

templates/mongodb.pbpm_backup.sh.j2

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,14 @@ PATH=$PATH:/sbin:/bin:/usr/sbin:/usr/bin
88
# MongoDB Script Backup Variables
99
BACKUP_LOG_PATH="{{ mongodb_backup_log_path }}"
1010
BACKUP_PHYSICAL_PATH="{{ mongodb_backup_path_hot_storage }}"
11-
BACKUP_STORAGE_DAYS={{ mongodb_backup_store_days }}
11+
BACKUP_LOGICAL_STORAGE_DAYS={{ mongodb_backup_logical_store_days }}
12+
BACKUP_HOT_STORAGE_DAYS={{ mongodb_backup_hot_store_days }}
1213
MONGO_BACKUP_USER="{{ mongodb_backup_user_name }}"
1314
MONGO_BACKUP_PASSWORD="{{ mongodb_backup_user_password }}"
1415
MONGO_BACKUP_PARAMETERS="{{ mongodb_backup_parameters }}"
1516
BACKUP_CURRENT_DATE=$(date +%Y%m%d)
16-
BACKUP_DELETE_DATE=$(date -d "${BACKUP_STORAGE_DAYS} days ago" "+%Y%m%d")
17-
BACKUP_PBM_DELETE_DATE=$(date -d "${BACKUP_STORAGE_DAYS} days ago" "+%Y-%m-%d")
17+
BACKUP_PBM_DELETE_DATE=$(date -d "${BACKUP_LOGICAL_STORAGE_DAYS} days ago" "+%Y-%m-%d")
18+
BACKUP_HOT_DELETE_DATE=$(date -d "${BACKUP_HOT_STORAGE_DAYS} days ago" "+%Y%m%d")
1819

1920
function print {
2021
mkdir -p "$(dirname "${BACKUP_LOG_PATH}")"
@@ -48,17 +49,17 @@ if grep -q '"ismaster" : true' /tmp/validate; then
4849
print "INFO" "Deleting Physical Backups"
4950

5051
# Checks number of backups
51-
BACKUP_NB=$(find $BACKUP_PHYSICAL_PATH -type d -name "backup_*" | wc -l)
52+
BACKUP_NB=$(find $BACKUP_PHYSICAL_PATH -type f -name "backup_*" | wc -l)
5253

5354
# Delete backups only if the number of existing backups is greater than the desired number of days
5455
if [[ $BACKUP_NB -gt ${BACKUP_STORAGE_DAYS} ]]
5556
then
56-
find "$BACKUP_PHYSICAL_PATH" -type d -name "backup_*" -printf "%P\n" |
57-
while IFS= read -r FOLDER; do
58-
FOLDER_BACKUP_DATE=$(echo "${FOLDER}" | awk -F_ '{print $NF}')
59-
if [ "${BACKUP_DELETE_DATE}" -gt "${FOLDER_BACKUP_DATE}" ]; then
60-
print "INFO" "Deleting backup ${FOLDER}"
61-
rm -rf "${BACKUP_PHYSICAL_PATH}/${FOLDER}";
57+
find "$BACKUP_PHYSICAL_PATH" -type f -name "backup_*" -printf "%P\n" |
58+
while IFS= read -r BACKUP; do
59+
BACKUP_DATE=$(echo "${BACKUP}" | awk -F_ '{print $NF}' | cut -f1 -d".")
60+
if [ "${BACKUP_HOT_DELETE_DATE}" -gt "${BACKUP_DATE}" ]; then
61+
print "INFO" "Deleting backup ${BACKUP}"
62+
rm -f "${BACKUP_PHYSICAL_PATH}/${BACKUP}";
6263
fi
6364
done
6465
print "INFO" "Physical Backups deleted"

0 commit comments

Comments
 (0)