aboutsummaryrefslogtreecommitdiff
path: root/docker/mariadb
diff options
context:
space:
mode:
Diffstat (limited to 'docker/mariadb')
-rw-r--r--docker/mariadb/Dockerfile.j219
-rw-r--r--docker/mariadb/backup.sh48
2 files changed, 55 insertions, 12 deletions
diff --git a/docker/mariadb/Dockerfile.j2 b/docker/mariadb/Dockerfile.j2
index 55898dc18..7fa09a30d 100644
--- a/docker/mariadb/Dockerfile.j2
+++ b/docker/mariadb/Dockerfile.j2
@@ -23,19 +23,11 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% elif base_package_type == 'deb' %}
{% set mariadb_packages = [
- 'expect'
+ 'expect',
+ 'mariadb-backup',
+ 'mariadb-client',
+ 'mariadb-server'
] %}
- {% if base_distro == 'debian' %}
- {% set mariadb_packages = mariadb_packages + [
- 'mariadb-server'
- ] %}
- {% else %}
- {% set mariadb_packages = mariadb_packages + [
- 'mariadb-server',
- 'mariadb-client',
- 'mariadb-backup',
- ] %}
- {% endif %}
{% endif %}
{{ macros.install_packages(mariadb_packages | customizable("packages")) }}
@@ -53,6 +45,9 @@ RUN chmod 755 /usr/local/bin/kolla_extend_start \
RUN mkdir -p /var/run/mysqld && chown mysql /var/run/mysqld && chmod 755 /var/run/mysqld
{% endif %}
+COPY backup.sh /usr/local/bin/kolla_mariadb_backup.sh
+RUN chmod 755 /usr/local/bin/kolla_mariadb_backup.sh
+
{% if use_dumb_init %}
{% block mariadb_entrypoint %}
# NOTE(mgoddard): Override the dumb-init arguments to avoid passing
diff --git a/docker/mariadb/backup.sh b/docker/mariadb/backup.sh
new file mode 100644
index 000000000..8c494a5eb
--- /dev/null
+++ b/docker/mariadb/backup.sh
@@ -0,0 +1,48 @@
+#!/usr/bin/env bash
+
+set -eu
+
+# Execute a full backup
+backup_full() {
+ echo "Taking a full backup"
+ mariabackup --defaults-file=/etc/mysql/my.cnf \
+ --no-timestamp \
+ --stream=xbstream \
+ --compress \
+ --history=$(date +%d-%m-%Y) ./ > \
+ $BACKUP_DIR/mysqlbackup-$(date +%d-%m-%Y-%s).qp.xbc.xbs
+}
+
+# Execute an incremental backup
+backup_incremental() {
+ echo "Taking an incremental backup"
+ mariabackup --defaults-file=/etc/mysql/my.cnf \
+ --no-timestamp \
+ --stream=xbstream \
+ --compress \
+ --incremental \
+ --incremental-history-name=$(date +%d-%m-%Y) \
+ --history=$(date +%d-%m-%Y) ./ > \
+ $BACKUP_DIR/incremental-$(date +%H)-mysqlbackup-$(date +%d-%m-%Y-%s).qp.xbc.xbs
+}
+
+BACKUP_DIR=/backup/
+cd $BACKUP_DIR
+
+if [ -n $BACKUP_TYPE ]; then
+ case $BACKUP_TYPE in
+ "full")
+ backup_full
+ ;;
+ "incremental")
+ backup_incremental
+ ;;
+ *)
+ echo "Only full or incremental options are supported."
+ exit 1
+ ;;
+ esac
+else
+ echo "You need to specify either full or incremental backup options."
+ exit 1
+fi