备份和恢复MySQL数据库(Windows版)
操作环境
- MySQL数据库
-
- MySQL 8.0 社区版
- 窗户
-
- 窗户11
先决条件
- MySQL数据库
-
- MySQL的8.0
- 窗户
-
- 窗户11
- 视窗 10
- Windows 服务器
-
- 视窗服务器 2022
- Windows 服务器 2019
- Windows 服务器 2016
- Windows 服务器 2012 R2
前提
- 已安装 MySQL 数据库。
- 要备份的数据库已存在。
- 您已设置环境变量,以便可以从命令提示符运行 mysql。
备份有哪些类型?
虽然这里没有详细讨论,但MySQL有以下类型的备份:
备份命令备份数据类型注解 | ||
---|---|---|
mysql转储 | 逻辑备份 | 一种古老的备份方法。 GUI 也使用此 |
mysql泵 | 逻辑备份 | mysqldump 的改进版本 |
MySQL Shell实例转储实用程序和转储加载实用程序 | 逻辑备份 | 目前最新的逻辑备份 |
Percona XtraBackup | 物理备份 | 第三方对物理备份的支持 |
克隆插件 | 物理备份 | MySQL官方物理备份。 但是,您需要添加插件。 |
使用 GUI 备份数据库 (MySQL Workbench)
如果您想在不使用命令的情况下在 GUI 中安全操作,则可以使用 MySQL Workbench 进行备份。 MySQL Workbench 执行的备份类型将为“mysqldump”。
启动 MySQL Workbench。
选择包含要备份的数据库的连接。
对于要备份的数据库,请从左侧的“导航器”中选择“管理”选项卡,然后选择“数据导出”。
“数据导出”屏幕打开。 屏幕相当宽,因此请展开窗口,直到您可以看到右下角的“开始导出”按钮。
首先,选择要备份的数据库。 您也可以选择多个。
在“要导出的对象”中,您也可以选择备份过程和触发器。 此字段是可选的。
在“导出选项”中,您可以选择以下两个选项。
类型 | 描述 |
---|---|
导出到转储项目文件夹 | 作为表文件或过程文件输出到指定文件夹。 |
导出到独立文件 | 将所有内容嵌入到单个文件和输出中。 |
以哪种方式输出并不重要。 如果您只想还原特定表,则上述选择很容易删除。 下面的选择输出到单个文件,从而可以更轻松地将文件作为数据库单元进行移动和管理。 在这种情况下,我选择了以下内容。
设置完成后,单击右下角的“开始导出”按钮开始导出。
导出开始并完成。
如果将其输出为单个文件,它将如下所示:
如果导出到文件夹,它将如下所示:
使用 GUI 还原数据库 (MySQL Workbench)
打开 MySQL Workbench,选择一个连接,从左侧的 Navigator 中选择 Administration 选项卡,然后选择 Data Import/Restore。 正如它所说的“导入/还原”,您可以从导出的文件创建新数据库或覆盖原始数据库。
展开窗口,直到右下角看到“开始导入”按钮。
根据导出的文件格式选择“导入选项”。 由于这次我导出为单个文件,因此我在下面选择了“从独立文件导入”并指定了导出的文件。
选择要还原到的架构(数据库)。 您可以从右侧的“新建”按钮还原到现有数据库或将其还原为新数据库。
指定规格后,点击右下角的“开始导入”按钮开始恢复。
恢复完成后,请确保您的数据已恢复。
通过命令创建数据库备份帐户
如果执行单个命令并备份没有问题,但是例如,如果提前将命令准备为文件并执行,则需要以明文形式写入密码,因此创建单独的帐户进行备份执行更安全。
备份所需的某些权限可能会根据所需的信息增加或减少。
- 事件
- 锁定表
- 选择
- 显示视图
如果使用命令创建它,它将如下所示。 使用 MySQL 命令行工具。
create user '<ユーザー名>'@'<ホスト名>' identified by '<パスワード>';
GRANT EVENT, LOCK TABLES, SELECT, SHOW VIEW ON <データベース名>.* TO '<ユーザー名>'@'<ホスト名>';
flush privileges;
例
create user 'backup_user'@'localhost' identified by 'password';
GRANT EVENT, LOCK TABLES, SELECT, SHOW VIEW ON test_database.* TO 'backup_user'@'localhost';
flush privileges;
备份目标的文件夹权限
保存备份文件的文件夹的权限的设置方式必须与执行命令的权限相同。 如果使用管理员权限运行该命令,则无需对文件夹设置任何其他权限。
使用命令备份数据库 (mysqldump)
通过命令备份有几个,但这次我们将使用“mysqldump”进行备份,它已经使用了很长时间并且很稳定。
右键单击“开始”菜单以启动终端(命令提示符)。 请注意,它不是“MySQL 8.0 命令行客户端”。
您可以使用以下命令备份它:
mysqldump -u <ユーザー名> -p<パスワード> --no-tablespaces --single-transaction --triggers --routines --events --default-character-set=utf8 <データベース名> > "<バックアップファイルパス>"
例
mysqldump -u backup_user -ppassword --no-tablespaces --single-transaction --triggers --routines --events --default-character-set=utf8 test_database > "C:\Temporary\Backup.sql"
--default-character-set=utf8
如果指定的字符代码与在 GUI 中备份时相同,则该字符代码将与在 GUI 中备份时相同。 这样,您也可以将其导入 GUI。- 不要在密码字段和
-p
密码之间包含空格。- 如果还想输出表空间信息,
--no-tablespaces
请删除 . 在这种情况下,正在运行的用户的权限必须是 。PROCESS
将在指定位置创建备份文件。
使用命令还原数据库 (mysqldump)
mysqldump 备份的文件采用可以在 SQL 中执行的格式,因此您所要做的就是执行目标 SQL。 我认为大多数恢复都是手动完成的,因此如果您以root帐户身份运行它,则没有问题。
如果要从命令运行它,请在命令提示符下运行它,而不是在 PowerShell 下运行它。 这是因为该符号不能在 PowerShell 中使用 <
。
运行以下命令:
mysql -u root -p<root のパスワード> <データベース名> < <バックアップした SQL のファイルパス>
例
mysql -u root -ppassword test_database < C:\Temporary\Backup.sql
自动数据库备份
对于 Windows,通常使用任务计划程序。 首先,创建一个批处理文件。 创建一个 bat 文件,输入命令备份的内容,然后保存。 字符编码使用 Shift-JIS 保存。 批处理文件的位置和文件名是任意的。
向任务计划程序注册。 右键单击“开始”菜单,然后选择“计算机管理”。
从左侧菜单中,选择“计算机管理”>“系统工具”>“任务计划程序”>“任务计划程序库”。 从右侧菜单中选择“创建任务...”。
配置“常规”选项卡。 “名称”将出现在任务列表中,因此请输入易于理解的名称。 在安全选项中,选中“无论用户是否登录都运行”。
在“触发器”选项卡中,您可以设置何时执行备份。 根据您的操作设置此设置。
在“操作”选项卡中,将其设置为启动您刚刚创建的批处理文件。
设置完每个后,使用 OK 按钮确认。
输入您的密码以注册以在指定帐户下运行。
之后,检查备份是否会在指定时间执行。