当前位置: 首页 > 科技观察

基于表级备份的MySQL数据库

时间:2023-03-13 23:23:55 科技观察

概述场景:有一个表,其数据在一段时间后经常发生变化。使用binlog2sql观察这几天的sql,发现在某个时间段内总会出现批量更新。怀疑是代码中的某个函数引起的,但是开发一直没能找到。问题,所以我们只能先对单表进行备份,频率是每小时一次。实现过程如下:备份脚本的核心脚本如下:#!/bin/bash#thisismysqldumpautotablebackupscript#Copyrightbyhwbbackup_path="/pasdata/backup"user="root"passwd="xx.xx.x.xdbname="pas_prod"host="localhost"tablename="t_att_overtime_application"today=`date+"%Y%m%d-%H%M%S"`sqlname=$tablename$today.sqlif[-e/home/scripts/log_function.sh]thensource/home/scripts/log_function.shelseecho-e"\033[41;37m/home/scripts/log_function.shisnotexist.\033[0m"exit1fibackup(){log_correct"开始执行备份脚本,删除14天过期备份"#backupmysqldump-h$host-u$user-p$passwd$dbname--tables$tablename>$backup_path/$sqlname}delete(){#deleteexpired14daysfind$backup_path-mtime+14-typef-name'*.sql'-execrm-f{}\;}size(){cd$backup_pathdd=`du-sh$sqlname`if[-s./$sqlname];thenlog_correct'调度表备份正常'log_correct$ddelselog_error'调度表备份失败'fi}backupdeletesize的核心命令如下:mysqldump-h$host-u$user-p$passwd$dbname--tables$tablename>$backup_path/$sqlname定时任务设置定时任务如下:执行300-23**每30分钟1h*sh/home/scripts/table_backup.sh附录:mysqldump导出表的命令1、导出指定表的数据mysqldump-tdatabase-uusername-ppassword--tablestable_name1table_name2table_name3>table.sql2。导出指定表的结构mysqldump-ddatabase-uusername-ppassword--tablestable_name1table_name2table_name3>table.sql3,导出表数据和结构mysqldumpdatabase-uusername-ppassword--tablestable_name1table_name2table_name3>table.sql4,除部分表外,其他表需要导出mysqldump-hIP-uusername-ppassword--default-character-set=utf8--databasedatabase_name--ignore-table=database_name.table_name1--ignore-table=database_name.table_name2--ignore-table=database_name.table_name3>table.sql