您好,登錄后才能下訂單哦!
本篇內容主要講解“Node定時備份MySQL怎么實現(xiàn)”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Node定時備份MySQL怎么實現(xiàn)”吧!
前段時間發(fā)生了一件令我哭笑不得的事,部署在 Centos
服務器上的項目,因為需要重新上傳· 部署
,所以我執(zhí)行了下面一段命令:
rm -rf /*
當我按下回車之后,發(fā)現(xiàn)終端閃過的一行行代碼,突然感覺事情并不簡單,情急之下,趕緊 ctrl c
中斷終端,中斷之后,便開始通過 fpt
上傳文件,卻發(fā)現(xiàn) ftp
毫無反應,這下慌了,不會把系統(tǒng)給干沒了吧!
接下來我決定 重啟
服務器,可是,emmm...,啟動不了了!真的把系統(tǒng)給干沒了!詢問大佬們之后,聽說 阿里云
如果存在 快照
,則可以恢復,可是我并沒有保存過快照!直接GG,程序沒了倒無所謂,可是 數(shù)據(jù)庫沒了。
這時我意識到,需要做個 定時任務
,定時 備份
數(shù)據(jù)庫,結合之前封裝的 Email
類,將備份的數(shù)據(jù)庫發(fā)送至郵箱。
因為我后端使用的是 nodejs
,這里就使用 nodejs
編寫定時任務吧。
這里需要 node-schedule
依賴來執(zhí)行定時任務,需要 child_process
依賴來執(zhí)行備份命令。
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 = () => {}
在方法內使用 時間戳
定義備份 唯一
文件名,并 創(chuàng)建流
:
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賬戶密碼", "所要備份的數(shù)據(jù)庫名" ]) }
接下來定時 執(zhí)行備份
命令:
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賬戶密碼", "所要備份的數(shù)據(jù)庫名" ]) schedule.scheduleJob("0 0 1 * * *", function(){ dump.stdout.pipe(writeStream) .on("finish",() => { console.log("備份成功") }) .on("error",() => { console.log("備份失敗") }) }) }
當然這里寫死的數(shù)據(jù)還可以作為函數(shù)參數(shù)可進行控制,另外這里的 0 0 1 * * *
表示 每天凌晨1點
備份,具體時間格式可參考下圖,或官方文檔:
在備份成功的回調中,調用 Email
類將備份內容發(fā)送至 郵箱
,這里不作為重點就暫且不寫。
最后在 src/command/index.js
文件中 引入
備份方法并 調用
:
import { backupDb } from "./BackupDB"; backupDb();
這里需要先全局安裝 pm2
:
npm i pm2 -g
pm2
部署的命令格式為:pm2 start [nodejs文件] --name [別名]
:
pm2 start ./src/command/index.js --name backupDb
部署完成之后,可以通過 pm2 ls
命令查看。
至此,將在 每天凌晨1點
對數(shù)據(jù)庫進行 備份
,并發(fā)送至 郵箱
。
到此,相信大家對“Node定時備份MySQL怎么實現(xiàn)”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續(xù)學習!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。