fix: backup — mysql_native_password für MariaDB-Client gegen MySQL 8

mariadb-dump kennt caching_sha2_password nicht (MySQL-8-Default).
--default-auth=mysql_native_password umgeht das. Außerdem wird
der Exit-Code des Dump-Prozesses jetzt ausgewertet — fehlerhafte
Dumps werden erkannt statt als leere Datei abgelegt.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-05 14:44:22 +02:00
parent c3bac456e7
commit 93b449412f
+11 -2
View File
@@ -33,6 +33,7 @@ async function runBackup(): Promise<void> {
const dump = spawn(dumpBin, [ const dump = spawn(dumpBin, [
`-h${dbHost}`, `-P${dbPort}`, `-u${dbUser}`, `-h${dbHost}`, `-P${dbPort}`, `-u${dbUser}`,
'--skip-ssl', '--skip-ssl',
'--default-auth=mysql_native_password',
`--ignore-table=${dbName}.beos`, `--ignore-table=${dbName}.beos`,
dbName, dbName,
], { env: { ...process.env, MYSQL_PWD: dbPass } }); ], { env: { ...process.env, MYSQL_PWD: dbPass } });
@@ -44,13 +45,21 @@ async function runBackup(): Promise<void> {
gzip.stdout.pipe(file); gzip.stdout.pipe(file);
let dumpErr = ''; let dumpErr = '';
let dumpCode: number | null = null;
dump.stderr.on('data', (d: Buffer) => { dumpErr += d.toString(); }); dump.stderr.on('data', (d: Buffer) => { dumpErr += d.toString(); });
dump.on('error', reject); dump.on('error', reject);
gzip.on('error', reject); gzip.on('error', reject);
file.on('error', reject); file.on('error', reject);
dump.on('close', (code) => {
dumpCode = code;
if (code !== 0) gzip.stdin.end();
});
file.on('close', () => { file.on('close', () => {
if (dumpErr.trim()) console.log('[backup] dump stderr:', dumpErr.trim()); if (dumpCode !== 0) {
resolve(); reject(new Error(`${dumpBin} exit ${dumpCode}: ${dumpErr.trim()}`));
} else {
resolve();
}
}); });
}); });