diff --git a/mysql/Dockerfile b/mysql/Dockerfile index 137f265..c7e4aab 100644 --- a/mysql/Dockerfile +++ b/mysql/Dockerfile @@ -34,7 +34,7 @@ ADD my.cnf /etc/mysql/mysql.cnf # MTK - A toolkit for exporting, sanitizing and packaging MySQL database. # https://github.com/skpr/mtk -COPY --from=ghcr.io/skpr/mtk:v2.1.1 /usr/local/bin/mtk /usr/local/bin/mtk +COPY --from=ghcr.io/skpr/mtk:v2.3.0 /usr/local/bin/mtk /usr/local/bin/mtk USER mysql diff --git a/mysql/scripts/database-import-tables b/mysql/scripts/database-import-tables index 77c5e14..e82b15d 100644 --- a/mysql/scripts/database-import-tables +++ b/mysql/scripts/database-import-tables @@ -2,14 +2,24 @@ DATABASE=$1 DUMP_DIR=$2 +MAX_CONCURRENT=4 mysql-drop-tables ${MYSQL_USERNAME} ${MYSQL_PASSWORD} ${MYSQL_HOSTNAME} ${DATABASE} -for i in ${DUMP_DIR}/*.sql -do - echo "Starting to import: $i" +# define the worker function +import_sql() { + local sqlfile="$1" + echo "Starting to import: $sqlfile" start=$(date +%s) - MYSQL_PWD="${MYSQL_PASSWORD}" mysql --user=${MYSQL_USERNAME} --host=${MYSQL_HOSTNAME} ${DATABASE} < $i + MYSQL_PWD="${MYSQL_PASSWORD}" mysql --user=${MYSQL_USERNAME} --host=${MYSQL_HOSTNAME} ${DATABASE} < $sqlfile end=$(date +%s) - echo "Finished importing $i in: $(($end-$start)) seconds" -done + echo "Finished importing $sqlfile in: $(($end-$start)) seconds" +} +export -f import_sql +export DATABASE +export MYSQL_HOSTNAME +export MYSQL_USERNAME +export MYSQL_PASSWORD + +find "$DUMP_DIR" -type f -name '*.sql' -print0 \ + | xargs -0 -n1 -P"$MAX_CONCURRENT" bash -c 'import_sql "$@"' _