The official version of mysql data backup batch file has been tested and passed

1. The original data .ibd file of the entire database table is backed up as a .sql file

Insert image description here
Insert image description here
Insert image description here

Insert image description here

The central idea is to find the source file (.ibd) and backup it to the destination into a .sql file

@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 Understand the meaning of 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. Back up some tables in the original table--improved version

1. For example, back up test1 and test2 tables
2. Load some tables
for subsequent updates

2.0 implements logical backup syntax

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

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

2.1 backPartTable table content

Insert image description here

2.2 Backup operation

Insert image description here

2.3 Practical code

@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. How to compress the backup files? ? Execute compressed file

Insert image description here

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

Guess you like

Origin blog.csdn.net/beiback/article/details/132461984