MySQL备份利器mysqlhotcopy的正则表达式用法详解

山间有风
山间有风
发布时间:2026-10-15| 6人浏览过
原创

mysqlhotcopy 是 MySQL 中用于快速备份数据库的实用工具,尤其适用于 MyISAM 引擎。针对需要仅备份部分数据库或特定表的场景,该工具提供了强大的正则表达式支持功能。

准备工作:分配专用备份权限

出于安全考虑,建议为热备或冷备操作创建一个专用的低权限用户,并赋予必要的 SELECT、RELOAD 和 LOCK TABLES 权限。执行以下 SQL 语句创建用户:

GRANT SELECT, RELOAD, LOCK TABLES ON *.* TO 'hotcopy'@'localhost' IDENTIFIED BY '123456';

完成用户创建后,即可使用该账号进行后续的数据备份操作。

使用正则匹配数据库名称

当服务器中存在大量数据库,且只需要备份命名具有一定规律的库(如以特定字符开头)时,可以使用 --regexp 选项配合正则表达式进行匹配。此选项直接针对数据库名生效。

第1步:备份指定前缀的数据库

若要备份所有以 abc 开头的数据库至 /home/bak 目录,命令如下:

mysqlhotcopy --flushlog -u='hotcopy' -p='123456' --regexp=^abc /home/bak

第2步:备份字符范围内的数据库

若需备份以字母 a 到 d 开头的数据库,可使用字符集正则:

mysqlhotcopy --flushlog -u='hotcopy' -p='123456' --regexp=^[a-d] /home/bak

精准控制特定库中的表备份

在指定了目标数据库后,可以通过在库名后面追加 /正则表达式/ 的形式,进一步筛选该库内的数据表。这提供了比数据库级备份更细粒度的控制。

第3步:备份符合特定规则的表

例如,只想备份 test 数据库中所有以 abc 开头的表,命令格式为 数据库名/正则/:

mysqlhotcopy --flushlog -u='hotcopy' -p='123456' test./^abc/ /home/bak

第4步:排除特定规则的表

如果希望备份 test 库中除了以 abc 开头之外的所有表,可以在正则前加上波浪号 ~:

mysqlhotcopy --flushlog -u='hotcopy' -p='123456' test./~^abc/ /home/bak

第5步:备份复杂命名的表

对于具有复杂命名模式(如 abc_a, abc_b ... abc_w)的表,可以使用转义字符确保正则正确解析:

mysqlhotcopy --flushlog -u='hotcopy' -p='123456' test./^\(abc_[a-w]\)/ /home/bak

以上就是 mysqlhotcopy 正则使用小技巧的详细内容,更多关于 MySQL 数据备份与恢复的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。