zoukankan      html  css  js  c++  java
  • 数据库定时备份方案及实践

    方案1

    服务器上定时进行备份,备份机定时同步到本地

    方案2

    备份机定时登录到服务器备份数据库并同步到本地

    方案1更具可实现性.

    开工:

    1,免密码登录

    首先需要让备份机可以不输入密码就能登录远程服务器进行读文件.可通过证书登陆的方式实现。

    2,定时备份

    一下操作为在服务器上操作
    本想为了安全性着想专门建立一个备份用账户,只有select权限,实际执行中发现备份还需要有lock权限,也就没有继续深究下去.
    脚本内容如下:

    #在文件名中加入日期防止重复
    date=`date +%Y_%m_%d_%H%M%S`
    #文件名
    fileName="${date}all.sql"
    #备份命令 此处为备份全部(-A参数表示备份全部)的
    mysqldump -uroot --password=rootPassword -E -A > "/alidata/backup/mysql/${fileName}"

    切记脚本的所有者要改为root,权限设置为700(只有root可以执行,编辑和修改)
    设置定时任务

    root# crontab -e

    添加如下语句每天2:10分备份数据库

    # backup mysql at 2:10 everyday
    10 2 * * * /path/to/backup/shell

    更详细的定时任务设置方法见

    3,定时同步

    定时同步的脚本内容如下

    #打开一个ssh agent shell
    #在centos上由于没有keychain这类的密钥管理工具所以每次都要打开ssh agent并添加密钥
    eval `/usr/bin/ssh-agent -s`
    #添加密钥
    /usr/bin/ssh-add /data/backup/.ssh/id_rsa
    #同步命令
    rsync -avz --exclude=mysqlbackup.sh syncuser@serverHost:/alidata/backup/mysql /data/backup/
    #同步完成后退出,否则每次执行此任务都会打开一个ssh agent
    exit

    定时任务内容:

    #相比服务器上的备份需要延迟20分钟,毕竟备份也需要时间
    30 2 * * * /path/to/sync/shell

  • 相关阅读:
    java bio 之聊天室
    自定义gradle plugin
    gradle build 找不到tools.jar 解决方法
    java switch case 枚举类型的反编译结果
    spring mvc 关键接口 HandlerMapping HandlerAdapter
    H5 Video 去除 下载按钮 禁用右键
    https 请求发送 例子 tls && ssl
    mac 安装mongodb
    (扫盲)DTO数据传输对象
    (扫盲)RPC远程过程调用
  • 原文地址:https://www.cnblogs.com/imoing/p/3387879.html
Copyright © 2011-2022 走看看