使用shell脚本获取mysql指定表增量数据


前言

由于应用安全配置,通常数据库没有开放外部端口的,此时,我们可以在linux服务器中运行shell脚本,执行相应的sql语句,将增量数据输出到指定文件,同时将文件上传到指定的ftp服务器或放到特定的文件夹,达到数据抓取的目的


一、mysql 命令行工具

通过 -e 参数 指定要执行的sql语句

mysql -u username -p -e "SELECT * FROM your_table WHERE your_condition" database_name > outputfile.sql

二、实际应用

1.编写shell脚本

#!/bin/bash
echo "begin"
# 获取当天日期
today=$(date +"%Y-%m-%d")
echo "$today"
# 获取前一天日期
yesterday=$(date -d "1 day ago" +%Y-%m-%d)
echo "$yesterday"
# 取当前时间作为文件前缀
filename=$(date +"%Y%m%d%H%M%S")
mysql -u username -p -e "SELECT * FROM your_table WHERE createtime>='$yesterday' and createtime<'$today' " database_name > "$filename"_table.sql
echo "end"

2.配置cronjob

使用crontab -e 设置运行时间,设置好之后,可以使用crontab -l查看

[root@server211 ~]# crontab -l
59 23 * * *  ntpdate ntp.api.bz
00 02 * * *  /root/your_shell.sh >> /root/db.log

总结

通过以上的配置,则可以定时生成增量数据,同时可以通过编写python脚本,将指定的文件上传到ftp,或者其他应用到指定路径下获取该增量数据。

当然,我可以帮你编写一个Shell脚本来实现MySQL数据增量备份。以下是一个示例脚本: ```shell #!/bin/bash # MySQL数据库连接参数 host="localhost" username="your_username" password="your_password" database="your_database" # 备份路径 backup_dir="/path/to/backup" # 获取当前日期和时间 current_datetime=$(date +%Y-%m-%d_%H-%M-%S) # 创建以当前日期命名的备份文件夹 backup_folder="$backup_dir/$current_datetime" mkdir -p $backup_folder # 备份数据库结构 mysqldump -h $host -u $username -p$password --no-data $database > $backup_folder/$database-structure.sql # 获取上次备份的日志文件路径 last_backup_log="$backup_dir/last_backup.log" # 检查是否存在上次备份的日志文件 if [ -f $last_backup_log ]; then # 读取上次备份的日志文件,获取上次备份的binlog位置 last_binlog=$(cat $last_backup_log) # 备份增量数据到当前备份文件夹 mysqldump -h $host -u $username -p$password --no-create-info --skip-triggers --single-transaction --set-gtid-purged=OFF --where="timestamp >= '$last_binlog'" $database > $backup_folder/$database-incremental.sql fi # 更新上次备份的binlog位置 mysqlbinlog=$(mysql -h $host -u $username -p$password -e "SHOW MASTER STATUS\G" | grep File | awk '{print $2}') echo $mysqlbinlog > $last_backup_log # 打印备份完成消息 echo "MySQL数据增量备份已完成,文件保存在 $backup_folder" ``` 请将 `your_username`、`your_password` 和 `your_database` 替换为你的MySQL连接参数。将 `/path/to/backup` 替换为你想要保存备份文件的目录路径。 这个脚本会创建一个以当前日期和时间命名的文件夹,然后备份数据库的结构和增量数据到该文件夹中。它会使用上次备份的binlog位置来确定增量备份的范围。备份完成后,它会将当前binlog位置保存到一个日志文件中,以便下次备份时使用。 你可以将脚本保存为可执行文件(例如 `mysql_backup.sh`),并使用定时任务来自动运行它。请确保在运行脚本之前,已经安装了MySQL客户端工具(mysqldump和mysqlbinlog)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值