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:
+11
-2
@@ -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();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user