diff options
author | Peter Hoeg <peter@hoeg.com> | 2018-05-24 22:42:16 +0800 |
---|---|---|
committer | xeji <36407913+xeji@users.noreply.github.com> | 2018-05-24 16:42:16 +0200 |
commit | 5b468ea6b1d8d243847a05bdf5603e8abdfd7b4e (patch) | |
tree | 43f1634f050c75b7f153bac996c5ddf77c2ac862 /nixos/modules/services/databases | |
parent | e24399325535c0b0b7c19ea8e73ff61409d79ff4 (diff) | |
download | nixlib-5b468ea6b1d8d243847a05bdf5603e8abdfd7b4e.tar nixlib-5b468ea6b1d8d243847a05bdf5603e8abdfd7b4e.tar.gz nixlib-5b468ea6b1d8d243847a05bdf5603e8abdfd7b4e.tar.bz2 nixlib-5b468ea6b1d8d243847a05bdf5603e8abdfd7b4e.tar.lz nixlib-5b468ea6b1d8d243847a05bdf5603e8abdfd7b4e.tar.xz nixlib-5b468ea6b1d8d243847a05bdf5603e8abdfd7b4e.tar.zst nixlib-5b468ea6b1d8d243847a05bdf5603e8abdfd7b4e.zip |
nixos mysql: make start-up more robust (#41010)
1) Change start-type to ```notify``` when running MariaDB so that we don't have to busy-wait for the socket to appear. 2) Do not manually create the directory under /run as we can get systemd to do that for us. This opens up the possibility later for not having to launch as root.
Diffstat (limited to 'nixos/modules/services/databases')
-rw-r--r-- | nixos/modules/services/databases/mysql.nix | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/nixos/modules/services/databases/mysql.nix b/nixos/modules/services/databases/mysql.nix index 66c9330c3550..15b9c788e872 100644 --- a/nixos/modules/services/databases/mysql.nix +++ b/nixos/modules/services/databases/mysql.nix @@ -231,8 +231,10 @@ in environment.systemPackages = [mysql]; - systemd.services.mysql = - { description = "MySQL Server"; + systemd.services.mysql = let + hasNotify = (cfg.package == pkgs.mariadb); + in { + description = "MySQL Server"; after = [ "network.target" ]; wantedBy = [ "multi-user.target" ]; @@ -256,17 +258,16 @@ in mkdir -m 0755 -p ${cfg.pidDir} chown -R ${cfg.user} ${cfg.pidDir} - - # Make the socket directory - mkdir -p /run/mysqld - chmod 0755 /run/mysqld - chown -R ${cfg.user} /run/mysqld ''; - serviceConfig.ExecStart = "${mysql}/bin/mysqld --defaults-extra-file=${myCnf} ${mysqldOptions}"; + serviceConfig = { + Type = if hasNotify then "notify" else "simple"; + RuntimeDirectory = "mysqld"; + ExecStart = "${mysql}/bin/mysqld --defaults-extra-file=${myCnf} ${mysqldOptions}"; + }; - postStart = - '' + postStart = '' + ${lib.optionalString (!hasNotify) '' # Wait until the MySQL server is available for use count=0 while [ ! -e /run/mysqld/mysqld.sock ] @@ -281,6 +282,7 @@ in count=$((count++)) sleep 1 done + ''} if [ -f /tmp/mysql_init ] then |