前言:
这篇文章主要记录自己在备份数据库文件中踩的坑和解决办法。

服务器数据库备份文件之后上传到七牛云

  1. 备份数据库文件

在服务器根目录下 创建 /backup/qiniu/.backup.sh

    #!/bin/bash# vuemall 数据库名称 # blog_runner  vuemall 的管理用户# admin        vuemall的用户密码# 设定 文件夹backUpFolder="/home/Garen/work/dbbackup/vuemall"  //定时保存打包数据库的文件 的位置date_now=`date +%Y_%m_%d_%H%M`backFileName=vuemall_$date_now# 进入到指定文件夹 ,创建临时文件夹 cd $backUpFoldermkdir -p $backFileNamemongodump -h 127.0.0.1:27017 -d vuemall -u blog_runner -p admin -o $backFileName#打包备份数据库 tar zcvf $backFileName.tar.gz $backFileName#  移除 临时文件夹rm -rf $backFileName复制代码
  1. 创建七牛的配置文件用于生成token

    文件上传

    1、 根据AccessKey + SecretKey (可在个人中心=》秘钥管理查看) + bucket(存储空间名称),生成token;
    2、 使用图片源(文件流/文件地址)和token提交信息到七牛存储图片;

    上传途径

    1、服务器端上传:分为本地文件上传、字节数组上传; 2、 客户端上传:Base64模式上传、Blob模式上传;

    服务端nodjs 上传

    在路径为 /backup/qiniu/下执行 npm init 创建==qiniu_config.js==

    npm i qiniu  //引入七牛 SDK
    复制代码

    下面是qiniu_config.js的内容

        'use strict';import * as qiniu from 'qiniu'export const getToken = (bucket) => {var accessKey = '七牛云accesskey';var secretKey = '七牛云secretKey;var bucket = bucketvar mac = new qiniu.auth.digest.Mac(accessKey, secretKey);var options = {scope: bucket}var putPolicy = new qiniu.rs.PutPolicy(options);return  putPolicy.uploadToken(mac);}复制代码

    创建upload.js

        'use strict';import * as qiniu from 'qiniu'import  {getToken} from  './qiniu_config.js'const uploadToken = getToken('blog_node') // blog_node 是七牛云后台创建的仓库名称console.log(uploadToken)const config = new qiniu.conf.Config();config.zone = qiniu.zone.Zone_z0; // 空间对应的机房const formUploader = new qiniu.form_up.FormUploader(config);const putExtra = new qiniu.form_up.PutExtra();const parts  = process.env.NODE_ENV.split('@')const file = parts[1] + '.tar.gz'const filePath = parts[0] + '/' + fileconst key=file;  //上传到服务器的名称const localFile = filePath; // 本地文件路径formUploader.putFile(uploadToken, key, localFile, putExtra, function (respErr,respBody, respInfo) {if (respErr) {throw respErr;}if (respInfo.statusCode == 200) {console.log(' 上传成功')console.log(respBody);} else {console.log(respInfo.statusCode);console.log(respBody);}});复制代码

    其中,对应的机房如下:
    1、华东 qiniu.zone.Zone_z01
    2、华北 qiniu.zone.Zone_z1
    3、华南 qiniu.zone.Zone_z2
    4、北美 qiniu.zone.Zone_na0

由于使用node 执行 upload.js 会报出 错误

    SyntaxError: Unexpected token import
复制代码

找到原因是,目前node只支持部分ES6的语法,有些ES6语法还不支持,而import就是其中之一。
解决这个问题,可以找一些替代的方案

  • 使用Babel-cli插件
  • 升级node 8.5 使用experimental-modules 参数。 切记要求所有文件名后缀都修改为mjs
    node  –experimental-modules index.mjs
    复制代码
  • 安装 babel-regiser
      npm i  babel-register babel-preset-env --save-dev
    复制代码

    创建.babelrc

    {"presets": [["env", {"targets": {"node": "current"}}]]}
    复制代码

新建入口文件 将原来的入口文件 require 进来

   require('babel-register')({presets: [ 'env' ]})// Import the rest of our application.module.exports = require('./upload.js')
复制代码

本文中是使用的 安装 babel-resiger 方法 在目录下创建start.js

因此在.backup.sh脚本中 最后一行加上

    # 启动 七牛云 上传脚本NODE_ENV=$backUpFolder@$backFileName node /backup/qiniu/start.js
复制代码

执行脚本 .backup.sh 就 可以 在七牛云后台看到 已经备份好的数据库文件

启动 定时任务

我们想要设定一个时间 自动 去 执行备份并上传到 七牛云 使用 crontab 以下 是crontab的用法。 一般在centos 中是自动安装好的。 详细配置大家可参考 定时运行脚本配置

  1. 安装crontab
yum install crontabs
复制代码
  1. 开启服务
service crond start  //启动
service crond stop   //关闭
service crond restart   // 重启
service crond reload    //重载
service crond status   //查看状态
ntsysv   //查看crontab服务是否已设置为开机启动
tail -f /var/log/cron  // 查询定时任务
复制代码
  1. 设置执行脚本
    编辑 vim /etc/crontab ,默认形式如下
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root# For details see man 4 crontabs# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed复制代码

设置每天的 02:00 以root用户执行

 0 2 *  *  * root  sh  /backup/qiniu/.back.sh
复制代码

到这里定时启动脚本执行数据库备份 并将其上传至七牛云已经配置成功啦!

如何定时备份数据库并上传七牛云相关推荐

  1. mysql备份七牛云存储_定时备份 Mysql并上传到七牛的方法

    多数应用场景下,我们需要对重要数据进行备份.并放置到一个安全的地方,以备不时之需. 常见的 MySQL 数据备份方式有,直接打包复制对应的数据库或表文件(物理备份).mysqldump 全量逻辑备份. ...

  2. 定时备份 MySQL 并上传到七牛

    定时备份 MySQL 并上传到七牛 多数应用场景下,我们需要对重要数据进行备份.并放置到一个安全的地方,以备不时之需. 常见的 MySQL 数据备份方式有,直接打包复制对应的数据库或表文件(物理备份) ...

  3. python视频下载自动提取视频封面,上传七牛云并写入Mysql数据库(一)

    有时候需要下载一些视频上传到数据库,网上很多抓取的方式用起来都不是很方便,自己写了一个能够用的抓取视频的脚本,并且自动提取视频封面,上传到七牛云,最后按照规则写到数据库.大大提高了工作效率. pip需 ...

  4. tidb-dumpling备份数据库并上传到oss上

    dumpling备份数据库并上传到oss上 参考文档: https://docs.pingcap.com/zh/tidb/stable/dumpling-overview 一.介绍 通过数据导出工具 ...

  5. java 图片回显_java实现Simditor图片上传七牛云并回显

    首先呢,我们有这样一个需求: 当图片上传Simditor时,将其保存到七牛云上,然后并回显在我们的Simditor中. 首先,需要我们有一个七牛云帐号,并且配置Simditor富文本编辑器. 其次,我 ...

  6. php文件上传七牛云,PHP 文件上传七牛云

    PHP 之Laravel 使用qiniu/php-sdk, itbdw/laravel-storage-qiniu, 组件上传文件到七牛云. 一.  序言 这几天在laravel 框架上使用qiniu ...

  7. Laravel-七牛上传 七牛云CDN问题

    啰嗦一句-好久没有写博客了...今天抽空来一发 这段时间,腾讯云服务器图片上传七牛云无法成功,老是超时,导致很多文章的内容无法正常显示,算是个大bug.同样的方法本地上传图片炒鸡快,问题是腾讯云还是七 ...

  8. java实现excel导入导出,对象图片读取,上传七牛云

    java实现excel导入导出以及解决方案 因为公司业务需求,要完成针对表格的导入导出,excel这里使用MultipartFile类接收 ,下面是部分关键代码,希望有所帮助 //获取excel文件的 ...

  9. linux 备份mysql并上传_linux备份数据库并上传至远程服务器(定时执行shell进行ftp上传)...

    #========================start shell 脚本============================ #!/bin/bash #定义备份数据库时使用的用户名和密码 d ...

最新文章

  1. 回归评价指标MSE、RMSE、MAE、R-Squared
  2. 云服务器网站不能够上传视频,网站的视频要存到云服务器上吗
  3. 没有数学天赋是一种什么体验?
  4. BZOJ3592 : Architext
  5. Ubuntu16.04下禁用scp、sftp和winscp
  6. JAVA中isEmpty、null、的区别
  7. 博文视点读书节第五日丨IT大咖私房书单继续放送,超级会员返场来袭!
  8. Spark一系列入门流程
  9. spring源码:注册后置处理器
  10. 遗传算法求解函数最大值的python实现
  11. hpml510服务器做系统,HPJetdirect打印服务器(300X510X)管理员指南.PDF
  12. js中拼接字符串遇到的单引号、双引号以及转义字符问题
  13. 矿泉水瓶勿重复使用易得癌病
  14. 2018年广东工业大学文远知行杯新生程序设计竞赛 1006 那天的延长线在今天β...
  15. 吉德林法则 (Kidlin's Law)的真实案例(1)
  16. 企业全面质量管理的九个阶段
  17. 奶牛易物小组 Alpha冲刺
  18. 论文阅读 Local Differential Privacy-Based Federated Learning for Internet of Things
  19. 通过$route.mete.show实现组件动态展示
  20. 用PHP校验EMAIL地址的正确方法

热门文章

  1. 建立CentOS 6.9 的Yum本地源
  2. 女朋友的Mysql练习题
  3. 给一个ul列表中点击到的li赋予样式
  4. MyEclipse对Struts2配置文件较检异常 Invalid result location value/parameter
  5. angularJs的学习笔记-01(创建项目)
  6. server-send event object
  7. PLSQL developer 连接不上64位Oracle 解决办法
  8. 「前端面试题系列7」Javascript 中的事件机制(从原生到框架)
  9. 全面支持三大主流环境 |百度PaddlePaddle新增Windows环境支持
  10. 深入理解JVM——虚拟机GC