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: {{ include "repositoryGenerator.image.readiness" . }}
49 imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
50 name: {{ include "common.name" . }}-readiness
51 - name: mariadb-galera-backup-init
52 image: {{ include "repositoryGenerator.image.mariadb" . }}
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 mountPath: /var/lib/mysql
96 - name: mariadb-backup-validate
97 image: {{ include "repositoryGenerator.image.mariadb" . }}
98 imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
100 - name: MYSQL_ROOT_PASSWORD
101 {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" (include "common.mariadb.secret.rootPassUID" .) "key" "password") | indent 14}}
109 echo "Validation Failed!!!";
112 backup_result=`cat /backup/backup.log`
113 rm -rf /backup/backup.log
115 if [ "$backup_result" == "Failed" ]; then
116 echo "Backup Failed!!! So Validation Failed!!!";
120 target_dir=$(ls -td -- /backup/backup-* | head -n 1)
121 cp -Ra $target_dir/* /var/lib/mysql/
123 if [ ! "$(ls -A /var/lib/mysql)" ]; then
124 remove_dir $target_dir
128 /docker-entrypoint.sh mysqld &
131 until mysql --user=root --password=$MYSQL_ROOT_PASSWORD -e "SELECT 1";
133 count=`expr $count + 1`;
134 if [ $count -ge 30 ]; then
135 remove_dir $target_dir
140 mysqlcheck -A --user=root --password=$MYSQL_ROOT_PASSWORD > /tmp/output.log
141 error_lines=`cat /tmp/output.log| grep -v "OK" | wc -l`
145 if [ $error_lines -gt 1 ];then
146 remove_dir $target_dir
148 echo "Validation successful!!!"
150 totalFiles=`ls -t | grep "backup-" | wc -l`
151 if [ $totalFiles -gt {{ .Values.backup.retentionPeriod }} ]; then
152 filestoDelete=`expr $totalFiles - {{ .Values.backup.retentionPeriod }}`
153 ls -tr | grep backup | head -$filestoDelete | xargs rm -rf
157 - mountPath: /etc/localtime
167 persistentVolumeClaim:
168 claimName: {{ include "common.fullname" . }}-backup-data
170 persistentVolumeClaim:
171 claimName: {{ include "common.fullname" . }}-data-{{ include "common.fullname" . }}-{{ sub .Values.replicaCount 1 }}