精华内容
下载资源
问答
  • Mysql数据库表定期备份实现0.背景实际开发环境中,前端程序需要在给定时间段内,将数据更新/插入到MySQL指定库表中。随着数据量增多,基础库表基数的增长,每更新一次都会有5s左右卡顿。改进方案一:批量...

    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="delete from $RST_TABLE where update_time <= $delete_date order by update_time;";

    echo "rst_sql=$rst_sql"

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

    ret=$(mysql -h${DB_IP} $DB_NAME -e "$rst_sql");

    echo $ret

    #删除dispose表信息

    dispose_sql="delete from $DISPOSE_TABLE where judge_time <= $delete_date order by judge_time;";

    echo "dispose_sql=$dispose_sql"

    ret=$(mysql -h${DB_IP} $DB_NAME -e "$dispose_sql");

    echo $ret

    2.定时设置:每隔30天的1点进行备份。

    [root@mysql_bak]# cat /etc/crontab

    SHELL=/bin/bash

    PATH=/sbin:/bin:/usr/sbin:/usr/bin

    MAILTO=root

    HOME=/

    # 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=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@mysql_bak]# crontab -e

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

    重启crontab服务

    service crond restart

    感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

    展开全文
  • 这篇文章主要介绍了Mysql数据库表定期备份实现详解相关资料,需要朋友可以参考下Mysql数据库表定期备份实现0.背景实际开发环境中,前端程序需要在给定时间段内,将数据更新/插入到MySQL指定库表中。随着...

    这篇文章主要介绍了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="delete from $RST_TABLE where update_time <= $delete_date order by update_time;";

    echo "rst_sql=$rst_sql"

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

    ret=$(mysql -h${DB_IP} $DB_NAME -e "$rst_sql");

    echo $ret

    #删除dispose表信息

    dispose_sql="delete from $DISPOSE_TABLE where judge_time <= $delete_date order by judge_time;";

    echo "dispose_sql=$dispose_sql"

    ret=$(mysql -h${DB_IP} $DB_NAME -e "$dispose_sql");

    echo $ret

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

    SHELL=/bin/bash

    PATH=/sbin:/bin:/usr/sbin:/usr/bin

    MAILTO=root

    HOME=/

    # 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=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@mysql_bak]# crontab -e

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

    重启crontab服务service crond restart

    展开全文
  • Mysql数据库表定期备份实现 0.背景 实际开发环境中,前端程序需要在给定时间段内,将数据更新/插入到MySQL指定库表中。随着数据量增多,基础库表基数的增长,每更新一次都会有5s左右卡顿。 改进方案一:...
  • Mysql数据库表定期备份实现0.背景实际开发环境中,前端程序需要在给定时间段内,将数据更新/插入到MySQL指定库表中。随着数据量增多,基础库表基数的增长,每更新一次都会有5s左右卡顿。改进方案一:批量...

    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="delete from $RST_TABLE where update_time <= $delete_date order by update_time;";

    echo "rst_sql=$rst_sql"

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

    ret=$(mysql -h${DB_IP} $DB_NAME -e "$rst_sql");

    echo $ret

    #删除dispose表信息

    dispose_sql="delete from $DISPOSE_TABLE where judge_time <= $delete_date order by judge_time;";

    echo "dispose_sql=$dispose_sql"

    ret=$(mysql -h${DB_IP} $DB_NAME -e "$dispose_sql");

    echo $ret

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

    SHELL=/bin/bash

    PATH=/sbin:/bin:/usr/sbin:/usr/bin

    MAILTO=root

    HOME=/

    # 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=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@mysql_bak]# crontab -e

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

    重启crontab服务 service crond restart

    感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

    展开全文
  • 随着数据量增多,基础库表基数的增长,每更新一次都会有5s左右卡顿。 改进方案一:批量更新,累计数10条或者100条进行一次更新入库操作; 改进方案二:将当前日期前1个月之前数据进行备份操作,并删除当前库...

    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="delete from  $RST_TABLE where update_time <= $delete_date order by update_time;";
    
    echo "rst_sql=$rst_sql"
    #ret=$(mysql -u $DB_USER -h ${DB_IP} -p${DB_PASS} $DB_NAME -e "$sql");
    ret=$(mysql -h${DB_IP} $DB_NAME -e "$rst_sql");
    echo $ret
    
    #删除dispose表信息
    dispose_sql="delete from $DISPOSE_TABLE where judge_time <= $delete_date order by judge_time;";
    echo "dispose_sql=$dispose_sql"
    ret=$(mysql -h${DB_IP} $DB_NAME -e "$dispose_sql");
    echo $ret

    2.定时设置:每隔30天的1点进行备份。

    [root@mysql_bak]# cat /etc/crontab
    SHELL=/bin/bash
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    MAILTO=root
    HOME=/
    
    # 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=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@mysql_bak]# crontab -e
    0 1 */30 * * /home/mysql_bak/mysql_bak.sh > /dev/null 2>&1

    重启crontab服务
    service crond restart

    20170304 21:10 于家中床前

    作者:铭毅天下
    转载请标明出处,原文地址:
    http://blog.csdn.net/laoyang360/article/details/60347828
    如果感觉本文对您有帮助,请点击‘顶’支持一下,您的支持是我坚持写作最大的动力,谢谢!

    展开全文
  • 我需要在(列)中添加索引,并在这篇文章中偶然发现:多少数据库索引太多?引用:话虽如此,您显然可以向添加很多毫无意义索引,这些索引...给定如下(MySQL数据库,InnoDB)进一步条件:该数据库包含3亿条记...
  • 结合innodb_sys_tablespaces的字段FILE_SIZE计算表的物理文件大小和逻辑大小。 表的大小逻辑计算为data_length+index_length=xxx,假设是A左右,而物理文件大小是B左右,那么碎片率大约是 (B-A)/60*100% 碎片程度高...
  • 数据库资料

    2018-04-01 22:00:33
    主要包含最基础的数据库语句,很适合初学者,目标使用企业管理器创建数据库表设置表的主键、外键和建立表之间的关系为表增加约束数据完整性 数据完整性 数据存放在表中 “数据完整性的问题大多是由于设计引起的” ...
  • 我正在尝试学习mySQL数据库,并开始看看WordPress后面的数据库。我正在使用Wordpress Data Base Descrition来检查结构,我遇到以下情况:|Table: wp_commentmeta|-------------------------------------------------...
  • 域: {男, 女} {0, 1} 大于等于0且小于100正整数等 都是域基数: 一个域中允许不同取值个数元组: 多个域...体现到数据库中就是一张二维(关系)某一行分量: 元组中每一个值di叫分量关系定义: D1*D2*D3子集...
  • 数据库索引类型

    2018-01-08 17:39:50
    B-树索引  位图索引  HASH索引  ...适合高基数的列(唯一值多); 常在访问小数据量情况下比较适用,比如你访问不超过中数据5%,当然这只是个相对比率,适用于一般情况。 典型树状结
  • 基数约束 PART-OF联系 1.ISA联系 有实体型是某个实体型子类型,这种父类0子类联系称为ISA联系,表示is a语义,用????表示 ISA联系性质,子类继承了父类所有属性,子类也可以有自己属性。 (1)分类...
  • 自动更新统计信息的基本算法是: · 如果表格是在 tempdb 数据库表的基数是小于 6,自动更新到表的每个六个修改。 · 如果表的基数是大于 6,但小于或等于 500,更新状态每 500 的修改。 · 如果基数大于 500,表为...
  • 关系数据库

    2021-03-17 18:46:34
    以关系数据模型为基础的数据库系统,称为关系数据库系统。 关系定义和性质在关系模型中,只包含单一数据结构—关系,即现实世界实体以及实体间联系均用关系表示。 在用户看来,关系就是一张二维表格: 属性...
  • 属性:指的实体中的某个属性,既表的列 联系(关系):实体与实体间的关系(主外键关系) 联系集(关系集):多个实体之间的关系的集合,同类联系的集合(存储关系的表). E-R图:用图来描述标间关系的图. 映射基数:一个实体...
  • 翻译过程中,译者感到此言不虚:作者从数据库基本概念到数据库建模,从如何运用规范化原则到如何做成实际的数据库表,从如何保护数据库完整性到如何提高数据库性能,从数据库安全机制到并发事务控制,从...
  • 翻译过程中,译者感到此言不虚:作者从数据库基本概念到数据库建模,从如何运用规范化原则到如何做成实际的数据库表,从如何保护数据库完整性到如何提高数据库性能,从数据库安全机制到并发事务控制,从...
  • 4.基数:代表大小,域的基数代表域的大小,笛卡尔积的基数代表笛卡尔积的大小。 5.元组:关系中的每个元素是关系的一个元组,对应二维表的行。 6.属性:关系中不同的列可以对应相同的域,为了区分每一列,给每一列起...
  • 关系数据库系统是支持关系模型的数据库系统。 关系模型的数据结构非常简单,只包含单一的数据结构——关系...一个域允许不同取值个数称为这个域的基数 3.关系:D1×D2×.......×Dn的子集叫做所在域D1,D2,.....,...
  • 在编写sql语句时应 避免产生笛卡尔积,数据量太大。极度影响效率! 以下为笛卡尔积实例 表1数据条数:216 ...若两张表的数据基数为十万级或者更多那数据库怕是直接就崩了,可能用户登录直接卡死。 ...
  • 1.支持多种数据结构,如 string(字符串)、 list(双向链表)、dict(hash)、set(集合)、zset(排序set)、hyperloglog(基数估算) 2.支持持久化操作,可以进行aof及rdb数据持久化到磁盘,从而进行数据备份或数据...
  • 元组:一条数据库记录 分量:元组中某一属性值 域(D):一组具有相同数据类型集合 笛卡尔积(D1D2D3…*Dn):所有域所有取值任意组合 笛卡尔积可表示为一张二维,行表示元组,列表示域 笛卡尔积...
  • VS2005的数据库使用技巧

    千次阅读 2009-02-13 15:59:00
    永州 杜思波 基数大讨论2009用过VS2005和VS2008开发人员肯定知道在安装这个IDE时候会自动安装了一个精简版SQL数据库服务SqlExpress,这个数据库系统少了最重要企业管理器,也就是说不能用它来建数据和一些...
  • 1:数据库索引和选择性的关系 在讨论数据库索引的...“基数”就是一列中唯一值的数量,对于有唯一约束的列,“基数”等于表的总行数。 怎么计算索引的选择性? 选择性 = 基数/总行数 * 100% 选择性是什么意思...
  • 最初接触SQL Server的时候认为SQLServer数据更改的同时就会相应的更新统计信息,其实SQL Server...·如果表格是在tempdb数据库表的基数是小于6,自动更新到表的每个六个修改。 ·如果表的基数是大于6,但小于或等...
  • 如果不事先获得id就不知道文件名,就没法在插入时把文件路径保存到数据库里了。如果不需要事先获得id,大可以在插入后调用mysql_insert_id()或者执行select last_insert_id(),就不必往下看了。为了照顾性急同学,...

空空如也

空空如也

1 2 3 4 5 ... 15
收藏数 285
精华内容 114
关键字:

数据库表的基数