云原生高级--shell自动化脚本备份

=======================================================================

shell自动化脚本实战---备份

=======================================================================

数据库备份: 结合计划任务 MySQL、 Oracle

网站备份: tar,异地保存--ftp、rsync

一、数据库备份

1.利用自带工具mysqldump 实现数据库分库备份

分库备份:

1> 如何获取备份的数据库列表

复制代码
[root@localhost mysql-5.7.18]# DBS=`mysql -uroot -p'123456' -N -e 'show databases' | egrep -v "information_schema|mysql|performance_schema|sys"`
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@localhost mysql-5.7.18]# echo $DBS

2> 循环遍历

复制代码
for db in $DBS
do
	echo 备份 $db
done

3> 备份语句实现

复制代码
[root@localhost ~]# mysqldump -uroot -p'123456' -B $db > $db.sql
优化:
[root@localhost ~]# mysqldump -uroot -p'123456' -B user > user_$(date +%F).sql
分库备份参考代码:
#!/bin/bash

#define var
BAK_DIR=/backup/db
CMD_OPT="-uroot -p123456"
EX_DB="information_schema|mysql|performance_schema|sys"

DBS=$(mysql ${CMD_OPT} -N -e 'show databases' | egrep -v ${EX_DB})


# main program
[ -d ${BAK_DIR} ] || mkdir -p ${BAK_DIR}

for db in $DBS
do
   mysqldump ${CMD_OPT} -B $db > ${BAK_DIR}/${db}_$(date +%F).sql
done

2、分表

复制代码
mysql -uroot -p'123456' -N -e 'show tables from user'

#!/bin/bash

#define var
BAK_DIR=/backup/db
CMD_OPT="-uroot -p123456"
db=user
TABS=$(mysql ${CMD_OPT} -N -e "show tables from $db")


# main program
[ -d ${BAK_DIR}/$db ] || mkdir -p ${BAK_DIR}/$db

for tab in $TABS
do
mysqldump ${CMD_OPT} $db $tab > ${BAK_DIR}/$db/${db}_$tab_$(date +%F).sql

3、分库分表

复制代码
#define var
BAK_DIR=/backup/db
CMD_OPT="-uroot -p123456"
EX_DB="information_schema|mysql|performance_schema|sys"

DBS=$(mysql ${CMD_OPT} -N -e 'show databases' | egrep -v ${EX_DB})

for db in $DBS
do
	TABS=$(mysql ${CMD_OPT} -N -e "show tables from $db")
	[ -d ${BAK_DIR}/$db ] || mkdir -p ${BAK_DIR}/$db
	mysqldump ${CMD_OPT} -B $db > ${BAK_DIR}/${db}_$(date +%F).sql

	for tab in $TABS
	do
	  mysqldump ${CMD_OPT} $db $tab > ${BAK_DIR}/$db/${db}_$tab_$(date +%F).sql
	done
done

4.优化

复制代码
优化:
#!/bin/bash

#define var
BAK_DIR=/backup/db
CMD_OPT="-uroot -p123456"
EX_DB="information_schema|mysql|performance_schema|sys"

DBS=$(mysql ${CMD_OPT} -N -e 'show databases' | egrep -v ${EX_DB})

# main program
for db in $DBS
do
  TABS=$(mysql ${CMD_OPT} -N -e "show tables from $db")
  [ -d ${BAK_DIR}/$db ] || mkdir -p ${BAK_DIR}/$db
  mysqldump ${CMD_OPT} -B $db | gzip > ${BAK_DIR}/$db/${db}_$(date +%F).sql.gz
# 分表备份
for tab in $TABS
  do
    mysqldump ${CMD_OPT} $db $tab | gzip > ${BAK_DIR}/$db/${db}_$tab_$(date +%F).sql.gz
  done
done
相关推荐
荣--2 天前
一键部署不是为了省时间 —— 它是把"买来的 PaaS"变成"自己的平台"的拐点
运维·zabbix·工程化·一键部署·平台化·边界设计
江华森2 天前
动手实战学 Docker — 从零到集群编排完全指南
运维
Avan_菜菜2 天前
FRP 内网穿透完整实战:从 HTTP 映射到 HTTPS 自签代理
运维·nginx·https
SelectDB3 天前
Litefuse 开源并推出单进程轻量模式,25 秒就能跑起来的 Agent 可观测与评估平台
运维·后端·自动化运维
XIAOHEZIcode5 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户0328472220705 天前
如何搭建本地yum源(上)
运维
大树888 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠8 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质8 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工8 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信