#!/bin/bash
# Author: wjxie
# Created at: 2014-12-19
# Feature: dump and clear table ad.ad_hit
set -e
USERNAME="******"
PASSWORD="******"
DATABASE="ad"
MYSQL=`which mysql`
TODAY=`date +%Y-%m-%d`
YESTERDAY=`date -d yesterday +%Y-%m-%d`
DUMP_FILE="/root/workspaces/sql.dump/ad_hit.sql."$TODAY
LOG_FILE="/root/workspaces/sql.dump/shell.log"
echo "==================== "$TODAY" ====================" >> $LOG_FILE
count=`$MYSQL $DATABASE -u$USERNAME -p$PASSWORD <<EOF | tail -n +2
select count(id) from ad_hit where created_at < '$YESTERDAY';
exit
EOF`
echo "ad_hit created before yesterday has "$count" records." >> $LOG_FILE
if [[ $count -gt 10000000 ]];then
# dump ad_hit before yesterday
# -t : only dump data, not to dump schema
# --single-transaction : not to prevent read and write, but keeps repeatable r ead. this will only works for innodb
# --quick : not to cache query result in memory, dump directly
start_time=`date +%s`
mysqldump -u$USERNAME -p$PASSWORD -t --single-transaction --quick $DATABASE ad _hit --where="created_at < '$YESTERDAY'" > $DUMP_FILE
end_time=`date +%s`
cost_time=$[ end_time - start_time ]
echo "dump ad_hit finished, cost "$cost_time" s." >> $LOG_FILE
# clear ad_hit before yesterday, optimize table
start_time=`date +%s`
$MYSQL $DATABASE -u$USERNAME -p$PASSWORD <<EOF
delete from ad_hit where created_at < '$YESTERDAY';
optimize table ad_hit;
exit
EOF
end_time=`date +%s`
cost_time=$[ end_time - start_time ]
echo "clear and optimize ad_hit finished, cost "$cost_time" s." >> $LOG_FILE
fi
分享到:
相关推荐
5. **数据库管理**:MySQL Shell可以帮助用户执行常见的数据库管理任务,如创建、删除和管理数据库、表,以及导入和导出数据。 6. **性能分析**:内置的性能顾问模块可以分析查询性能,提供改进建议,帮助优化...
mysql导出指定表并分表存储sql文件且压缩的shell脚本,数据库数据过大时,可以用于数据库备份
使用shell脚本分页读取MySQL数据 脚本背景 由于要在Linux上,远程读取mysql的表的数据,然后做一定清洗后,把数据上传至Hadoop集群中,使用Java写吧,感觉太麻烦了,得在Win上开发好,还得打成jar包, 上传到Linux上...
防止误删服务器数据库 ,使用Shell脚本备份...mysql数据里面有个atguiguDB数据库 将这个数据库备份到/data/backup/db -----》shell脚本写到/usr/sbin/mysql_db_backup.sh---》然后将脚本设置到crond执行 2)代码实现
总结,使用PHP进行MySQL数据导入导出涉及到的知识点包括:PHP执行shell命令、PDO和MySQLi扩展的使用、`mysqldump`和`mysqlimport`工具、`SELECT INTO OUTFILE`和`LOAD DATA INFILE` SQL语句、数据分批处理、事务管理...
在进行数据迁移时,我们通常会先使用`mysqldump`将源数据库的数据导出为SQL文件,然后在目标环境中使用`mysql`命令将这些数据导入。 Shell脚本可以包含以下步骤: 1. **连接源数据库**:使用`mysql`命令或者`...
本文将介绍使用 MySQL 命令和 shell 结合来将数据导出成 Excel 格式的方法。 方法一:使用 SELECT INTO OUTFILE 语句 在 MySQL 中,我们可以使用 SELECT INTO OUTFILE 语句来将数据导出成文本文件,然后再将其转换...
本文将深入探讨如何在Bash环境下利用MySQL进行CSV数据的导入和导出,以及相关的知识点。 首先,CSV(Comma Separated Values)是一种通用的数据交换格式,它以逗号分隔每一列数据,方便数据的读取和存储。在数据库...
在Magento中,数据主要存储在MySQL数据库中,因此我们可以通过以下几种方式来导出数据: 1. **使用MySQL客户端工具**:像PHPMyAdmin或MySQL Workbench这样的工具允许你直接连接到数据库并运行SQL查询,将结果导出为...
在这个场景中,我们关注的是如何利用shell脚本来实现特定的功能:根据时间条件导出数据库表数据,计算文件信息,压缩文件,以及通过FTP上传到指定的远程目录。下面将详细阐述这些知识点。 首先,我们需要理解`shell...
`mysqldump`是一个强大的命令行工具,它允许用户备份、导出MySQL数据库的数据和结构。这个工具对于开发人员和系统管理员来说是必不可少的,因为它提供了在不同环境之间迁移数据的能力,也可以用于定期备份,防止数据...
通过这种方式,shell脚本和MySQL可以协同工作,实现自动化的数据库管理任务,比如数据导入导出、批量更新、定时备份等。记住,为了安全起见,避免在脚本中明文写入密码,通常会使用环境变量或者密钥管理工具来存储...
总结来说,Kettle批量导出MySQL存储过程涉及到的关键知识点有:Kettle的数据流设计、MySQL的存储过程、数据库元数据获取、循环控制、文件生成和命令行脚本的创建。熟练掌握这些技能,将有助于我们在数据库管理和维护...
4. **安全连接**:MySQL Shell提供安全的SSL/TLS连接,确保在远程访问数据库时的数据传输安全。 5. **交互式模式**:用户可以在交互式模式下测试SQL语句、运行脚本或执行函数,这对于调试和学习新功能非常有帮助。 ...
5. **数据导入导出**:用户可以通过MySQL Shell方便地将数据导入和导出到各种格式,如CSV、JSON等。 6. **性能分析**:内置的性能分析工具可以帮助用户诊断查询性能问题,优化数据库运行效率。 7. **备份与恢复**...
mysql用shell命令导出数据,执行存储过程
- 数据导入导出:使用shell脚本配合mysqldump工具进行数据的导入和导出。 - 性能监控:通过Shell获取MySQL性能指标,如查询速率、内存使用情况等。 - 日志分析:解析MySQL的日志文件,找出可能的性能瓶颈或错误...
2. **JavaScript和Python接口**:对于喜欢使用脚本语言的开发者,MySQL Shell提供了JavaScript和Python两种语言的API,可以编写脚本来自动化执行数据库任务,如数据导入导出、备份恢复等。 3. **JSON支持**:MySQL ...
### MySQL导入导出SQL文件详解 #### 一、概述 MySQL作为一款广泛使用的开源关系型数据库管理系统,在数据管理和维护方面提供了强大的支持。其中,数据的导入导出是日常数据库管理中非常重要的环节之一。本文将详细...