MySQL数据库备份脚本

这篇具有很好参考价值的文章主要介绍了MySQL数据库备份脚本。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

1.MySQL数据库备份脚本

#!/bin/bash

#---------------------------------------------------------------------------------#
#Config
user=root
pw=isiteam
ip=192.168.1.105
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
date_year=`date -d "-1 year"  +%Y`
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`
	do
		sed -i "/\<$i\>/d" $new_db
	done
	#按天创建文件夹
	if [  ! -d "$data/$date4"   ]
	then
		mkdir -p $data/$date4
	fi
	for c in `cat $new_db`
	do
		#创建用于填写备份表的文件
		if [ ! -d "$delete_table_path/${c}_table" ]
		then
			touch $delete_table_path/${c}_table 
		fi
		#创建不备份填写表的文件
		if  [ ! -d "$delete_table_path/${c}_list_structure"  ]
		then
			touch $delete_table_path/${c}_list_structure 
		fi
	done
	#在每日文件夹内创建数据文件
	for q in `cat $new_db`
	do
		if [ ! -d "$data/$date4/$q" ]
		then
			mkdir -p $data/$date4/$q
		fi
	done

#---------------------------------------------------------------------------------#

	echo "到此库表文件已通过脚本自动化在 ${delete_table_path} 目录中创建完成,自行将不需要备份的表名填写到对应的文件中(表名_list_structure),然后编辑脚本注释掉此块代码正常运行即可!"
	exit

#---------------------------------------------------------------------------------#
#查询表并输出到相应文件中;
	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_ago
	done
    #删除文件内按年月为名的表
	for e in `cat $new_db`
	do
		for t in `cat $delete_table_path/${e}_list_structure`
		do
			sed -i  "/\<$t\>/d" $delete_table_path/${e}_table
		done
		sed -i "/2022/d" $delete_table_path/${e}_table
		sed -i "/$dateY/d" $delete_table_path/${e}_table
		sed -i "/$date_year/d" $delete_table_path/${e}_table
		sed -i "/Tables_in_*/d" $delete_table_path/${e}_table
	done
#---------------------------------------------------------------------------------#
#备份表
	#需要备份表的总数+1
	number1=`expr $(cat $delete_table_path/new_db |wc -l ) + 1`
	for ((s=1;s<$number1;s++))
	do
		db_structure=`cat  ${new_db} | awk "NR==$s"`
		for a in  `cat $delete_table_path/${db_structure}_list_structure`
		do
			echo "$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}.sql
		done
		
	done
#---------------------------------------------------------------------------------#
#备份数据
	#需要备份表的总数+1
	number2=`expr $(cat $delete_table_path/new_db |wc -l ) + 1`
	for ((d=1;d<$number2;d++))
	do
		db_data=`cat  ${new_db} | awk "NR==$d"`
		for b in  `cat $delete_table_path/${db_data}_table`
		do
			echo "$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}.sql
		done
		
	done

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<$number2;d++)) $number2为备份数据库的总数+1;

3.脚本执行效果

PS:环境:文章来源地址https://www.toymoban.com/news/detail-437628.html

  • 数据库: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   mblog_info_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 ---  mblog_info--- 表结构
20230509 02:00 ---  导出 --- monitor_caiji ---  video_brief --- 数据
20230509 02:00 ---  导出 --- monitor_caiji ---  video_list --- 数据

到了这里,关于MySQL数据库备份脚本的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • PostgreSQL数据库定时备份脚本

          大多数数据库管理系统都提供了自带的备份工具,可以使用这些工具来进行备份操作。     例如: MySQL:使用 mysqldump 命令进行备份。 PostgreSQL:使用 pg_dump 命令进行备份。       以下是一个用于定时备份 PostgreSQL 数据库的示例脚本。这个脚本将使用 pg_dump 工具来创建

    2024年02月11日
    浏览(50)
  • Powershell脚本自动备份dhcp数据库

    大致列举几点进行一下说明: 如果DHCP数据库出现问题,如数据丢失、损坏或不一致,自动备份是恢复关键网络配置信息的关键。 在网络故障或DHCP服务器故障的情况下,自动备份还可用于快速重建和恢复网络配置。这有助于减少停机时间和业务中断。 定期自动备份还允许在

    2024年02月08日
    浏览(47)
  • windows 环境下使用脚本备份 oracle 数据库数据

    当我们的系统部署在 windows 上时,且使用的数据库为 oracle 时,需要将数据库的数据定时备份。 提示:以下是本篇文章正文内容,下面案例可供参考 搜索任务计划程序 创建任务 新建触发器,执行时间设置好 新建操作,选择bat脚本文件 上述基本步骤创建完成之后便可以看到

    2024年01月17日
    浏览(60)
  • 定时备份MySQL数据库

    MySQL 提供了 mysqldump 命令来实现导出数据库,命令用法如下: 在 Linux 服务器中结合 crontab 定时命令实现定时备份数据库,同时支持压缩、备份日志、定期清理等功能。 新建 mysql 的备份命令脚本 复制以下内容: 至此,执行该脚本,可以生成压缩的数据库.sql文件 给 shell 设置

    2024年02月07日
    浏览(64)
  • MySQL_数据库备份

            根据备份的方法(是否需要数据库离线)可以将备份分为: 热备(Hot Backup) 冷备(Cold Backup) 温备(Warm Backup) 热备:在数据库运行状态下进行备份,备份时不需要停止数据库的服务。但是,由于备份时需要访问数据库文件,因此备份过程中可能会影响数据库的

    2024年02月03日
    浏览(39)
  • mysql数据库定时备份

    1  环境检查 1. 执行本手册前,请正确安装Mysql数据库,并知晓数据库用户名和密码; 2. 执行本手册前,请先确定Mysql数据库数据要储存的天数;默认30 2  批处理文件配置 当前步骤主要实现以下目标配置: Ø 配置Mysql安装目录,定义Mysql目录下BIN目录路径,用于定时导出数

    2024年02月08日
    浏览(62)
  • mysql数据库自动备份

    服务器中数据库的数据是最重要的东西,如果因为某些情况导致数据库数据错误,数据错乱或数据库崩溃,这时一定要及时的修复,但如果数据丢失或数据没法用了,这时就要回滚数据了,而这时就需要我们经常的备份数据库的数据 一般别人都会推荐使用Navicat来备份和连接数据库,但

    2024年02月02日
    浏览(61)
  • MySQL数据库备份实战

    一、为什么进行数据库备份? 保证业务连续性 :数据库中存储着企业的核心业务数据,如果数据丢失或损坏,将会对企业的业务运营产生重大影响。通过定期备份数据库,可以在系统故障或数据丢失时快速恢复数据,保证业务的连续性。 保护数据资产 :数据库中存储着企业

    2024年02月08日
    浏览(49)
  • 如何备份与恢复MySQL数据库数据

    目录 一、MySQL备份 备份方式 完全备份 差异备份 增量备份 二、常见的备份方法 物理冷备 专用备份工具 mysqldump 或 mysqlhotcopy 启用二进制日志进行增量备份 第三方工具备份 三、MySQL完全备份 四、数据库完全备份分类 物理冷备份与恢复 mysqldump备份与恢复 五、物理冷备份与恢复

    2024年02月16日
    浏览(72)
  • MYSQL数据库各种备份策略

    数据库备份,数据库为school,素材如下 1.创建student和score表 2.为student表和score表增加记录 3.备份数据库school到/backup目录 4.备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库 [root@localhost ~]# mysqldump -uroot -p123456 -B school --add-drop-table /

    2024年02月16日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包