mysql数据备份批处理文件正式版已测试通过

1.数据库全表原始数据.ibd文件备份为.sql文件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

中心思想找到源文件(.ibd)备份到目的地成.sql文件

@echo off

rem 设置 MySQL 参数
rem mysql安装地址
set mysql_home=C:\Program Files\MySQL\MySQL Server 8.0
rem mysql存放表 .ibd 文件 其实就是mysql表存放位置
set mysql_data=C:\ProgramData\MySQL\MySQL Server 8.0\Data
rem mysql数据库连接地址
set dbhost=localhost
set dbport=3306
set dbuser=root
set dbpass=123456
rem 需要备份的数据库名字
set database_name=book
rem 备份到目的地目录
set backup_dir=E:\testBackData
rem 备份对应导出文件名
set backup_name=%Date:~0,4%%Date:~5,2%%Date:~8,2%
set date=%Date:~0,4%-%Date:~5,2%-%Date:~8,2%

rem 更改命令提示符代码页为 UTF-8 中文
chcp 65001 > nul

echo 开始备份时间:%date%-%time%
rem 进入 MySQL 安装目录
cd %mysql_home%\bin

rem 使用 mysqldump 命令备份数据库
.\mysqldump.exe -h%dbhost% -P%dbport% -u %dbuser%  -p%dbpass%    %database_name% > %backup_dir%\%backup_name%.sql

rem 复制 .ibd 文件到备份目的地目录
xcopy /s %mysql_data%\%database_name% %backup_dir%

rem 备份结束提示
echo Backup completed.
echo 备份完成时间:%date%-%time%

rem 提示
pause

1.1理解date含义

set date=%Date:~0,4%%Date:~5,2%%Date:~8,2% 
这行代码是用来定义一个名为 date 的变量,其值是当前日期的年、月、日的组合。

%Date% 是一个系统预定义的环境变量,它存储了当前日期的字符串值,格式通常是 "yyyy/MM/dd" (例如:2023/08/23)。

:~0,4 表示从 %Date% 字符串的第0个位置开始截取,截取长度为4个字符,即提取出年份的部分(例如:2023)。

:~5,2 表示从 %Date% 字符串的第5个位置开始截取,截取长度为2个字符,即提取出月份的部分(例如:08)。

:~8,2 表示从 %Date% 字符串的第8个位置开始截取,截取长度为2个字符,即提取出日期的部分(例如:23)。

最后,通过将这三个截取结果进行拼接,就得到了一个形如 "yyyyMMdd" 的日期字符串,例如:20230823。这个字符串被赋值给变量 date 作为备份文件名的一部分

2.备份原始表中部分表 --改进版

1.比如备份 test1和test2 表
2.加载部分表
后续更新

2.0实现逻辑备份语法

说明: 备份的文件并非一定要求后缀名为.sql,例如后缀名为.txt的文件也是可以的。

mysqldump –u 用户名称 –h 主机名称 –p密码 待备份的数据库名称[tbname, [tbname...]]> 备份文件名称.sql

2.1 backPartTable表内容

在这里插入图片描述

2.2备份运行

在这里插入图片描述

2.3实操代码

@echo off

rem 设置 MySQL 参数
rem mysql安装地址
set mysql_home=C:\Program Files\MySQL\MySQL Server 8.0
rem mysql存放表 .ibd 文件
set mysql_data=C:\ProgramData\MySQL\MySQL Server 8.0\Data
rem mysql数据库连接地址
set dbhost=localhost
set dbport=3306
set dbuser=root
set dbpass=123456
rem 需要备份的数据库名字
set database_name=book
rem 备份到目的地目录
set backup_dir=E:\testBackData
rem 备份对应导出文件名
set backup_name=%Date:~0,4%%Date:~5,2%%Date:~8,2%
set date=%Date:~0,4%-%Date:~5,2%-%Date:~8,2%

rem 更改命令提示符代码页为 UTF-8
chcp 65001 > nul

echo 开始备份时间:%date%-%time%
rem 进入 MySQL 安装目录
cd %mysql_home%\bin

rem 使用 mysqldump 命令备份数据库

rem 备份部分数据表 每个表名独占一行
set backuptable_list_file=E:\testBackData\backPartTable.txt

for /f "tokens=* delims=" %%i in ('type %backuptable_list_file%') do (
    echo backup %%i ...    	 
	mysqldump.exe -h%dbhost% -P%dbport% -u%dbuser% -p%dbpass% %database_name% %%i > %backup_dir%\%%i.sql
)


rem 备份结束提示
echo Backup completed.
echo 备份完成时间:%date%-%time%

rem 提示
pause

3.如何将备份的文件进行压缩处理??执行压缩文件

在这里插入图片描述

set mysql_home=C:\Program Files\MySQL\MySQL Server 8.0
set mysql_data=C:\ProgramData\MySQL\MySQL Server 8.0\Data
rem mysql数据库连接地址
set dbhost=localhost
set dbport=3306
set dbuser=root
set dbpass=123456
rem 需要备份的数据库名字
set database_name=book
rem 备份到目的地目录
set backup_dir=E:\testBackData
rem 备份对应导出文件名
set backup_name=%Date:~0,4%%Date:~5,2%%Date:~8,2%
set date=%Date:~0,4%-%Date:~5,2%-%Date:~8,2%

rem 更改命令提示符代码页为 UTF-8
chcp 65001 > nul

echo 开始备份时间:%date%-%time%

rem 进入 MySQL 安装目录
cd %mysql_home%\bin
mysqldump.exe  --opt -u %dbuser% --password=%dbpass% %database_name% > %backup_dir%\table%date%.sql

rem  压缩文件
rem	 a:表示添加文件到存档中。
rem 	-t7z:指定压缩文件的格式为7z。
rem 	-mx1:设置压缩级别为最低。在7-Zip中,压缩级别从0到9,0表示无压缩,而9表示最高压缩。这里的-mx1表示使用最低的压缩级别,
rem   即压缩速度 		最快但压缩比最低。

"C:\Program Files\7-Zip\7z.exe" a -t7z -mx1 %backup_dir%\table%date%.7z "%backup_dir%\table%date%.sql"

rem 删除备份sql文件 保留压缩文件   ---可选操作释放删除  不保留sql文件
del %backup_dir%\table%date%.sql

echo Backup completed.
echo 备份完成时间:%date%-%time%

pause

猜你喜欢

转载自blog.csdn.net/beiback/article/details/132461984