fix mongo connection while backup
This commit is contained in:
parent
abee37a52c
commit
85fc6b6a86
@ -11,7 +11,7 @@ const getDirectories = async source =>
|
||||
.filter(dirent => dirent.isDirectory())
|
||||
.map(dirent => dirent.name);
|
||||
|
||||
async function performBackup(databaseName) {
|
||||
async function performBackup(databaseName, uri) {
|
||||
try {
|
||||
const timestamp = moment().format("DD.MM.YYYY_HHmmss");
|
||||
const { backupFolder } = await prompt([
|
||||
@ -24,37 +24,64 @@ async function performBackup(databaseName) {
|
||||
]);
|
||||
|
||||
const folderName = "dumps/" + backupFolder;
|
||||
const backupCommand = `mongodump --db ${databaseName} --out ${folderName}`;
|
||||
|
||||
console.log(`Creating backup of database ${databaseName}...`);
|
||||
await exec(backupCommand);
|
||||
let backupCommand = spawn("mongodump", [
|
||||
"--authenticationDatabase=admin",
|
||||
"--uri",
|
||||
uri,
|
||||
"--db",
|
||||
databaseName,
|
||||
"--out",
|
||||
folderName,
|
||||
]);
|
||||
|
||||
console.log(`Backup created successfully in folder ${folderName}.`);
|
||||
backupCommand.stdout.on("data", function (data) {
|
||||
console.log(data.toString());
|
||||
});
|
||||
|
||||
backupCommand.stderr.on("data", function (data) {
|
||||
console.log(data.toString());
|
||||
});
|
||||
|
||||
const waitForEnd = new Promise((resolve, reject) => {
|
||||
backupCommand.on("exit", function (code) {
|
||||
console.log("child process exited with code " + code.toString());
|
||||
console.log(`Search you backup in folder ${folderName}.`);
|
||||
resolve();
|
||||
});
|
||||
});
|
||||
await waitForEnd;
|
||||
return;
|
||||
} catch (error) {
|
||||
console.error("An error occurred during the backup process:", error);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
function performRestore(restoreFolder, uri) {
|
||||
async function performRestore(restoreFolder, uri) {
|
||||
try {
|
||||
console.log(`Restoring database from folder ${restoreFolder}...`);
|
||||
let ls = spawn("mongorestore", ["--uri", uri, "--drop", restoreFolder]);
|
||||
let restoreCommand = spawn("mongorestore", ["--uri", uri, "--drop", restoreFolder]);
|
||||
|
||||
ls.stdout.on("data", function (data) {
|
||||
restoreCommand.stdout.on("data", function (data) {
|
||||
console.log(data.toString());
|
||||
});
|
||||
|
||||
ls.stderr.on("data", function (data) {
|
||||
restoreCommand.stderr.on("data", function (data) {
|
||||
console.log(data.toString());
|
||||
});
|
||||
|
||||
ls.on("exit", function (code) {
|
||||
const waitForEnd = new Promise((resolve, reject) => {
|
||||
restoreCommand.on("exit", function (code) {
|
||||
console.log("child process exited with code " + code.toString());
|
||||
resolve();
|
||||
});
|
||||
|
||||
console.log("Database restored successfully.");
|
||||
});
|
||||
await waitForEnd;
|
||||
return;
|
||||
} catch (error) {
|
||||
console.error("An error occurred during the restore process:", error);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@ -161,6 +188,7 @@ async function main() {
|
||||
await client.connect();
|
||||
console.log("Connected to MongoDB successfully.");
|
||||
|
||||
while (true) {
|
||||
const { action } = await prompt([
|
||||
{
|
||||
type: "list",
|
||||
@ -184,7 +212,7 @@ async function main() {
|
||||
},
|
||||
]);
|
||||
|
||||
await performBackup(databaseName);
|
||||
await performBackup(databaseName, uri);
|
||||
} else if (action === "Restore") {
|
||||
try {
|
||||
const dirs = await getDirectories("./dumps");
|
||||
@ -230,6 +258,8 @@ async function main() {
|
||||
await client.close();
|
||||
console.log("Disconnected from MongoDB.");
|
||||
}
|
||||
console.log("\nPress Ctrl+C to exit\n");
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("An error occurred:", error);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user