当前位置: 首页 > news >正文

MySQL数据库备份脚本

PS:此脚本简单易懂,根据实际情况修改个别参数测试后即可使用,如有错误请指出!

1.MySQL数据库备份脚本

#!/bin/bashuser=
pw=
ip=
dateY=`date "+%Y"`
date2=`date "+%Y%m%d"`
date3=`date "+%Y%m%d %H:%M"`
date4=`date "+%d"`
date_ago=`date -d "-3 day"  +%d`
data=./data
delete_db=./db_and_tables/old_db
new_db=./db_and_tables/new_db
delete_table_path=./db_and_tables#---------------------------------------------------------------------------------#
#查询数据库输出到文件删除不需要的数据库并生成文件夹;/usr/local/mysql/bin/mysql -u$user -p$pw -h$ip -e "show databases" > $new_db for i in `cat $delete_db`dosed -i "/$i/d" $new_dbdoneif [  ! -d "$data/$date4"   ]thenmkdir -p $data/$date4fifor q in `cat $new_db`doif [ ! -d "$data/$date4/$q" ]thenmkdir -p $data/$date4/$qfidone
#---------------------------------------------------------------------------------#
#查询表并输出到相应文件中;for w in `cat $new_db`do/usr/local/mysql/bin/mysql -u$user -p$pw -h$ip -e "use $w ; show tables" > $delete_table_path/${w}_table#删除3天前的备份rm -rf $data/$date_agodonefor e in `cat $new_db`dofor t in `cat $delete_table_path/${e}_list_structure`dosed -i  "/\<$t\>/d" $delete_table_path/${e}_tabledone#根据过滤条件过滤掉不需要的表;sed -i "/2022/d" $delete_table_path/${e}_tablesed -i "/$dateY/d" $delete_table_path/${e}_tablesed -i "/Tables_in_*/d" $delete_table_path/${e}_tabledone
#---------------------------------------------------------------------------------#
#备份表for ((s=1;s<2;s++))dodb_structure=`cat  ${new_db} | awk "NR==$s"`for a in  `cat $delete_table_path/${db_structure}_list_structure`doecho "$date3 ---  导出 --- $db_structure ---  $a --- 表结构" >> ./out.out/usr/local/mysql/bin/mysqldump -u$user -p$pw -h$ip  -d  $db_structure $a > $data/$date4/$db_structure/${a}_${date2}.sqldonedone
#---------------------------------------------------------------------------------#
#备份数据for ((d=1;d<2;d++))dodb_data=`cat  ${new_db} | awk "NR==$d"`for b in  `cat $delete_table_path/${db_data}_table`doecho "$date3 ---  导出 --- $db_data ---  $b --- 数据" >> ./out.out/usr/local/mysql/bin/mysqldump -u$user -p$pw -h$ip    $db_data $b > $data/$date4/$db_data/${b}_${date2}.sqldonedone

2.脚本结构解释

[root@bj-1-77 12]# ls
data  db_and_tables  out.out  script.sh
[root@bj-1-77 12]# ls db_and_tables/
monitor_caiji_list_structure   old_db
  • data:是个文件夹,用于存储备份下来的数据;
  • db_and_tables:是个文件夹,用于存储脚本中需要的配置参数;
    • old_db :存储不需要备份的数据库;脚本会通过此配置从而生成需要备份数据库的新文件new_db
    • monitor_caiji_list_structure:在执行脚本前将不需要备份表的表名写入此文件中,执行脚本后会生成新文件monitor_caiji_table,文件名命名规则:({数据库名称}_list_structure);
  • out.out:脚本执行后输出的日志记录;
  • 脚本中for ((d=1;d<2;d++)) 2为备份数据库的总数+1;

3.脚本执行效果

PS:环境:

  • 数据库:monitor_caiji
  • 备份的表:video_brief、video_list
  • 不备份的表:mblog_info
[root@bj-1-77 12]# ls
data  db_and_tables  out.out  script.sh
#备份下的数据
[root@bj-1-77 12]# ls data/09/monitor_caiji/
video_brief_20230509.sql  video_list_20230509.sql   
[root@bj-1-77 12]# ls db_and_tables/
monitor_caiji_list_structure  monitor_caiji_table  new_db  old_db
[root@bj-1-77 12]# cd db_and_tables/
#不备份的数据库
[root@bj-1-77 db_and_tables]# cat old_db 
Database
information_schema
mysql
performance_schema
sys
#需要备份的数据库
[root@bj-1-77 db_and_tables]# cat new_db 
monitor_caiji
#不备份的数据表
[root@bj-1-77 db_and_tables]# cat monitor_caiji_list_structure 
mblog_info
#需要备份的数据表
[root@bj-1-77 db_and_tables]# cat monitor_caiji_table 
video_brief
video_list
#日志
[root@bj-1-77 12]# tail -f out.out 
20230509 02:00 ---  导出 --- monitor_caiji ---  video_brief --- 数据
20230509 02:00 ---  导出 --- monitor_caiji ---  video_list --- 数据
http://www.lryc.cn/news/65837.html

相关文章:

  • 【2023 · CANN训练营第一季】应用开发深入讲解——第三章应用调试
  • 黎曼几何与黎曼流形
  • lua | 运算符与字符串
  • NetBackup 10.2 新功能介绍:PostgreSQL 和 MySQL 自动化恢复达成
  • ADRV9002官方例程开发过程中遇到的问题
  • Figma转换为sketch,分享这3款工具
  • 淘宝天猫1688京东商品详情API接口,封装接口可高并发
  • 虹科荣誉 | 虹科工业物联网产品荣获中国自动化产业年会用户信赖产品奖!
  • SwiftUI 如何让文本自动支持查找和替换功能?
  • SpringCloud全面学习笔记之初尝美妙篇
  • Spring MVC框架
  • Illustrator如何使用图层与蒙版之实例演示?
  • Office Tool Plus的使用
  • ​射频PCB 设计​的六大条技巧
  • 优化了成本和安装难度后,UWB信标能否取代蓝牙信标?
  • 深入理解Java虚拟机——垃圾回收算法
  • git-rebase和merge
  • 【JavaWeb 用户认证】Cookie、Session、Token、JWT、Interceptor、SpringBoot、Spring Security
  • 6个月的测试,来面试居然要15K,我一问连5K都不值
  • RSA--维纳攻击--代码和题目分析
  • 飞腾ft2000-麒麟V10-SP1安装Docker、运行gitlab容器
  • C++ 的类型转换
  • 【Windows】普通控制台EXE程序转为windows服务方式运行的详细步骤
  • NSSCTF [suctf 2019]hardcpp WP 控制流混淆
  • 计算机毕业论文内容参考|基于神经网络的网络安全态势感知技术研究
  • Flask框架之Request、Response、Cookies、Session等对象的使用
  • 信号与槽机制一
  • nodejs 复制文件到指定目录
  • 第八章 使用Apache服务部署静态网站
  • Three——四、几何体、高光网络材质、锯齿模糊以及GUI库的使用