通过shell脚本实现MySQL备份并恢复,for in流程控制

从3306备份数据库,还原到3307数据库上,通过shell脚本的for in流程控制实现

#!/bin/bash

my_date=`date +%Y%m%d`

my_time=`date +%H%M`

my_date_yesterday=`date +%Y%m%d --date=‘1 days ago‘`

echo "----------------------------------------------------"

echo "$my_date $my_time"

backup_dir="/data/backup3307/${my_date}"

mkdir -p ${backup_dir}

echo "db backup dir: ${backup_dir}"

DBS="data1 data2 data3 data4 "

for db in ${DBS}

do

echo "${db} backup start..."

echo "$my_date $my_time"

file="${backup_dir}/${db}_${my_date}.sql"

mysqldump --login-path=backup --single-transaction --set-gtid-purged=OFF --opt --triggers --routines --events ${db} > ${file}

size=`ls -lh ${file}|awk ‘{print $5}‘`

echo "size: ${size}"

echo "${db} backup end. "

echo "$my_date $my_time"

echo "${db} restore start..."

mysql --login-path=restore -e "CREATE DATABASE ${db}_$my_date_yesterday DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"

mysql --login-path=restore "${db}_$my_date_yesterday" < ${file}

echo "${db} restore end."

echo "$my_date $my_time"

echo "gzip ${file}"

gzip ${file}

done

# delete old backup data

old_date=`date +%Y%m%d -d ‘5 days ago‘`

rm -rf /data/backup3307/${old_date}

for in循环举例:

#!/bin/sh

s="a b c "

for i in $s

do

echo "i is $i"

done

执行结果:

# ./for_in.sh

i is a

i is b

i is c

时间: 2024-10-08 16:00:29

通过shell脚本实现MySQL备份并恢复,for in流程控制的相关文章

Mysql备份和恢复

Mysql备份和恢复 备份 热备,是指对数据库运行中直接进行备份,对正在运行的数据库没有任何影响: 冷备,是指在数据库停止(关闭)下进行备份,只需拷贝相关的数据物理文件: 温备,是指对数据库运行中直接进行备份,但对当前数据库操作有所影响,很少用. 按备份出来的文件内容分为: 逻辑备份: 裸文件备份. 逻辑备份后文件内容是可读的,通常是文本文件,内容一般是Sql语句或表内的实际数据,如mysqldump或select * into outfile等方法.适用于数据库的升级.迁移,恢复时间较长. 裸

Shell脚本读取mysql结果集各数据项的值

在Linux下用shell脚本读取MySQL结果集各数据项的值,按行读取sql结果,将sql执行结果读取到shell变量中,然就可进行处理. HOSTNAME="172.16.xx.xx"    #数据库信息PORT="3306"USERNAME="root"PASSWORD="root" DBNAME="log"         #数据库名称TABLENAME="student" CO

MySQL 备份和恢复(三)Xtrabackup实现热备:完全备份+增量备份

Percona XtraBackup is the world's only open-source, free MySQL hot backup software that performs non-blocking backups for InnoDB and XtraDB databases. With Percona XtraBackup, you can achieve the following benefits: Backups that complete quickly and

使用shell脚本调用mysql数据库存储过程,并设置定时任务

本来是要mysql数据库中创建事件任务来,定时执行存储过程,做数据传输的...后来由于种种原因,就使用crontab来定时执行,调用存储过程. 实现这个数据传输分为两步: 第一步:编写shell脚本调用mysql数据库存储过程,如下: #!/bin/bash#0 1 * * * sh /home/drmTrans3/rj_proc.shhost1=127.0.0.1user=systempasswd=linuxport=3306mysql -h${host1} -u${user} -p${pas

MySQL 备份和恢复(一)mysqldump

备份方式:    热备:不中断服务    温备:备份过程中不可写,要加读锁    冷备:需要停掉服务 备份策略一:mysqldump + binlog 完全备份 + 增量,用mysqldump定期全备,每天(根据实际情况来)备份二进制日志. mysqldump类似于一个mysql的客户端,所以用mysqldump备份时,mysql服务要启动起来,常用参数: -u username | --user=username 指定备份的用户 -p password | --password=passwor

MySQL 备份和恢复(二)基于LVM实现几乎热备

LVM(Logical Volume Management逻辑卷管理)实现几乎热备的原理:利用LVM的快照卷达到可以保存数据库在某一时刻的瞬时状态,只需把当时的快照备份出来即可. LVM的快照原理:简单的讲就是lvm对某个卷创建快照卷后,快照卷则作为原卷的另一个访问入口,当原卷的数据发生变化时,则先把原卷的内容先复制一份到快照卷,然后才会继续对原卷数据的修改,这也就是之所以快照卷的容量大小应该大于整个备份过程中数据库的变化量的原因.所以当备份完成以后,快照卷也就可以拆除了,它的作用就是在备份过程

shell脚本执行mysql语句出现的问题

shell脚本执行mysql语句出现的问题,问群里的大牛的到解答,是单引号问题,改成双引号即可 #小提示(对本主题没什么关联):ubuntu目前使用的是dash,导致一些for(()函数无法正常执行, sudo dpkg-reconfigure  dash 选择NO,就改会bash了 一.脚本内容如下: #/bin/bash hostname='192.168.2.52' port=3306 username='root' password='123456' #dbname='' #-----s

mysql存储过程、存储函数及流程控制

存储过程 一.基本语法 create procedure sp_name([proc_parameter[,...]]) [characteristic...]routine_body begin end sp_name 表示存储过程的名字 proc_parameter 存储过程参数例表[IN OUT INOUT]三个部分组成 其中IN 表示传进来的参数 其中OUT 表示传出去的参数 其中INOUT 表示传进来但最终传回的参数 routine_body 参数是SQL代码的内容(类似于触发器的fo

使用shell脚本实现自动备份MySQL数据库

192.168.1.2服务器对192.168.1.1服务器上的MySQL数据库进行备份. 必须满足的条件: 1.在192.168.1.1服务器上创建专门用来备份的数据库账号,并赋予相应的权限: mysql> grant select,lock tables on *.* to 'operator'@'192.168.%.%' identified by '123456'; #备份数据库需要账号具有查看表和锁定表的权限 2.在192.168.1.2服务器上使用该账号进行手工备份,测试是否可以备份成