Vorwort
Vor einiger Zeit passierte etwas, das mich zum Lachen oder Weinen brachte. Das auf dem Centos
-Server bereitgestellte Projekt musste erneut hochgeladen werden· . Also habe ich den folgenden Befehl ausgeführt: Centos
服务器上的项目,因为需要重新上传· 部署
,所以我执行了下面一段命令:
rm -rf /*
当我按下回车之后,发现终端闪过的一行行代码,突然感觉事情并不简单,情急之下,赶紧 ctrl c
中断终端,中断之后,便开始通过 fpt
上传文件,却发现 ftp
毫无反应,这下慌了,不会把系统给干没了吧!
接下来我决定 重启
服务器,可是,emmm...,启动不了了!真的把系统给干没了!询问大佬们之后,听说 阿里云
如果存在 快照
,则可以恢复,可是我并没有保存过快照!直接GG,程序没了倒无所谓,可是 数据库没了。
这时我意识到,需要做个 定时任务
,定时 备份
数据库,结合之前封装的 Email
类,将备份的数据库发送至邮箱。
开发部署
因为我后端使用的是 nodejs
,这里就使用 nodejs
编写定时任务吧。
安装依赖
这里需要 node-schedule
依赖来执行定时任务,需要 child_process
依赖来执行备份命令。
npm i node-schedule child_process
编写代码
在 src/command
目录下新建一个 BackupDB.ts
文件,在此文件中引入依赖:
import schedule from "node-schedule"; import { spawn } from "child_process"; import fs from "fs";
定义一个方法 backupDb
,所有的备份操作都在此方法内:
export const backupDb = () => {}
在方法内使用 时间戳
定义备份 唯一
文件名,并 创建流
:
export const backupDb = () => { const dumpFileName = `${Math.round(Date.now() / 1000)}.dump.sql`; const writeStream = fs.createWriteStream(dumpFileName); }
在方法内定义备份脚本:
export const backupDb = () => { const dumpFileName = `${Math.round(Date.now() / 1000)}.dump.sql`; const writeStream = fs.createWriteStream(dumpFileName); const dump = spawn("mysqldump",[ "-u", "你的mysql账户名", "-p", "你的mysql账户密码", "所要备份的数据库名" ]) }
接下来定时 执行备份
命令:
export const backupDb = () => { const dumpFileName = `${Math.round(Date.now() / 1000)}.dump.sql`; const writeStream = fs.createWriteStream(dumpFileName); const dump = spawn("mysqldump",[ "-u", "你的mysql账户名", "-p", "你的mysql账户密码", "所要备份的数据库名" ]) schedule.scheduleJob("0 0 1 * * *", function(){ dump.stdout.pipe(writeStream) .on("finish",() => { console.log("备份成功") }) .on("error",() => { console.log("备份失败") }) }) }
当然这里写死的数据还可以作为函数参数可进行控制,另外这里的 0 0 1 * * *
表示 每天凌晨1点
备份,具体时间格式可参考下图,或官方文档:
在备份成功的回调中,调用 Email
类将备份内容发送至 邮箱
,这里不作为重点就暂且不写。
最后在 src/command/index.js
文件中 引入
备份方法并 调用
:
import { backupDb } from "./BackupDB"; backupDb();
pm2部署
这里需要先全局安装 pm2
:
npm i pm2 -g
pm2
部署的命令格式为:pm2 start [nodejs文件] --name [别名]
:
pm2 start ./src/command/index.js --name backupDb
部署完成之后,可以通过 pm2 ls
命令查看。
至此,将在 每天凌晨1点
对数据库进行 备份
,并发送至 邮箱
rrree
fpt
hochzuladen, stellte jedoch fest, dass ftp
nicht reagierte. Jetzt geriet ich in Panik und das System wurde nicht zerstört! 🎜🎜Als nächstes habe ich beschlossen, den Server neu zu starten
, aber, emmm..., er konnte nicht gestartet werden! Es hat das System wirklich zerstört! Nachdem ich die Experten gefragt hatte, hörte ich, dass Alibaba Cloud
wiederhergestellt werden kann, wenn ein Snapshot
vorhanden ist, aber ich habe den Snapshot nicht gespeichert! Nur GG, es spielt keine Rolle, ob das Programm weg ist, aber die Datenbank ist weg. 🎜🎜Zu diesem Zeitpunkt wurde mir klar, dass ich eine geplante Aufgabe
erstellen musste, um die Datenbank regelmäßig zu sichern
, kombiniert mit der zuvor gekapselten Email
-Klasse , die gesicherte Datenbank. An E-Mail senden. 🎜🎜Entwicklung und Bereitstellung🎜🎜Da mein Backend nodejs
verwendet, werde ich nodejs
verwenden, um hier geplante Aufgaben zu schreiben. 🎜Abhängigkeiten installieren
🎜Hier benötigen Sie die Abhängigkeitnode-schedule
, um geplante Aufgaben auszuführen, und die Abhängigkeit child_process
, um den Sicherungsbefehl auszuführen. 🎜rrreeeCode schreiben
🎜Erstellen Sie eine neue DateiBackupDB.ts
im Verzeichnis src/command
und führen Sie Abhängigkeiten in dieser Datei ein: 🎜rrreee🎜Definition Eine Methode backupDb
, alle Sicherungsvorgänge sind innerhalb dieser Methode: 🎜rrreee🎜Verwenden Sie timestamp
innerhalb der Methode, um den eindeutigen
Dateinamen der Sicherung zu definieren. Und Stream erstellen
: 🎜rrreee🎜Definieren Sie das Sicherungsskript in der Methode: 🎜rrreee🎜 Als Nächstes planen Sie den Befehl Sicherung ausführen
: 🎜rrreee🎜Natürlich die fest codierten Daten Hier können auch Funktionsparameter verwendet werden. Außerdem bedeutet 0 0 1 * * *
hier Sicherung jeden Tag um 1 Uhr morgens
. Bitte beachten Sie die folgende Abbildung oder das offizielle Dokument: 🎜🎜 ![So implementieren Sie Node Geplante Sicherung von MySQL“ />🎜🎜Im Rückruf einer erfolgreichen Sicherung rufen Sie die Klasse <code>Email</code> auf, um den Sicherungsinhalt an die <code>email</code> zu senden. Dies ist also nicht der Fokus Ich werde vorerst nicht darüber schreiben. 🎜🎜Schließlich <code>führen</code> Sie die Sicherungsmethode in der Datei <code>src/command/index.js</code> ein und <code>rufen</code> auf: 🎜rrreee<h4>pm2-Bereitstellung< /h4 >🎜Sie müssen <code>pm2</code> zuerst global installieren: 🎜rrreee🎜<code>pm2</code> Das Format des Bereitstellungsbefehls lautet: <code>pm2 start [nodejs-Datei] --name [alias ]</ code>:🎜rrreee🎜Nachdem die Bereitstellung abgeschlossen ist, können Sie sie über den Befehl <code>pm2 ls</code> anzeigen. 🎜🎜Zu diesem Zeitpunkt wird die Datenbank jeden Tag um <code>1 Uhr morgens</code> <code>gesichert</code> und an <code>E-Mail</code> gesendet. 🎜](https://img.php.cn/upload/article/000/465/014/168571789193082.png?x-oss-process=image/resize,p_40)
Das obige ist der detaillierte Inhalt vonSo implementieren Sie eine geplante Sicherung von MySQL in Node. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

InnoDbbufferpool reduziert die Scheiben -E/A durch Zwischenspeicherung von Daten und Indizieren von Seiten und Verbesserung der Datenbankleistung. Das Arbeitsprinzip umfasst: 1. Daten lesen: Daten von Bufferpool lesen; 2. Daten schreiben: Schreiben Sie nach der Änderung der Daten an Bufferpool und aktualisieren Sie sie regelmäßig auf Festplatte. 3. Cache -Management: Verwenden Sie den LRU -Algorithmus, um Cache -Seiten zu verwalten. 4. Lesemechanismus: Last benachbarte Datenseiten im Voraus. Durch die Größe des Bufferpool und die Verwendung mehrerer Instanzen kann die Datenbankleistung optimiert werden.

Im Vergleich zu anderen Programmiersprachen wird MySQL hauptsächlich zum Speichern und Verwalten von Daten verwendet, während andere Sprachen wie Python, Java und C für die logische Verarbeitung und Anwendungsentwicklung verwendet werden. MySQL ist bekannt für seine hohe Leistung, Skalierbarkeit und plattformübergreifende Unterstützung, die für Datenverwaltungsanforderungen geeignet sind, während andere Sprachen in ihren jeweiligen Bereichen wie Datenanalysen, Unternehmensanwendungen und Systemprogramme Vorteile haben.

MySQL ist es wert, gelernt zu werden, da es sich um ein leistungsstarkes Open -Source -Datenbankverwaltungssystem handelt, das für Datenspeicher, Verwaltung und Analyse geeignet ist. 1) MySQL ist eine relationale Datenbank, die SQL zum Betrieb von Daten verwendet und für die strukturierte Datenverwaltung geeignet ist. 2) Die SQL -Sprache ist der Schlüssel zur Interaktion mit MySQL und unterstützt CRUD -Operationen. 3) Das Arbeitsprinzip von MySQL umfasst Client/Server -Architektur, Speicher -Engine und Abfrageoptimierer. 4) Die grundlegende Nutzung umfasst das Erstellen von Datenbanken und Tabellen, und die erweiterte Verwendung umfasst das Verbinden von Tabellen mit dem Join. 5) Zu den häufigen Fehlern gehören Syntaxfehler und Erlaubnisprobleme, und die Debugging -Fähigkeiten umfassen die Überprüfung der Syntax und die Verwendung von Erklärungskenntnissen. 6) Die Leistungsoptimierung umfasst die Verwendung von Indizes, die Optimierung von SQL -Anweisungen und die regelmäßige Wartung von Datenbanken.

MySQL ist für Anfänger geeignet, um Datenbankfähigkeiten zu erlernen. 1. Installieren Sie MySQL Server- und Client -Tools. 2. Verstehen Sie grundlegende SQL -Abfragen, wie z. B. SELECT. 3.. Stammdatenoperationen: Daten erstellen, Daten einfügen, aktualisieren und löschen. 4. Lernen Sie fortgeschrittene Fähigkeiten: Unterabfragen und Fensterfunktionen. 5. Debugging und Optimierung: Überprüfen Sie die Syntax, verwenden Sie Indizes, vermeiden Sie die Auswahl*und verwenden Sie die Grenze.

MySQL verwaltet strukturierte Daten effizient durch Tabellenstruktur und SQL-Abfrage und implementiert Inter-Tisch-Beziehungen durch Fremdschlüssel. 1. Definieren Sie beim Erstellen einer Tabelle das Datenformat und das Typ. 2. Verwenden Sie fremde Schlüssel, um Beziehungen zwischen Tabellen aufzubauen. 3.. Verbessern Sie die Leistung durch Indexierung und Abfrageoptimierung. 4. regelmäßig Sicherung und Überwachung von Datenbanken, um die Datensicherheit und die Leistungsoptimierung der Daten zu gewährleisten.

MySQL ist ein Open Source Relational Database Management -System, das in der Webentwicklung häufig verwendet wird. Zu den wichtigsten Funktionen gehören: 1. unterstützt mehrere Speichermotoren wie InnoDB und MyISAM, geeignet für verschiedene Szenarien; 2. Bietet Master-Slave-Replikationsfunktionen, um Lastausgleich und Datensicherung zu erleichtern. 3.. Verbessern Sie die Abfrageeffizienz durch Abfrageoptimierung und Index.

SQL wird verwendet, um mit der MySQL -Datenbank zu interagieren, um die Datenzusatz, Löschung, Änderung, Inspektion und Datenbankdesign zu realisieren. 1) SQL führt Datenoperationen über SELECT, INSERT, INTERATE, UPDATE, Löschen von Anweisungen durch. 2) Verwenden Sie Anweisungen für Datenbankdesign und -verwaltung create, ändern, fallen. 3) Komplexe Abfragen und Datenanalysen werden über SQL implementiert, um die Effizienz der Geschäftsentscheidungen zu verbessern.

Zu den grundlegenden Operationen von MySQL gehört das Erstellen von Datenbanken, Tabellen und die Verwendung von SQL zur Durchführung von CRUD -Operationen für Daten. 1. Erstellen Sie eine Datenbank: createdatabasemy_first_db; 2. Erstellen Sie eine Tabelle: CreateTableBooks (IDINGAUTO_INCRECTIONPRIMARYKEY, Titelvarchar (100) Notnull, AuthorVarchar (100) Notnull, veröffentlicht_yearint); 3.. Daten einfügen: InsertIntoBooks (Titel, Autor, veröffentlicht_year) va


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Dreamweaver Mac
Visuelle Webentwicklungstools

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

mPDF
mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),

Sicherer Prüfungsbrowser
Safe Exam Browser ist eine sichere Browserumgebung für die sichere Teilnahme an Online-Prüfungen. Diese Software verwandelt jeden Computer in einen sicheren Arbeitsplatz. Es kontrolliert den Zugriff auf alle Dienstprogramme und verhindert, dass Schüler nicht autorisierte Ressourcen nutzen.

SAP NetWeaver Server-Adapter für Eclipse
Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.