shell脚本定时同步远程数据库数据

两个数据库之间同步数据有很多种方式,基于binlog解析、基于kettle处理、亦或者基于mysqldump处理。由于我们这两台服务器仅作数据记录使用,实时性要求不高,故采用shell脚本+mysqldump处理。

目录

  • Shell脚本配置
  • Linux定时任务配置
    • 打开crontab
    • 修改crontab配置


Shell脚本配置

#!/bin/bash
# 配置数据库账号密码
username='xxx'
password='pppp'
target_username='yyy'
target_password='zzzzz'
# 配置数据源库 和 数据目标库
source_database='x'
target_database='y'
echo $(date +%F%r)"开始同步..."
# 2>/dev/null 可以抑制警告信息
mysqldump -h远程mysql地址 -P远程mysql端口 -u"${username}" -p"${password}"  $source_database 2>/dev/null \
| mysql -u"${target_username}" -p"${target_password}" $target_database 2>/dev/null \
&& echo "同步完成啦 success"

注意:如果你的远程Mysql不在3306端口上,要用-P(大写的!)指定端口。

Linux定时任务配置

打开crontab

sudo vi  /etc/crontab 

之后你会看到这么一个配置文件
shell脚本定时同步远程数据库数据_第1张图片

修改crontab配置

在它的末尾加配置

# 每3小时执行一次,一定要绝对路径,输出日志到/usr/local/log
* */3 * * * /root/run_sh/run.sh >> /usr/local/log

保存退出后执行service crond restart

前面五位是定时执行的时间周期 说明如下:
第一个 * 表示分钟:取值范围 0-59
第二个 * 表示小时:取值范围0-23
第三个 * 表示天数:取值范围1-31
第四个 * 表示月份:取值范围1-12
第五个 * 表示每周:取值范围0-6
使用(-)可以划定范围
如:0 0-3 * * * 脚本 表示每天0-3点整执行脚本
使用(,)可以枚举时间
如: 0,15,30,45 * * * * 脚本 表示每个小时的0分,15分,45分,30分会执行脚本
使用(/)可以指定间隔
如:* */8 * * * 脚本 表示每8小时执行脚本
组合用法
0-20/10 * * * * 脚本 表示在前20分钟内每隔10分钟执行脚本

过3小时你就能看见日志文件输出啦!

你可能感兴趣的:(运维,linux,shell,mysql)