热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

mysql定期数据备份_Mysql数据库表定期备份的实现详解

Mysql数据库表定期备份的实现0.背景实际开发环境中,前端程序需要在给定时间段内,将数据更新插入到MySQL指定的库表中。随着数据量的增多࿰

Mysql数据库表定期备份的实现

0.背景

实际开发环境中,前端程序需要在给定时间段内,将数据更新/插入到MySQL指定的库表中。随着数据量的增多,基础库表基数的增长,每更新一次都会有5s左右的卡顿。

改进方案一:批量更新,累计数10条或者100条进行一次更新入库操作;

改进方案二:将当前日期前1个月之前的数据进行备份操作,并删除当前库表中1个月前的数据。经测定,该方法一定程度提高了访问效率。根因:基础表基数少,查询效率相对提高。

1.库表的定时备份总结

步骤1:备份Mysql指定数据库中的制定库表。

使用 mysqldump,设定周期30天。

步骤2:对于日期60天前的已备份的文件及压缩包做删除处理。

步骤3:删除库表中在当前日期前30天的数据。(步骤1已经做了备份)。

步骤4:设定定时。

crontab设定。 [root@mysql_bak]# cat mysql_bak.sh

#!/bin/sh

#DATABASE INFO

DB_NAME="ppdb"

DB_USER="root"

DB_PASS="password"

DISPOSE_TABLE="dispose_ticles"

RST_TABLE="match_rst"

DB_IP=100.55.1.129

BIN_DIR="/usr/bin"

BAK_DIR="/home/mysql_bak/data"

DATE=`date +%Y%m%d_%H%M%S`

#mkdir -p $BAK_DIR

#备份包 形成压缩包

$BIN_DIR/mysqldump $DB_NAME $DISPOSE_TABLE > $BAK_DIR/$DISPOSE_TABLE.dump_$DATE.sql

$BIN_DIR/mysqldump $DB_NAME $DISPOSE_TABLE | gzip > $BAK_DIR/$DISPOSE_TABLE.dump_$DATE.sql.gz

$BIN_DIR/mysqldump $DB_NAME $RST_TABLE > $BAK_DIR/$RST_TABLE.dump_$DATE.sql

$BIN_DIR/mysqldump $DB_NAME $RST_TABLE | gzip > $BAK_DIR/$RST_TABLE.dump_$DATE.sql.gz

#定期删除60天的备份包

find $BAK_DIR -name "name_*.sql.gz" -type f -mtime +60 -exec rm {} \; > /dev/null 2>&1

#30天前的指定库表数据删除操作 (当前时间减去30天)

delete_date=`date --date='30 day ago' +%Y-%m-%d`

echo "delete_date=$delete_date"

#删除rst表信息

rst_sql&#61;"delete from $RST_TABLE where update_time <&#61; $delete_date order by update_time;";

echo "rst_sql&#61;$rst_sql"

#ret&#61;$(mysql -u $DB_USER -h ${DB_IP} -p${DB_PASS} $DB_NAME -e "$sql");

ret&#61;$(mysql -h${DB_IP} $DB_NAME -e "$rst_sql");

echo $ret

#删除dispose表信息

dispose_sql&#61;"delete from $DISPOSE_TABLE where judge_time <&#61; $delete_date order by judge_time;";

echo "dispose_sql&#61;$dispose_sql"

ret&#61;$(mysql -h${DB_IP} $DB_NAME -e "$dispose_sql");

echo $ret

2.定时设置&#xff1a;每隔30天的1点进行备份。 [root&#64;mysql_bak]# cat /etc/crontab

SHELL&#61;/bin/bash

PATH&#61;/sbin:/bin:/usr/sbin:/usr/bin

MAILTO&#61;root

HOME&#61;/

# For details see man 4 crontabs

# Example of job definition:

# .---------------- minute (0 - 59)

# | .------------- hour (0 - 23)

# | | .---------- day of month (1 - 31)

# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...

# | | | | .---- day of week (0 - 6) (Sunday&#61;0 or 7) OR sun,mon,tue,wed,thu,fri,sat

# | | | | |

# * * * * * user-name command to be executed

0 1 */30 * * /home/mysql_bak/mysql_bak.sh > /dev/null 2>&1

[root&#64;mysql_bak]# crontab -e

0 1 */30 * * /home/mysql_bak/mysql_bak.sh > /dev/null 2>&1

重启crontab服务 service crond restart

感谢阅读&#xff0c;希望能帮助到大家&#xff0c;谢谢大家对本站的支持&#xff01;



推荐阅读
  • MySQL5.6.40在CentOS764下安装过程 ... [详细]
  • linux 循环 cpu使用率脚本,Linux Shell脚本监视CPU利用率,达到设置的CPU利用率时发送电子邮件...
    有很多开源监控工具可用于监控Linux系统性能,当系统达到给定的阈值限制时,它将发送电子邮件警报。它监视CPU利用率、内存利用率、交换利用率、磁盘空间利 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 本文介绍了在MacOS系统上安装MySQL的步骤,并详细说明了如何设置MySQL服务的开机启动和如何修改MySQL的密码。通过下载MySQL的macos版本并按照提示一步一步安装,在系统偏好设置中可以找到MySQL的图标进行设置。同时,还介绍了通过终端命令来修改MySQL的密码的具体操作步骤。 ... [详细]
  • 本文介绍了在RHEL 7中的系统日志管理和网络管理。系统日志管理包括rsyslog和systemd-journal两种日志服务,分别介绍了它们的特点、配置文件和日志查询方式。网络管理主要介绍了使用nmcli命令查看和配置网络接口的方法,包括查看网卡信息、添加、修改和删除配置文件等操作。 ... [详细]
  • ZABBIX 3.0 配置监控NGINX性能【OK】
    1.在agent端查看配置:nginx-V查看编辑时是否加入状态监控模块:--with-http_stub_status_module--with-http_gzip_stat ... [详细]
  • #!binbashusrlocalmysqlbinmysqldump#保存备份个数number2#备份保存路径backup_dirrootmysqlbackup#日期dddate% ... [详细]
  • 1、DashAPI文档Dash是一个API文档浏览器,使用户可以使用离线功能即时搜索无数API。程序员使用Dash可访问iOS,MacOS, ... [详细]
author-avatar
萧阳
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有