欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Node定時備份MySQL的實現

 更新時間:2023年04月23日 16:15:41   作者:webxue  
本文主要介紹了Node定時備份MySQL的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

前言

前段時間發(fā)生了一件令我哭笑不得的事,部署在 Centos 服務器上的項目,因為需要重新上傳· 部署,所以我執(zhí)行了下面一段命令:

rm -rf /*

當我按下回車之后,發(fā)現終端閃過的一行行代碼,突然感覺事情并不簡單,情急之下,趕緊 ctrl c 中斷終端,中斷之后,便開始通過 fpt 上傳文件,卻發(fā)現 ftp 毫無反應,這下慌了,不會把系統給干沒了吧!

接下來我決定 重啟 服務器,可是,emmm...,啟動不了了!真的把系統給干沒了!詢問大佬們之后,聽說 阿里云 如果存在 快照,則可以恢復,可是我并沒有保存過快照!直接GG,程序沒了倒無所謂,可是 數據庫沒了。

這時我意識到,需要做個 定時任務,定時 備份 數據庫,結合之前封裝的 Email 類,將備份的數據庫發(fā)送至郵箱,所以才有了這篇文章。

開發(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賬戶密碼",
    "所要備份的數據庫名"
  ])
}

接下來定時 執(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賬戶密碼",
    "所要備份的數據庫名"
  ])
  schedule.scheduleJob("0 0 1 * * *", function(){
    dump.stdout.pipe(writeStream)
      .on("finish",() => {
        console.log("備份成功")
      })
      .on("error",() => {
        console.log("備份失敗")
      })
  })
}

當然這里寫死的數據還可以作為函數參數可進行控制,另外這里的 0 0 1 * * * 表示 每天凌晨1點 備份,具體時間格式可參考下圖,或官方文檔

在備份成功的回調中,調用 Email 類將備份內容發(fā)送至 郵箱,這里不作為重點就暫且不寫。

最后在 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點 對數據庫進行 備份,并發(fā)送至 郵箱。

結語

到此這篇關于Node定時備份MySQL的實現的文章就介紹到這了,更多相關Node定時備份MySQL內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 詳解nodejs異步I/O和事件循環(huán)

    詳解nodejs異步I/O和事件循環(huán)

    本篇文章主要介紹了nodejs異步I/O和事件循環(huán),小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • windows下安裝nodejs及框架express

    windows下安裝nodejs及框架express

    express是一個開源的node.js框架,初學者使用express可以快速的搭建一個Web項目,express中已經集成了Web的http服務器創(chuàng)建、請求和文件管理以及Session的處理等功能,所以express是非常適合初學者的入門學習,這篇文章通過兩種方式介紹windows下安裝nodejs及框架express
    2015-08-08
  • node使用promise替代回調函數

    node使用promise替代回調函數

    這篇文章主要介紹了node使用promise替代回調函數,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • nodejs檢測因特網是否斷開的解決方案

    nodejs檢測因特網是否斷開的解決方案

    這篇文章主要給大家介紹了關于nodejs如何檢測因特網是否斷開的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用nodejs具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-04-04
  • Node.js折騰記一:讀指定文件夾,輸出該文件夾的文件樹詳解

    Node.js折騰記一:讀指定文件夾,輸出該文件夾的文件樹詳解

    這篇文章主要介紹了Node.js讀指定文件夾輸出該文件夾文件樹,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • 使用node.js半年來總結的 10 條經驗

    使用node.js半年來總結的 10 條經驗

    從3月初來到帝都某創(chuàng)業(yè)公司的服務器團隊實習,到現在已接近半年的時間。PS: 已轉正,服務器端用的 Node。
    2014-08-08
  • Node.js+Express+Vue+MySQL+axios的項目搭建全過程

    Node.js+Express+Vue+MySQL+axios的項目搭建全過程

    這篇文章主要介紹了Node.js+Express+Vue+MySQL+axios的項目搭建全過程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • express express-session的使用小結

    express express-session的使用小結

    這篇文章主要介紹了express express-session的使用小結,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • PHP和NodeJs開發(fā)的應用如何共用Session

    PHP和NodeJs開發(fā)的應用如何共用Session

    這篇文章主要介紹了PHP和NodeJs開發(fā)的應用如何共用Session的相關資料及思路,需要的朋友可以參考下
    2015-04-04
  • 解決Node.js使用MySQL出現connect ECONNREFUSED 127.0.0.1:3306的問題

    解決Node.js使用MySQL出現connect ECONNREFUSED 127.0.0.1:3306的問題

    這篇文章主要介紹了解決Node.js使用MySQL出現connect ECONNREFUSED 127.0.0.1:3306報錯的相關資料,文中將問題描述的很清楚,解決的方法也介紹的很完整,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-03-03

最新評論