Centos7下利用crontab+bypy实现自动备份数据库到百度网盘

382 阅读2分钟

环境配置

环境:Centos7+python2.7.5
  • 查看系统是否有python环境 python --version 一般系统自带的是2.7
  • 更新pip python -m pip install --upgrade pip
  • 安装pip、bypy
    • 1.sudo pip3 install bypy
    • 2.sudo pip install requests
    • 3.查看安装的包 pip3 list
    • Tip:(报错参考)
      • 如果版本不支持可安装python3 (适用于CentOS/RHEL)sudo yum install python3
      • 更新Python 3的ensurepip工具 python3 -m ensurepip --upgrade

授权登录

  1. 执行bypy info
  2. 访问这个连接,进行网盘的登录授权 image.png
  3. 将授权码粘贴在你的终端上面 image.png Tip:授权完成后可查看相关信息,由于百度PCS API权限限制,程序只能存取百度云端/apps/bypy目录下面的文件和目录
  4. 执行bypy list可查看目录信息

使用crontab实现定时自动数据备份

创建一个shell脚本

image.png 此脚本使用bypy upload命令将/opt/backups/sql文件夹下所有文件上传至网盘中apps\bypy\的某个文件夹下

添加crontab任务
- 打开定时任务编辑器 `crontab -e`
    - 例如,要每晚的12点执行 /usr/local/bin/my_script.sh 脚本,可以添加以下行: 0 0 * * * /usr/local/bin/file.sh >> /var/log/mycron.log 2>&1
    - ` * * * * *`:表示每分钟都执行。
    - ` /usr/local/bin/file.sh:`表示要执行的命令或脚本的路径。
    - ` >> /var/log/mycron.log 2>&1:`表示将命令或脚本的输出追加到/var/log/mycron.log 文件中,并将错误输出重定向到标准输出。

-   `>>` 是输出重定向操作符,它将命令的输出附加到指定文件的末尾,而不覆盖文件中已有的内容。在这种情况下,`/usr/local/bin/file.sh` 的输出将会追加到 `/var/log/mycron.log` 文件中。
-    `2>&1` 是错误重定向操作符,它将错误输出与标准输出合并。数字 `2` 表示标准错误流(stderr),而 `1` 表示标准输出流(stdout)。通过使用 `2>&1`,标准错误将被重定向到与标准输出相同的位置。
  1. 查看任务 crontab -l
  2. 删除任务 crontab -r
  3. 重启crond服务 systemctl restart crond

配置时遇到的一些报错

Error 31062

检查以下是不是参数传递错误:确保传递给 bypy upload 命令的参数是正确的。检查文件路径、目录路径和文件名是否正确,确保它们存在且可访问。

mysqldump: Error: 'Access denied; you need (at least one of) the PROCESS privilege(s) for this operation' when trying to dump tablespaces

在centos中用root账号登录mysql mysql -uroot -p

  1. 输入密码
  2. 然后执行命令 mysql> GRANT PROCESS ON *.* TO '登录de数据库账号'@'localhost';
  3. 刷新数据库 mysql> flush privileges;
  4. 完整流程

image.png