2 # Copyright © 2019 Amdocs, Bell Canada, Samsung Electronics
4 # Licensed under the Apache License, Version 2.0 (the "License");
5 # you may not use this file except in compliance with the License.
6 # You may obtain a copy of the License at
8 # http://www.apache.org/licenses/LICENSE-2.0
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 # See the License for the specific language governing permissions and
14 # limitations under the License.
16 {{- if .Values.backup.enabled }}
17 apiVersion: batch/v1beta1
20 name: {{ include "common.fullname" . }}-backup
21 namespace: {{ include "common.namespace" . }}
23 app: {{ include "common.fullname" . }}
24 chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
25 release: {{ include "common.release" . }}
26 heritage: {{ .Release.Service }}
28 schedule: {{ .Values.backup.cron | quote }}
29 concurrencyPolicy: Forbid
30 startingDeadlineSeconds: 120
41 - {{ include "common.name" . }}
47 fieldPath: metadata.namespace
48 image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}"
49 imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
50 name: {{ include "common.name" . }}-readiness
51 - name: mariadb-galera-backup-init
52 image: "{{ include "common.repository" . }}/{{ .Values.backupImage }}"
53 imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
61 echo "Failed" > /backup/backup.log
62 echo "Backup failed!!!"
65 target_dir=/backup/backup-`date +%s`
68 mysqlhost={{ include "common.fullname" . }}-{{ sub .Values.replicaCount 1 }}.{{ .Values.service.name }}
70 mariabackup --backup --target-dir=$target_dir --user=root --password=$DB_PASS --host=$mysqlhost
73 if [ $ret_code -ne 0 ]; then
74 remove_dir $target_dir
78 echo "Starting Backup Preparation!!!"
79 mariabackup --prepare --target-dir=$target_dir
81 if [ $ret_code -ne 0 ]; then
82 remove_dir $target_dir
85 echo "Success" > /backup/backup.log
86 echo "Backup Successful!!!"
89 {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" (include "common.mariadb.secret.rootPassUID" .) "key" "password") | indent 14}}
94 - name: mariadb-backup-validate
95 image: "{{ include "common.repository" . }}/{{ .Values.backupImage }}"
96 imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
98 - name: MYSQL_ROOT_PASSWORD
99 {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" (include "common.mariadb.secret.rootPassUID" .) "key" "password") | indent 14}}
107 echo "Validation Failed!!!";
110 backup_result=`cat /backup/backup.log`
111 rm -rf /backup/backup.log
113 if [ "$backup_result" == "Failed" ]; then
114 echo "Backup Failed!!! So Validation Failed!!!";
118 target_dir=$(ls -td -- /backup/backup-* | head -n 1)
119 cp -Ra $target_dir/* /var/lib/mysql/
121 if [ ! "$(ls -A /var/lib/mysql)" ]; then
122 remove_dir $target_dir
126 /docker-entrypoint.sh mysqld &
129 until mysql --user=root --password=$MYSQL_ROOT_PASSWORD -e "SELECT 1";
131 count=`expr $count + 1`;
132 if [ $count -ge 30 ]; then
133 remove_dir $target_dir
138 mysqlcheck -A --user=root --password=$MYSQL_ROOT_PASSWORD > /tmp/output.log
139 error_lines=`cat /tmp/output.log| grep -v "OK" | wc -l`
143 if [ $error_lines -gt 1 ];then
144 remove_dir $target_dir
146 echo "Validation successful!!!"
148 totalFiles=`ls -t | grep "backup-" | wc -l`
149 if [ $totalFiles -gt {{ .Values.backup.retentionPeriod }} ]; then
150 filestoDelete=`expr $totalFiles - {{ .Values.backup.retentionPeriod }}`
151 ls -tr | grep backup | head -$filestoDelete | xargs rm -rf
155 - mountPath: /etc/localtime
165 persistentVolumeClaim:
166 claimName: {{ include "common.fullname" . }}-backup-data