password = ${hcfg.dumpPassword}
'';
}
+ {
+ dest = "mysql_replication/${name}/client";
+ permissions = "0400";
+ user = "mysql";
+ group = "mysql";
+ text = ''
+ [client]
+ user = ${hcfg.dumpUser}
+ password = ${hcfg.dumpPassword}
+ '';
+ }
]) cfg.hosts);
services.cron = {
set -euo pipefail
+ filename=${backupDir}/$(${pkgs.coreutils}/bin/date -Iminutes).sql
${hcfg.package}/bin/mysqldump \
--defaults-file=${config.secrets.location}/mysql_replication/${name}/mysqldump \
-S /run/mysqld_${name}/mysqld.sock \
--gtid \
--master-data \
--flush-privileges \
- --all-databases > ${backupDir}/$(${pkgs.coreutils}/bin/date -Iseconds).sql
+ --all-databases > $filename
+ ${pkgs.gzip}/bin/gzip $filename
'';
u = pkgs.callPackage ./utils.nix {};
- cleanup_script = pkgs.writeScript "cleanup_mysql_${name}" (u.exponentialDumps backupDir);
+ cleanup_script = pkgs.writeScript "cleanup_mysql_${name}" (u.exponentialDumps "sql.gz" backupDir);
in [
"0 22,4,10,16 * * * root ${backup_script}"
"0 3 * * * root ${cleanup_script}"
lib.attrsets.nameValuePair "mysql/${name}_my.cnf" {
text = ''
[mysqld]
+ skip-networking
socket = /run/mysqld_${name}/mysqld.sock
datadir = ${cfg.base}/${name}/mysql/
log-bin = mariadb-bin