mysqlhotcopy 正则使用小技巧
需积分: 0 194 浏览量
更新于2020-09-11
收藏 25KB PDF 举报
`mysqlhotcopy`是MySQL提供的一种用于快速备份MyISAM和ARCHIVE表的命令行工具。这个工具在不中断服务的情况下能够创建数据的物理备份,极大地提高了备份效率。在使用`mysqlhotcopy`时,我们可以结合正则表达式来更精确地选择需要备份的数据。
确保已经为`mysqlhotcopy`分配了一个具有适当权限的用户,如在描述中所示:
```sql
grant select, reload, lock tables on *.* to 'hotcopy'@'localhost' identified by '123456';
```
这样,名为`hotcopy`的用户就有权在本地执行`mysqlhotcopy`操作,具备查看、重新加载和锁定表的权限。
接下来,我们将探讨如何利用`--regexp`选项来筛选要备份的数据库或表:
1. **备份特定前缀的数据库**:
若要备份所有以`abc`开头的数据库,可以使用以下命令:
```bash
mysqlhotcopy --flushlog -u='hotcopy' -p='123456' --regexp= ^abc /home/bak
```
这里的正则表达式`^abc`表示匹配以`abc`开头的字符串。
2. **备份特定范围内的数据库**:
如果想要备份以字母`a`到`d`开头的所有数据库,可以使用:
```bash
mysqlhotcopy --flushlog -u='hotcopy' -p='123456' --regexp=^[a-d] /home/bak
```
`^[a-d]`匹配以`a`、`b`、`c`或`d`开头的数据库名。
3. **备份特定前缀的表**:
要备份`test`数据库中所有以`abc`开头的表,运行:
```bash
mysqlhotcopy --flushlog -u='hotcopy' -p='123456' test./^abc/ /home/bak
```
正则表达式`/^abc/`匹配以`abc`开头的表名。
4. **备份非特定前缀的表**:
要排除所有以`abc`开头的表,可以使用否定匹配:
```bash
mysqlhotcopy --flushlog -u='hotcopy' -p='123456' test./~^abc/ /home/bak
```
`~^abc`表示不以`abc`开头的表。
5. **备份多个特定前缀的表**:
如果要备份`test`数据库中所有以`abc_a`至`abc_w`开头的表,可以使用:
```bash
mysqlhotcopy --flushlog -u='hotcopy' -p='123456' test./^\(abc_[a-w]\)/ /home/bak
```
正则表达式`^\(abc_[a-w]\)`匹配以`abc_`后跟`a`到`w`之间任意一个字母的表名。
请注意,使用正则表达式时要确保它们符合MySQL和系统shell的规则。在某些情况下,可能需要对正则表达式进行转义,以避免与shell解释器发生冲突。
在执行备份操作时,请务必了解`mysqlhotcopy`的其他选项,例如`--skip-log-bin`(如果启用了二进制日志,则跳过更新日志),以及`--no-data`(仅备份结构,不包括数据)。同时,记得定期检查备份的完整性和有效性,以便在需要时能够恢复数据。
虽然`mysqlhotcopy`在处理MyISAM和ARCHIVE表时非常高效,但它并不适用于InnoDB表,因为InnoDB表在备份期间需要锁定,这可能会导致服务中断。对于InnoDB表,通常会使用其他的备份方法,如mysqldump或者Percona Xtrabackup等工具。
weixin_38698943
- 粉丝: 2
- 资源: 899
最新资源
- cd35f259ee4bbfe81357c1aa7f4434e6.mp3
- 机器学习金融反欺诈项目数据
- 虚拟串口VSPXD软件(支持64Bit)
- 多边形框架物体检测18-YOLO(v5至v11)、COCO、CreateML、TFRecord、VOC数据集合集.rar
- Python个人财务管理系统(Personal Finance Management System)
- 大数据硬核技能进阶 Spark3实战智能物业运营系统完结26章
- CHM助手:制作CHM联机帮助的插件使用手册
- SecureCRT.9.5.1.3272.v2.CN.zip
- 人大金仓(KingBase)备份还原文档
- 完结17章SpringBoot3+Vue3 开发高并发秒杀抢购系统