`

使用shell脚本操作和备份Mysql数据库表

 
阅读更多
●在sh中执行MySQL脚本
mysql -uroot -pvendingihr < /mnt/soft/app_bak/create_orderbackDB.sql

●在sh中执行MySQL命令
mysql -uroot -pvendingihr -e 'use vendingdb;select count(1) from tb_orders;'

●sh中执行MySQL命令,并将结果返回给sh变量
OrderCount=mysql -uroot -pvendingihr -e 'use vendingdb;select count(1) from tb_orders;'|sed '1d'

///sed是非交互式的编辑器。它不会修改文件除非使用shell重定向来保存结果。
///因为sed把每一行都存在临时缓冲区中对这个副本进行编辑所以不会修改原文件。 sed'1d'是删除结果中第一行。


●以下是一个备份Mysql数据库指定表,在订单表数据达到100万行时进行备份并重新初始化订单表的一个实例:
#ql -uroot -pvendingihr < /mnt/soft/app_bak/initorder.sql
#!/bin/bash
BACKUP_DATE=`date +%Y%m%d`
BACKUP_TIME=`date +%F\ %T`
WEEK=`date +%w`
IP=`/sbin/ifconfig eth0|/bin/grep "inet addr"|/bin/cut -d : -f 2|/bin/awk '{print $1}'`
BACKUP_PATH="/mnt/mysqlbak"
LOG_FILE="${BACKUP_PATH}/mysql_${BACKUP_DATE}.log"
MYSQL_USER='root'
MYSQL_PASSWORD='vendingihr'
MYSQL_PATH="/usr/bin"
MYSQL="${MYSQL_PATH}/mysql -u${MYSQL_USER} -p${MYSQL_PASSWORD}"
MYSQL_DUMP="${MYSQL_PATH}/mysqldump -u${MYSQL_USER} -p${MYSQL_PASSWORD}"
USEDBNAME="vendingdb"
BACK2DBNAME="vending_orderbakdb"
TB_ORDER="tb_orders"
TB_ORDERDT="tb_orderdetail"
BACKUP_FULL_PATH=${BACKUP_PATH}/${BACKUP_DATE}/${BACK2DBNAME}
echo backupDate:${BACKUP_DATE}
echo backupTime:${BACKUP_TIME}
echo backupPath:${BACKUP_PATH}
echo ${WEEK}
echo IP:${IP}
echo mysql:${MYSQL}

# if BACKUP_PATH doesn't exists,mkdir
[ ! -d "${BACKUP_PATH}" ] && mkdir -p "${BACKUP_PATH}"
#========================Backup start==========================
echo "--------------backup start ${BACKUP_TIME}-----------------">>${BACKUP_TIME}
# stop slave SQL_THREAD and flush logs and read from master status to know binlog file name and positon
${MYSQL} -e "stop slave SQL_THREAD;flush logs;"
${MYSQL} -e "show master status \G">>${LOG_FILE}
echo >>${LOG_FILE}

#start backup every table
DBNAME="`${MYSQL} -e 'show databases;'|sed '1d'`"
echo "DATABASE LIST:" >>${LOG_FILE}
echo "------Database List:------"
echo ${DBNAME}>>${LOG_FILE}
echo >>${LOG_FILE}
for dbname in ${DBNAME}	
do
	echo ${dbname}
done
echo "------use "${USEDBNAME}"------"
echo "Create backup path...->"${BACKUP_FULL_PATH}
mkdir -p "${BACKUP_FULL_PATH}"
#cd /backup/${dbname}_${WEEK}

echo -e "/////////${USEDBNAME} backup start ${BACKUP_TIME}">>"${LOG_FILE}"
echo "//////////${USEDBNAME} backup start ........."
TABNAME=`${MYSQL} ${USEDBNAME} -e 'show tables;'|sed '1d'`

echo "TABLE LIST:" >>${LOG_FILE}
echo "Table List:"
echo ${TABNAME}>>${LOG_FILE}
echo >>${LOG_FILE}
for tabname in ${TABNAME}
do
echo ${tabname}
done
echo -e "${TB_ORDER} backup start ${BACKUP_TIME}">>"${LOG_FILE}"
echo "${TB_ORDER} backup start ${BACKUP_TIME}"

OrderCount=${MYSQL} ${USEDBNAME} -e 'select count(1) from tb_orders;'|sed '1d'
if [OrderCount>1000000 ]; then
  ${MYSQL_DUMP} ${USEDBNAME} ${TB_ORDER}>${BACKUP_PATH}/${USEDBNAME}_${WEEK}/${TB_ORDER}.sql
  ${MYSQL_DUMP} ${USEDBNAME} ${TB_ORDERDT}>${BACKUP_PATH}/${USEDBNAME}_${WEEK}/${TB_ORDERDT}.sql
  ${MYSQL} ${USEDBNAME} -e ' truncate table tb_orders;'
  ${MYSQL} ${USEDBNAME} -e ' truncate table tb_orders;'
fi

echo "/////${TB_ORDER} backup complete..."



分享到:
评论

相关推荐

    基于xtrabackup的MySQL数据库备份及还原Shell脚本.zip

    了解这些基本概念后,你可以查看压缩包内的`基于xtrabackup的MySQL数据库备份及还原Shell脚本`,这个脚本将详细展示如何结合`xtrabackup`和Shell来自动化MySQL数据库的备份与还原流程。在实际使用时,你需要根据自己...

    MySQL(Docker) 自动备份 Shell 脚本

    今天这个备份分二个版本一个是linux上直接安装的mysql,另一种是docker上安装的mysql。基本操作都一样只是备份sql语句不同而已。可以选择设置需要备份的库,自动备份压缩,自动删除 7 天前的备份,需要使用 crontab ...

    Linux下定时备份MySQL数据库的Shell脚本.pdf

    ### Linux下定时备份MySQL数据库的Shell脚本知识点详解 #### 一、背景介绍与重要性 对于每一个在线网站或服务而言,数据备份是一项至关重要的任务。无论是为了应对未来的版本升级,还是服务器迁移的需求,定期备份...

    shell脚本可配置备份mysql5.7.8以前数据库.rar

    在这个场景下,shell脚本用于自动化备份MySQL数据库,节省手动操作的时间和精力。 MySQL是世界上最流行的开源关系型数据库管理系统,5.7.8版本是在其发展历史中一个重要的里程碑。在该版本之前,数据库的备份主要...

    shell编程备份mysql数据库.sh

    防止误删服务器数据库 ,使用Shell脚本备份数据库: ### 1、需求分析: 1)每天凌晨2:10备份数据库atguiguDB到/data/backup/db 2)备份开始和备份结束能够给出相应的提示信息 3)备份后的文件要求以备份时间为...

    通过shell脚本,备份mysql数据库

    linux系统通过shell脚本,备份mysql数据库,并通过定时任务的配置,每天在设定的时间内执行备份计划

    shell脚本备份mysql数据库

    可以通过修改配置直接备份mysql中的所有数据库数据

    shell脚本可配置备份mysql5.7.8以前数据库异常sendEmail25发邮件.rar

    这篇文档将深入解析标题"shell脚本可配置备份mysql5.7.8以前数据库异常sendEmail25发邮件.rar"中的关键知识点,包括shell脚本、MySQL数据库备份、异常处理以及sendEmail服务。 首先,我们要了解shell脚本。Shell...

    Linux下mysql数据库备份以及恢复shell脚本

    总结,通过编写和使用`databackup.sh`和`datarestore.sh`这样的Shell脚本,Linux用户可以方便地对MySQL数据库进行自动化备份和恢复,确保在系统故障或数据丢失时能够迅速恢复服务,保障业务连续性。这两个脚本是IT...

    Mysql备份可以执行的shell脚本

    总结来说,通过编写shell脚本,我们可以实现MySQL数据库的自动化备份,包括全量备份和(借助第三方工具的)增量备份。创建并管理备份目录,结合cron job实现定时任务,确保数据的安全性和可靠性。

    shell脚本可配置多线程备份mysql5.7.8以后数据库.rar

    在本例中,shell脚本用于控制多线程备份MySQL数据库的过程。 多线程备份的关键在于并发执行,这意味着多个备份任务可以同时进行,从而缩短总备份时间。在MySQL 5.7.8之后的版本中,可以通过`mysqldump`命令来导出...

    shell脚本可配置备份mysql5.7.8以前数据库异常mail465发邮件.rar

    在IT行业中,数据库备份是维护数据安全的重要环节,特别是在企业环境中,定期备份能防止意外数据丢失。...用户需要了解shell脚本编写、MySQL数据库管理以及邮件发送的基本知识,以便正确配置和使用这个工具。

    Linux shell实现每天定时备份mysql数据库

    在Linux环境中,使用shell脚本来实现每天定时备份MySQL数据库是一种常见的自动化操作,它可以帮助系统管理员高效地维护数据库的备份策略,确保数据的安全性。以下将详细介绍如何通过Linux shell实现这个功能。 首先...

    Linxu系统shell脚本备份mysql数据库

    Linxu系统中,通过shell脚本,调用mysqldump,备份mysql数据库

    shell脚本mysql导出指定表并分表存储

    mysql导出指定表并分表存储sql文件且压缩的shell脚本,数据库数据过大时,可以用于数据库备份

    mysql数据库备份shell脚本,每天备份,只保留30天的备份数据

    mysql数据库备份shell脚本,每天备份,只保留30天的备份数据

    shell 脚本对数据库定时备份

    本文将详细讲解如何使用Shell脚本实现对数据库的定时备份,以及涉及到的相关技术。 首先,Shell脚本是Unix/Linux操作系统中的一种强大的命令行解释器,它允许用户编写自动化任务,例如执行一系列命令、处理文件或...

    mysql自动备份shell脚本

    以下是一些关于如何创建和使用MySQL自动备份shell脚本的详细说明: 首先,我们需要一个能够执行备份、压缩、清理旧备份并(可选地)将备份文件传输到远程位置或发送电子邮件通知的脚本。以下两个示例提供了不同选项...

    mysql自动备份数据库脚本

    在本场景中,我们有一个名为`auto_mysql_back.sh`的shell脚本,它用于自动化MySQL数据库的备份过程。下面将详细解释这个脚本可能涉及的关键知识点。 1. **MySQL数据库备份**: - **全量备份**:通常,全量备份是指...

    Linux自动备份MySQL数据库并上传到FTP服务器上shell脚本

    ### Linux自动备份MySQL数据库并上传到FTP服务器上Shell脚本详解 #### 一、脚本概述 本脚本主要用于在Linux环境下实现MySQL数据库的自动备份,并将备份文件上传至指定的FTP服务器。对于需要定期备份MySQL数据库的...

Global site tag (gtag.js) - Google Analytics