master/mariadb/tools/dbDump.sh

91 lines
4.2 KiB
Bash
Executable File

#!/bin/bash
# ****************************************************************************************************
# * ______ _ _ *
# * | ____| /\ (_) | | *
# * | |__ _ _ _ __ ___ _ __ ___ __ _ _ __ / \ _ _ __ _ __ ___ _ __| |_ ___ *
# * | __|| | | | '__/ _ \| '_ \ / _ \/ _` | '_ \ / /\ \ | | '__| '_ \ / _ \| '__| __/ __| *
# * | |___| |_| | | | (_) | |_) | __/ (_| | | | | / ____ \| | | | |_) | (_) | | | |_\__ \ *
# * |______\__,_|_| \___/| .__/ \___|\__,_|_| |_| /_/ \_\_|_| | .__/ \___/|_| \__|___/ *
# * | | | | *
# * |_| |_| *
# * *
# ****************************************************************************************************
# This file is part of the European Airports Project, a free, collaborative platform of airport data
# extending beyond the official AIPs.
# Copyright (C) 2023
# Florian Meissner <florianmeissner@gmx.de>
# This program is free software: you can redistribute it and/or modify it under the
# terms of the GNU General Public License as published by the Free Software Foundation, either
# version 3 of the License, or (at your option) any later version. This program is distributed in the
# hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
# details. You should have received a copy of the GNU General Public License along with this program.
# (license.md in the root folder of this project) If not, see <http://www.gnu.org/licenses/>.
# ****************************************************************************************
# * ,__ __ ____ , __ ____ *
# * /| | | o (| \/|/ \ (| \ *
# * | | | __, ,_ __, | || __/ | | _ _ _ _ *
# * | | | / | / | | / | _| || \ _| || | / |/ |/ | |/ \_ *
# * | | |_/\_/|_/ |_/|_/\_/|_/(/\___/ |(__/ (/\___/ \_/|_/ | | |_/|__/ *
# * /| *
# * \| *
# ****************************************************************************************
# Dump database contents to be later backed up. The dump will not contain any DROP or CREATE
# statements in order not to damage any existing data. This way `dbImport.sh` can use these files
# and run them over an eventually existing DB during the Docker entryint script.
DUMP_DIR="/tmp/mariadb-dump"
DB_USER=`cat /run/secrets/rootUser`
DB_PW=`cat /run/secrets/rootPw`
DB_NAMES=(
#"example-db"
"eaMain"
)
ERROR_LOG="/var/log/mysql/dump.log"
# Set excluded database tables here. Use an index for each database and separate tables by spaces.
declare -A EXCLUDED_TABLES=(
#[example-db]="table1 table2 table3"
#[toplist]="cty"
)
###################################################################################################
mkdir -p $DUMP_DIR
for db in ${DB_NAMES[@]}; do
# Assemble base command
read -r -d '' cmd << EOF
mariadb-dump
--single-transaction
--no-create-db
--insert-ignore
--user=$DB_USER
--password=$DB_PW
--databases $db
--dump-date
--log-error=$ERROR_LOG
--skip-add-drop-table
--skip-extended-insert
--no-create-info
EOF
# Append excluded tables
for tbl in ${EXCLUDED_TABLES[$db]}; do
cmd="${cmd} --ignore-table=${db}.${tbl}"
done
$cmd > $DUMP_DIR/$db.sql
done