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

tech2025-07-11  1

两个数据库之间同步数据有很多种方式,基于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

之后你会看到这么一个配置文件

修改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小时你就能看见日志文件输出啦!

最新回复(0)