Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

Test backup functionality provided by OOM: oom/cronjob.yaml at master · onap/oom · GitHub


Container downloads mariadb image and runs some shell commands


OOM Cronjob
initContainers: {{- include "common.readinessCheck.waitFor" . | nindent 12 }}
- name: mariadb-galera-backup-init
image: {{ include "repositoryGenerator.image.mariadb" . }}
imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
{{ include "common.containerSecurityContext" . | indent 14 | trim }}
command:
- /bin/bash
- -c
- |
remove_dir(){
dirToRemove=$1
rm -rf $dirToRemove
echo "Failed" > /backup/backup.log
echo "Backup failed!!!"
}

target_dir=/backup/backup-`date +%s`
mkdir -p $target_dir

mysqlhost={{ include "common.servicename" . }}.{{ include "common.namespace" . }}

mariabackup --backup --target-dir=$target_dir --user=root --password=$DB_PASS --host=$mysqlhost

ret_code=$?
if [ $ret_code -ne 0 ]; then
remove_dir $target_dir
exit 0
fi

echo "Starting Backup Preparation!!!"
mariabackup --prepare --target-dir=$target_dir
ret_code=$?
if [ $ret_code -ne 0 ]; then
remove_dir $target_dir
exit 0
fi
echo "Success" > /backup/backup.log
echo "Backup Successful!!!"


Testing

  1. Check mariabackup version on localhost: mariabackup --version → mariabackup based on MariaDB server 10.3.25-MariaDB debian-linux-gnu (x86_64)
  2. Start docker container using this version: docker run -it mariadb:10.3.25 bash
  3. Copy mariabackup command from the code above and replace variable with actual values: mariabackup --backup --target-dir=/tmp --user=root --password=**** --host=host.docker.internal --port=3355 → [00] 2021-05-19 10:00:14 Failed to connect to MySQL server: Access denied for user 'root'@'localhost'.
  4. Try the same command locally: sudo mariabackup --backup --target-dir=/tmp --user=root --password=***** --host=localhost --port=3355 →[00] 2021-05-19 11:03:32 completed OK!
  5. Create a new user on local mariadb server: create user backup identified by 'backup';
  6. Grant all privileges to backup: GRANT ALL PRIVILEGES ON *.* TO 'backup'@'%'; FLUSH PRIVILEGES;
  7. Re-try mariabackup from the container: mariabackup --backup --target-dir=/tmp --user=backup --password=backup --host=host.docker.internal --port=3355 → [ERROR] InnoDB: File /var/lib/mysql/ib_logfile0: 'open' returned OS error 71. Cannot continue operation
    210519 10:07:59 [ERROR] mysqld got signal 6 ;
  8. Run the command locally: sudo mariabackup --backup --target-dir=/tmp --user=backup --password=backup --host=localhost --port=3355 → [00] 2021-05-19 11:10:27 completed OK!
  9. Try using mysqldump in the container instead: mysqldump --all-databases --host=host.docker.internal --port=3355 --user=backup --password=backup → -- Dump completed on 2021-05-19 10:12:37
  10. Try mysqldump locally: sudo mysqldump --all-databases --host=localhost --port=3355 --user=backup --password=backup → -- Dump completed on 2021-05-19 11:15:24


Conclusion

  1. mariabackup does not work remotley
  2. mariabackup does not work with the root user 
  3. mysqldump is a more reliable option.




  • No labels