spindb 0.68.7 → 0.68.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/commands/create.js +4 -1
- package/dist/cli/commands/create.js.map +1 -1
- package/dist/cli/commands/menu/backup-handlers.js +8 -2
- package/dist/cli/commands/menu/backup-handlers.js.map +1 -1
- package/dist/cli/commands/restore.js +11 -1
- package/dist/cli/commands/restore.js.map +1 -1
- package/dist/config/version.js +1 -1
- package/dist/core/mysql-family-binary-resolver.js +84 -0
- package/dist/core/mysql-family-binary-resolver.js.map +1 -0
- package/dist/core/pull-manager.js +12 -2
- package/dist/core/pull-manager.js.map +1 -1
- package/dist/core/server-handshake.js +250 -0
- package/dist/core/server-handshake.js.map +1 -0
- package/dist/engines/mysql/backup.js +13 -29
- package/dist/engines/mysql/backup.js.map +1 -1
- package/dist/engines/mysql/dump-normalize.js +201 -0
- package/dist/engines/mysql/dump-normalize.js.map +1 -0
- package/dist/engines/mysql/index.js +214 -10
- package/dist/engines/mysql/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MySQL Family Binary Resolver
|
|
3
|
+
*
|
|
4
|
+
* Resolves a MySQL or MariaDB client binary out of spindb's own binary cache
|
|
5
|
+
* (`~/.spindb/bin/<engine>-<version>-<platform>-<arch>/bin/`), preferring the
|
|
6
|
+
* version the caller asks for.
|
|
7
|
+
*
|
|
8
|
+
* This is the MySQL-family twin of `core/pg-binary-resolver.ts`, and it exists
|
|
9
|
+
* for the same reason: `configManager.getBinaryPath('mysqldump')` stores ONE
|
|
10
|
+
* path per tool name with no version dimension, so on a machine with several
|
|
11
|
+
* installed versions it returns whichever one was registered first and still
|
|
12
|
+
* exists on disk. That is how a MySQL 9.7.2 container ended up dumping through
|
|
13
|
+
* `mysql-9.6.0/bin/mysqldump`: nothing was wrong with the 9.6 binary, it was
|
|
14
|
+
* simply the entry already in `config.json`.
|
|
15
|
+
*
|
|
16
|
+
* As with PostgreSQL, spindb owns its binaries: we never probe Homebrew, APT,
|
|
17
|
+
* or any other system package manager here. The globally registered path stays
|
|
18
|
+
* available as the caller's last resort.
|
|
19
|
+
*/
|
|
20
|
+
import { existsSync } from 'fs';
|
|
21
|
+
import { join } from 'path';
|
|
22
|
+
import { paths } from '../config/paths.js';
|
|
23
|
+
import { platformService } from './platform-service.js';
|
|
24
|
+
import { compareVersions, isVersionPrefixOf } from './version-utils.js';
|
|
25
|
+
/**
|
|
26
|
+
* Choose one version out of the installed ones.
|
|
27
|
+
*
|
|
28
|
+
* Pure, so the preference order is unit tested without a filesystem:
|
|
29
|
+
* 1. the requested version exactly,
|
|
30
|
+
* 2. the newest install the requested version is a prefix of, matched on
|
|
31
|
+
* version-segment boundaries (`isVersionPrefixOf`) so `11.8` never matches
|
|
32
|
+
* `11.80`,
|
|
33
|
+
* 3. the newest installed version.
|
|
34
|
+
*
|
|
35
|
+
* Returns null only when nothing is installed.
|
|
36
|
+
*/
|
|
37
|
+
export function selectInstalledVersion(options) {
|
|
38
|
+
const { installed, preferVersion } = options;
|
|
39
|
+
if (installed.length === 0)
|
|
40
|
+
return null;
|
|
41
|
+
const newestFirst = [...installed].sort((a, b) => compareVersions(b, a));
|
|
42
|
+
if (preferVersion) {
|
|
43
|
+
const exact = newestFirst.find((version) => version === preferVersion);
|
|
44
|
+
if (exact)
|
|
45
|
+
return exact;
|
|
46
|
+
const sameLine = newestFirst.find((version) => isVersionPrefixOf(preferVersion, version));
|
|
47
|
+
if (sameLine)
|
|
48
|
+
return sameLine;
|
|
49
|
+
}
|
|
50
|
+
return newestFirst[0];
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* List the installed versions of an engine that actually ship the given tool,
|
|
54
|
+
* newest first.
|
|
55
|
+
*/
|
|
56
|
+
export function listInstalledMysqlFamilyBinaries(options) {
|
|
57
|
+
const { engine, tool } = options;
|
|
58
|
+
const { platform, arch } = platformService.getPlatformInfo();
|
|
59
|
+
const ext = platformService.getExecutableExtension();
|
|
60
|
+
return paths
|
|
61
|
+
.findInstalledBinaries(engine, platform, arch)
|
|
62
|
+
.map((entry) => ({
|
|
63
|
+
version: entry.version,
|
|
64
|
+
path: join(entry.path, 'bin', `${tool}${ext}`),
|
|
65
|
+
}))
|
|
66
|
+
.filter((candidate) => existsSync(candidate.path));
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Resolve a bundled MySQL-family binary, preferring `preferVersion`.
|
|
70
|
+
*
|
|
71
|
+
* Returns null when the engine has no installed version carrying that tool,
|
|
72
|
+
* which is the caller's cue to fall back or to download.
|
|
73
|
+
*/
|
|
74
|
+
export function resolveBundledMysqlFamilyBinary(options) {
|
|
75
|
+
const candidates = listInstalledMysqlFamilyBinaries(options);
|
|
76
|
+
const version = selectInstalledVersion({
|
|
77
|
+
installed: candidates.map((candidate) => candidate.version),
|
|
78
|
+
preferVersion: options.preferVersion,
|
|
79
|
+
});
|
|
80
|
+
if (!version)
|
|
81
|
+
return null;
|
|
82
|
+
return candidates.find((candidate) => candidate.version === version) ?? null;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=mysql-family-binary-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mysql-family-binary-resolver.js","sourceRoot":"","sources":["../../core/mysql-family-binary-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAA;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AASpE;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAGtC;IACC,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,OAAO,CAAA;IAC5C,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAEvC,MAAM,WAAW,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAExE,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,KAAK,aAAa,CAAC,CAAA;QACtE,IAAI,KAAK;YAAE,OAAO,KAAK,CAAA;QAEvB,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAC5C,iBAAiB,CAAC,aAAa,EAAE,OAAO,CAAC,CAC1C,CAAA;QACD,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAA;IAC/B,CAAC;IAED,OAAO,WAAW,CAAC,CAAC,CAAC,CAAA;AACvB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gCAAgC,CAAC,OAGhD;IACC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAA;IAChC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC,eAAe,EAAE,CAAA;IAC5D,MAAM,GAAG,GAAG,eAAe,CAAC,sBAAsB,EAAE,CAAA;IAEpD,OAAO,KAAK;SACT,qBAAqB,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC;SAC7C,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACf,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,GAAG,GAAG,EAAE,CAAC;KAC/C,CAAC,CAAC;SACF,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAA;AACtD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,+BAA+B,CAAC,OAI/C;IACC,MAAM,UAAU,GAAG,gCAAgC,CAAC,OAAO,CAAC,CAAA;IAC5D,MAAM,OAAO,GAAG,sBAAsB,CAAC;QACrC,SAAS,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC;QAC3D,aAAa,EAAE,OAAO,CAAC,aAAa;KACrC,CAAC,CAAA;IAEF,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAA;IACzB,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,IAAI,CAAA;AAC9E,CAAC"}
|
|
@@ -210,7 +210,12 @@ export class PullManager {
|
|
|
210
210
|
// --- PULL REMOTE ---
|
|
211
211
|
// Step 4: Dump remote to temp file
|
|
212
212
|
logDebug(`Dumping remote database to: ${tempRemoteDump}`);
|
|
213
|
-
await engine.dumpFromConnectionString(options.fromUrl, tempRemoteDump,
|
|
213
|
+
await engine.dumpFromConnectionString(options.fromUrl, tempRemoteDump, {
|
|
214
|
+
...buildRemoteDumpOptions(options),
|
|
215
|
+
// Prefer a client tool matching this container's version when the
|
|
216
|
+
// engine keeps several installed.
|
|
217
|
+
targetVersion: config.version,
|
|
218
|
+
});
|
|
214
219
|
tx.addRollback({
|
|
215
220
|
description: 'Delete remote dump temp file',
|
|
216
221
|
execute: async () => {
|
|
@@ -359,7 +364,12 @@ export class PullManager {
|
|
|
359
364
|
});
|
|
360
365
|
// Step 3: Dump remote to temp file
|
|
361
366
|
logDebug(`Dumping remote database to: ${tempRemoteDump}`);
|
|
362
|
-
await engine.dumpFromConnectionString(options.fromUrl, tempRemoteDump,
|
|
367
|
+
await engine.dumpFromConnectionString(options.fromUrl, tempRemoteDump, {
|
|
368
|
+
...buildRemoteDumpOptions(options),
|
|
369
|
+
// Prefer a client tool matching this container's version when the
|
|
370
|
+
// engine keeps several installed.
|
|
371
|
+
targetVersion: config.version,
|
|
372
|
+
});
|
|
363
373
|
tx.addRollback({
|
|
364
374
|
description: 'Delete remote dump temp file',
|
|
365
375
|
execute: async () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pull-manager.js","sourceRoot":"","sources":["../../core/pull-manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pull-manager.js","sourceRoot":"","sources":["../../core/pull-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Server Handshake Probing
|
|
3
|
+
*
|
|
4
|
+
* Engine-agnostic: reads the greeting a database server sends the moment a TCP
|
|
5
|
+
* connection is opened, before any credentials are exchanged, so spindb can
|
|
6
|
+
* pick the client tool that matches the SERVER it is about to talk to.
|
|
7
|
+
*
|
|
8
|
+
* This is the same principle PostgreSQL already follows in
|
|
9
|
+
* `engines/postgresql/version-validator.ts`: the tool that takes a remote dump
|
|
10
|
+
* follows the SOURCE server, not the target container. PostgreSQL only has to
|
|
11
|
+
* follow a version, because there is one `pg_dump`. The MySQL family has two
|
|
12
|
+
* incompatible client families, so it has to follow a flavor as well as a
|
|
13
|
+
* version, and the flavor is not in the connection string: a MariaDB server
|
|
14
|
+
* and a MySQL server are both reached through `mysql://`.
|
|
15
|
+
*
|
|
16
|
+
* Reading the greeting is the only way to tell them apart without a successful
|
|
17
|
+
* login. We never write to the socket:
|
|
18
|
+
* - MySQL and MariaDB both send the initial handshake packet unprompted, and
|
|
19
|
+
* TLS is negotiated in the client's REPLY, so a plain read works even against
|
|
20
|
+
* a server that requires TLS.
|
|
21
|
+
* - No credentials are sent, so a probe cannot fail authentication, and a
|
|
22
|
+
* caller with a wrong password still learns the flavor.
|
|
23
|
+
*/
|
|
24
|
+
import { Socket } from 'net';
|
|
25
|
+
import { logDebug } from './error-handler.js';
|
|
26
|
+
const HEADER_BYTES = 4;
|
|
27
|
+
const HANDSHAKE_PROTOCOL_V10 = 0x0a;
|
|
28
|
+
const ERR_PACKET_HEADER = 0xff;
|
|
29
|
+
const SQLSTATE_MARKER = 0x23; // '#'
|
|
30
|
+
const SQLSTATE_BYTES = 6; // marker + 5 characters
|
|
31
|
+
const DEFAULT_TIMEOUT_MS = 5000;
|
|
32
|
+
/**
|
|
33
|
+
* Parse a MySQL-protocol initial handshake packet.
|
|
34
|
+
*
|
|
35
|
+
* Pure, so the packet shapes are unit tested against fixture bytes rather than
|
|
36
|
+
* against a running server.
|
|
37
|
+
*
|
|
38
|
+
* Packet layout (both MySQL and MariaDB):
|
|
39
|
+
* bytes 0-2 payload length, little endian
|
|
40
|
+
* byte 3 sequence id
|
|
41
|
+
* byte 4 protocol version (0x0a), or 0xff for an ERR packet
|
|
42
|
+
* bytes 5.. NUL-terminated server version string
|
|
43
|
+
*
|
|
44
|
+
* A server that refuses the connection outright (host blocked, too many
|
|
45
|
+
* connections, TLS-only proxies) answers with an ERR packet INSTEAD of a
|
|
46
|
+
* greeting, which is why that is a parse outcome and not an exception.
|
|
47
|
+
*/
|
|
48
|
+
export function parseMysqlWireHandshake(buffer) {
|
|
49
|
+
if (buffer.length < HEADER_BYTES + 1) {
|
|
50
|
+
return { kind: 'incomplete' };
|
|
51
|
+
}
|
|
52
|
+
const payloadLength = buffer.readUIntLE(0, 3);
|
|
53
|
+
if (buffer.length < HEADER_BYTES + payloadLength) {
|
|
54
|
+
return { kind: 'incomplete' };
|
|
55
|
+
}
|
|
56
|
+
const payload = buffer.subarray(HEADER_BYTES, HEADER_BYTES + payloadLength);
|
|
57
|
+
// A header that declares a zero-length payload carries no protocol byte, so
|
|
58
|
+
// every read below would be `undefined`. Classify it before touching
|
|
59
|
+
// `payload[0]`: the packet is already complete, so asking for more bytes
|
|
60
|
+
// would only stall until the timeout.
|
|
61
|
+
if (payload.length === 0) {
|
|
62
|
+
return {
|
|
63
|
+
kind: 'error',
|
|
64
|
+
errorCode: null,
|
|
65
|
+
message: 'Server sent an empty packet instead of a greeting. ' +
|
|
66
|
+
'This does not look like a MySQL-protocol server.',
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
if (payload[0] === ERR_PACKET_HEADER) {
|
|
70
|
+
return parseErrPacket(payload);
|
|
71
|
+
}
|
|
72
|
+
if (payload[0] !== HANDSHAKE_PROTOCOL_V10) {
|
|
73
|
+
return {
|
|
74
|
+
kind: 'error',
|
|
75
|
+
errorCode: null,
|
|
76
|
+
message: `Unexpected handshake protocol version 0x${payload[0].toString(16)} ` +
|
|
77
|
+
'(expected 0x0a). This does not look like a MySQL-protocol server.',
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
// The payload is already complete at this point (the header's declared
|
|
81
|
+
// length was satisfied above), so a missing NUL terminator is not "more
|
|
82
|
+
// bytes are coming" - it is a packet that cannot be a greeting. Reporting
|
|
83
|
+
// `incomplete` here stalls the probe for the whole timeout on a server that
|
|
84
|
+
// is never going to send anything else, which is exactly the trap the
|
|
85
|
+
// empty-payload case above exists to avoid.
|
|
86
|
+
const terminator = payload.indexOf(0x00, 1);
|
|
87
|
+
if (terminator === -1) {
|
|
88
|
+
return {
|
|
89
|
+
kind: 'error',
|
|
90
|
+
errorCode: null,
|
|
91
|
+
message: 'Server sent a greeting with no server version string. ' +
|
|
92
|
+
'This does not look like a MySQL-protocol server.',
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
return {
|
|
96
|
+
kind: 'handshake',
|
|
97
|
+
protocolVersion: payload[0],
|
|
98
|
+
serverVersion: payload.toString('utf8', 1, terminator),
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
function parseErrPacket(payload) {
|
|
102
|
+
if (payload.length < 3) {
|
|
103
|
+
return {
|
|
104
|
+
kind: 'error',
|
|
105
|
+
errorCode: null,
|
|
106
|
+
message: 'Server rejected the connection without a message',
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
const errorCode = payload.readUInt16LE(1);
|
|
110
|
+
// A connection-phase ERR packet usually carries no SQL state, but a server
|
|
111
|
+
// that has already negotiated CLIENT_PROTOCOL_41 prefixes one as "#HY000".
|
|
112
|
+
const hasSqlState = payload[3] === SQLSTATE_MARKER;
|
|
113
|
+
const messageStart = hasSqlState ? 3 + SQLSTATE_BYTES : 3;
|
|
114
|
+
return {
|
|
115
|
+
kind: 'error',
|
|
116
|
+
errorCode,
|
|
117
|
+
message: payload.toString('utf8', messageStart).trim(),
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Open a TCP connection, read the server's greeting, and return the version
|
|
122
|
+
* string it announces (for example `9.7.2`, `11.8.8-MariaDB`, or
|
|
123
|
+
* `11.8.0-MariaDB` from a ProxySQL front end).
|
|
124
|
+
*
|
|
125
|
+
* Nothing is ever written to the socket, and the socket is destroyed as soon
|
|
126
|
+
* as the version is known.
|
|
127
|
+
*
|
|
128
|
+
* @throws when the server cannot be reached, refuses the connection, or does
|
|
129
|
+
* not speak the MySQL wire protocol. Callers that only want a best-effort
|
|
130
|
+
* hint should catch and fall back.
|
|
131
|
+
*/
|
|
132
|
+
export async function readMysqlWireServerVersion(options) {
|
|
133
|
+
const { host, port, timeoutMs = DEFAULT_TIMEOUT_MS } = options;
|
|
134
|
+
return new Promise((resolve, reject) => {
|
|
135
|
+
const socket = new Socket();
|
|
136
|
+
let buffer = Buffer.alloc(0);
|
|
137
|
+
let settled = false;
|
|
138
|
+
const finish = (error, version) => {
|
|
139
|
+
if (settled)
|
|
140
|
+
return;
|
|
141
|
+
settled = true;
|
|
142
|
+
socket.destroy();
|
|
143
|
+
if (error) {
|
|
144
|
+
reject(error);
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
resolve(version);
|
|
148
|
+
}
|
|
149
|
+
};
|
|
150
|
+
socket.setTimeout(timeoutMs);
|
|
151
|
+
socket.on('timeout', () => {
|
|
152
|
+
finish(new Error(`Timed out after ${timeoutMs}ms waiting for a greeting from ${host}:${port}`));
|
|
153
|
+
});
|
|
154
|
+
socket.on('error', (error) => {
|
|
155
|
+
finish(new Error(`Could not reach ${host}:${port}: ${error.message}`));
|
|
156
|
+
});
|
|
157
|
+
socket.on('close', () => {
|
|
158
|
+
finish(new Error(`${host}:${port} closed the connection before sending a greeting`));
|
|
159
|
+
});
|
|
160
|
+
socket.on('data', (chunk) => {
|
|
161
|
+
buffer = Buffer.concat([buffer, chunk]);
|
|
162
|
+
// A throw in here is an uncaught exception on the socket, not a rejected
|
|
163
|
+
// promise, so it would take the whole process down instead of reaching
|
|
164
|
+
// the caller's catch. The probe is best-effort: a parser it cannot trust
|
|
165
|
+
// must still end as a rejected read.
|
|
166
|
+
let parsed;
|
|
167
|
+
try {
|
|
168
|
+
parsed = parseMysqlWireHandshake(buffer);
|
|
169
|
+
}
|
|
170
|
+
catch (error) {
|
|
171
|
+
finish(new Error(`Could not read the greeting from ${host}:${port}: ` +
|
|
172
|
+
(error instanceof Error ? error.message : String(error))));
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
if (parsed.kind === 'incomplete')
|
|
176
|
+
return;
|
|
177
|
+
if (parsed.kind === 'error') {
|
|
178
|
+
finish(new Error(`${host}:${port} refused the connection: ${parsed.message}`));
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
logDebug('Read MySQL wire server version', {
|
|
182
|
+
host,
|
|
183
|
+
port,
|
|
184
|
+
serverVersion: parsed.serverVersion,
|
|
185
|
+
});
|
|
186
|
+
finish(null, parsed.serverVersion);
|
|
187
|
+
});
|
|
188
|
+
socket.connect(port, host);
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Classify a MySQL-protocol version string into a flavor.
|
|
193
|
+
*
|
|
194
|
+
* MariaDB 10.x announces itself as `5.5.5-10.11.15-MariaDB`: the `5.5.5-`
|
|
195
|
+
* prefix is a compatibility lie for old replication clients, dropped in
|
|
196
|
+
* MariaDB 11. Strip it before reading the version, or every MariaDB 10 server
|
|
197
|
+
* looks like MySQL 5.5.
|
|
198
|
+
*
|
|
199
|
+
* Anything that starts with a number but never says MariaDB is treated as
|
|
200
|
+
* MySQL, which is what a Percona or an AWS build wants: they take the same
|
|
201
|
+
* mysqldump.
|
|
202
|
+
*/
|
|
203
|
+
export function classifyMysqlFamilyServer(version) {
|
|
204
|
+
const rawVersion = version.trim();
|
|
205
|
+
const stripped = rawVersion.replace(/^5\.5\.5-/, '');
|
|
206
|
+
const numeric = stripped.match(/^(\d+)\.(\d+)/);
|
|
207
|
+
let flavor = 'unknown';
|
|
208
|
+
if (/mariadb/i.test(stripped)) {
|
|
209
|
+
flavor = 'mariadb';
|
|
210
|
+
}
|
|
211
|
+
else if (numeric) {
|
|
212
|
+
flavor = 'mysql';
|
|
213
|
+
}
|
|
214
|
+
return {
|
|
215
|
+
flavor,
|
|
216
|
+
version: stripped,
|
|
217
|
+
rawVersion,
|
|
218
|
+
majorVersion: numeric ? parseInt(numeric[1], 10) : null,
|
|
219
|
+
minorVersion: numeric ? parseInt(numeric[2], 10) : null,
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Best-effort flavor probe: never throws.
|
|
224
|
+
*
|
|
225
|
+
* A source that cannot be probed is reported as `unknown`, which every caller
|
|
226
|
+
* treats as "keep doing what you did before". A probe failure must never be
|
|
227
|
+
* the reason a dump does not happen - the dump tool itself reports a real
|
|
228
|
+
* connection problem far better than a greeting read can.
|
|
229
|
+
*/
|
|
230
|
+
export async function probeMysqlFamilyServer(options) {
|
|
231
|
+
try {
|
|
232
|
+
const version = await readMysqlWireServerVersion(options);
|
|
233
|
+
return classifyMysqlFamilyServer(version);
|
|
234
|
+
}
|
|
235
|
+
catch (error) {
|
|
236
|
+
logDebug('MySQL family server probe failed', {
|
|
237
|
+
host: options.host,
|
|
238
|
+
port: options.port,
|
|
239
|
+
error: error instanceof Error ? error.message : String(error),
|
|
240
|
+
});
|
|
241
|
+
return {
|
|
242
|
+
flavor: 'unknown',
|
|
243
|
+
version: '',
|
|
244
|
+
rawVersion: '',
|
|
245
|
+
majorVersion: null,
|
|
246
|
+
minorVersion: null,
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
//# sourceMappingURL=server-handshake.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-handshake.js","sourceRoot":"","sources":["../../core/server-handshake.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,16 +4,14 @@
|
|
|
4
4
|
* Creates database backups in SQL or compressed (.dump = gzipped SQL) format using mysqldump.
|
|
5
5
|
*/
|
|
6
6
|
import { spawn } from 'child_process';
|
|
7
|
-
import { createWriteStream
|
|
7
|
+
import { createWriteStream } from 'fs';
|
|
8
8
|
import { stat } from 'fs/promises';
|
|
9
|
-
import { join } from 'path';
|
|
10
9
|
import { createGzip } from 'zlib';
|
|
11
10
|
import { pipeline } from 'stream/promises';
|
|
12
11
|
import { configManager } from '../../core/config-manager.js';
|
|
13
|
-
import {
|
|
12
|
+
import { resolveBundledMysqlFamilyBinary } from '../../core/mysql-family-binary-resolver.js';
|
|
13
|
+
import { getWindowsSpawnOptions, isWindows } from '../../core/platform-service.js';
|
|
14
14
|
import { getEngineDefaults } from '../../config/defaults.js';
|
|
15
|
-
import { paths } from '../../config/paths.js';
|
|
16
|
-
import { normalizeVersion } from './version-maps.js';
|
|
17
15
|
import { getDefaultUsername, loadCredentials, } from '../../core/credential-manager.js';
|
|
18
16
|
import { Engine, } from '../../types/index.js';
|
|
19
17
|
const engineDef = getEngineDefaults('mysql');
|
|
@@ -21,42 +19,28 @@ const engineDef = getEngineDefaults('mysql');
|
|
|
21
19
|
* Get mysqldump path for a specific MySQL version.
|
|
22
20
|
*
|
|
23
21
|
* Prioritizes SpinDB-managed binaries that match the container's version,
|
|
24
|
-
* falling back to
|
|
22
|
+
* falling back to the globally registered mysqldump only if no bundled binary
|
|
23
|
+
* carries the tool. The version preference itself lives in
|
|
24
|
+
* `core/mysql-family-binary-resolver.ts`, shared with the remote dump path, so
|
|
25
|
+
* "which mysqldump" is answered the same way everywhere.
|
|
25
26
|
*
|
|
26
27
|
* @param containerVersion - The container's MySQL version (e.g., "8" or "8.4.3")
|
|
27
28
|
* @returns Path to the version-matched mysqldump binary
|
|
28
29
|
*/
|
|
29
30
|
async function getMysqldumpPath(containerVersion) {
|
|
30
|
-
|
|
31
|
-
const fullVersion = normalizeVersion(containerVersion);
|
|
32
|
-
// Get platform info for building the binary path
|
|
33
|
-
const platformInfo = platformService.getPlatformInfo();
|
|
34
|
-
const ext = platformInfo.platform === 'win32' ? '.exe' : '';
|
|
35
|
-
// Try to find SpinDB-managed mysqldump for the matching version
|
|
36
|
-
const versionedBinPath = paths.getBinaryPath({
|
|
31
|
+
const bundled = resolveBundledMysqlFamilyBinary({
|
|
37
32
|
engine: 'mysql',
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
arch: platformInfo.arch,
|
|
33
|
+
tool: 'mysqldump',
|
|
34
|
+
preferVersion: containerVersion,
|
|
41
35
|
});
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
return versionedMysqldump;
|
|
45
|
-
}
|
|
46
|
-
// Try to find any installed version for this major version
|
|
47
|
-
const majorVersion = containerVersion.split('.')[0];
|
|
48
|
-
const installed = paths.findInstalledBinaryForMajor('mysql', majorVersion, platformInfo.platform, platformInfo.arch);
|
|
49
|
-
if (installed) {
|
|
50
|
-
const installedMysqldump = join(installed.path, 'bin', `mysqldump${ext}`);
|
|
51
|
-
if (existsSync(installedMysqldump)) {
|
|
52
|
-
return installedMysqldump;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
36
|
+
if (bundled)
|
|
37
|
+
return bundled.path;
|
|
55
38
|
// Fall back to globally registered mysqldump (system binary)
|
|
56
39
|
const systemMysqldump = await configManager.getBinaryPath('mysqldump');
|
|
57
40
|
if (systemMysqldump) {
|
|
58
41
|
return systemMysqldump;
|
|
59
42
|
}
|
|
43
|
+
const majorVersion = containerVersion.split('.')[0];
|
|
60
44
|
throw new Error(`mysqldump not found for MySQL ${containerVersion}. ` +
|
|
61
45
|
`Either download MySQL binaries with 'spindb create --engine mysql --version ${majorVersion}' ` +
|
|
62
46
|
'or ensure MySQL binaries are downloaded:\n' +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backup.js","sourceRoot":"","sources":["../../../engines/mysql/backup.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAAqB,MAAM,eAAe,CAAA;AACxD,OAAO,EAAE,iBAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"backup.js","sourceRoot":"","sources":["../../../engines/mysql/backup.ts"],"names":[],"mappings":"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"}
|