说好的备份SQL数据呢~ (源于之前一次sql写错,毁掉了所有数据)

Posted on 2020-09-05 10:09:41
Author: 可乐小可爱メ
1. 背景

一切源于之前的一次不正规操作并且写错sql, 前端到后端的必经之路--越早越好

导致之前大半年的博客数据被毁.. 临时用 HeidiSQL 客户端手动导出/导入了一下 学着备份。

作为渣渣程序员,也得自己写脚本不,  来 直接上代码...


2. 代码
const shell = require("shelljs")
const fs = require("fs")
const dayjs = require("dayjs")
const { join } = require("path")
const timestamp = dayjs(new Date()).format("MM-DD")
const database = "databasenames"
const filename = `${database}.${timestamp}.sql`
const folder = `${__dirname}data`
fs.existsSync(folder) || fs.mkdirSync(folder)

const resourcePath = join(folder, filename)


const backup = shell.exec(
`mysqldump -h xx.xxx.xxx.xxx -uroot -pPRODUCTIONPASSWORD ${database} --column-statistics=0 > ${resourcePath}`
)
if (backup.code === 0) {
console.log(`[${database}] backup success!`)
}

const source = shell.exec(`mysql -uroot -proot keles < ${resourcePath}`)
if (source.code === 0) {
console.log(`[${database}] sync data success!`)
}


3. 注意点

    3.1 刚开始一直以为要 先连接mysql 然后 mysqldump, 结果理解错了, 是直接命令.

    3.2 同步的时候确实卡了很久,  如果是手动同步数据的话, 直接 CMD 命令行启动, 连接mysql, 然后 use ${databasesname}, 再 source ${指定sql文件路径}, 但是发现shelljs没有交互式命令行为? , 不能用source命令同步.


4. 后话

    这里没有写定时任务来备份数据,我是想的是 自己的博客站, 坚持写, 每过一段时间,自己一键执行.

当前评论 (0) 登录后评论

暂无评论