diff --git a/mariadb/CHANGELOG.md b/mariadb/CHANGELOG.md index d9da61f0272..bcf71463c6e 100644 --- a/mariadb/CHANGELOG.md +++ b/mariadb/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 2.4.0 + +- Add lock capabilities during snapshot + ## 2.3.0 - Option to grant user specific privileges for a database diff --git a/mariadb/config.json b/mariadb/config.json index f74bccc21fd..5c55576479c 100644 --- a/mariadb/config.json +++ b/mariadb/config.json @@ -1,6 +1,6 @@ { "name": "MariaDB", - "version": "2.3.0", + "version": "2.4.0", "slug": "mariadb", "description": "A SQL database server", "url": "https://github.com/home-assistant/hassio-addons/tree/master/mariadb", @@ -8,6 +8,8 @@ "startup": "system", "init": false, "timeout": 20, + "snapshot_pre": "/bin/s6-svc -wU -u /run/s6/services/mariadb-lock/", + "snapshot_post": "/bin/s6-svc -wd -d /run/s6/services/mariadb-lock/", "services": ["mysql:provide"], "ports": { "3306/tcp": null diff --git a/mariadb/rootfs/etc/services.d/mariadb-lock/down b/mariadb/rootfs/etc/services.d/mariadb-lock/down new file mode 100644 index 00000000000..e69de29bb2d diff --git a/mariadb/rootfs/etc/services.d/mariadb-lock/finish b/mariadb/rootfs/etc/services.d/mariadb-lock/finish new file mode 100644 index 00000000000..e69de29bb2d diff --git a/mariadb/rootfs/etc/services.d/mariadb-lock/notification-fd b/mariadb/rootfs/etc/services.d/mariadb-lock/notification-fd new file mode 100644 index 00000000000..00750edc07d --- /dev/null +++ b/mariadb/rootfs/etc/services.d/mariadb-lock/notification-fd @@ -0,0 +1 @@ +3 diff --git a/mariadb/rootfs/etc/services.d/mariadb-lock/run b/mariadb/rootfs/etc/services.d/mariadb-lock/run new file mode 100755 index 00000000000..7fd249aaaf6 --- /dev/null +++ b/mariadb/rootfs/etc/services.d/mariadb-lock/run @@ -0,0 +1,28 @@ +#!/usr/bin/with-contenv bashio +# ============================================================================== +# Start MariaDB client to lock tables (for snapshots) +# ============================================================================== + +bashio::log.info "Lock tables using mariadb client..." + +exec 4> >(mariadb) +MARIADB_PID=$! + +echo "FLUSH TABLES WITH READ LOCK;" >&4 + +# Notify s6 about successful service start +echo "" >&3 + +bashio::log.info "MariaDB tables locked." + +# Register stop +function stop_mariadb_client() { + echo "UNLOCK TABLES;" >&4 + bashio::log.info "MariaDB tables unlocked." + exec 4>&- + # Successful exit, avoid wait exit status to propagate + exit 0 +} +trap "stop_mariadb_client" SIGTERM SIGHUP + +wait "${MARIADB_PID}"