概述
场景:有一张表数据经常过一段时间会发生变动,据库基于通过binlog2sql拿这几天的表级别备sql观察发现某个时间段总会发生批量更新,怀疑是据库基于代码中某个功能导致,但开发一直找不到问题,表级别备所以只能先做一下单表的亿华云计算据库基于备份,频率为1小时1次。表级别备
实现过程如下:
备份脚本
核心脚本如下:
#!/bin/bash #this is mysqldump auto table backup script #Copyright by hwb backup_path="/pasdata/backup" user="root" passwd="xx.xx.x.x dbname="pas_prod" host="localhost" tablename="t_att_overtime_application" today=`date +"%Y%m%d-%H%M%S"` sqlname=$tablename$today.sql if [ -e /home/scripts/log_function.sh ] then source /home/scripts/log_function.sh else echo -e “\033[41;37m /home/scripts/log_function.sh is not exist. \033[0m” exit 1 fi backup(){ log_correct "开始执行备份脚本,据库基于删除14天过期备份" #backup mysqldump -h$host -u$user -p$passwd $dbname --tables $tablename >$backup_path/$sqlname } delete(){ #delete expired 14 days find $backup_path -mtime +14 -type f -name *.sql -exec rm -f { } \; } size(){ cd $backup_path dd=`du -sh $sqlname` if [ -s ./$sqlname ] ; then log_correct 调休表备份正常 log_correct $dd else log_error 调休表备份失败 fi } backup delete size核心命令如下:mysqldump -h$host -u$user -p$passwd $dbname --tables $tablename >$backup_path/$sqlname
定时任务
设置定时任务如下:每隔1h的30分执行
30 0-23 * * * sh /home/scripts/table_backup.sh附录:关于mysqldump导出表的命令
1、导出指定表的服务器托管表级别备数据
mysqldump -t database -u username -ppassword --tables table_name1 table_name2 table_name3 >table.sql2、导出指定表的据库基于结构
mysqldump -d database -u username -ppassword --tables table_name1 table_name2 table_name3>table.sql3、导出表的表级别备数据及结构
mysqldump database -u username -ppassword --tables table_name1 table_name2 table_name3>table.sql4、某些表除外,香港云服务器据库基于其余表都需导出
表级别备mysqldump -h IP -u username -ppassword --default-character-set=utf8 --database database_name --ignore-table=database_name.table_name1 --ignore-table=database_name.table_name2 --ignore-table=database_name.table_name3 >table.sql