mysqlhotcopy命令如何备份Mysql数据库?

说白了,mysqlhotcopy命令是一个备份MySQL数据库的强大工具,特别适合MyISAM和ARCHIVE类型的表。
其实很简单。
它通过集成 FLUSHTABLES 和 LOCKTABLES 命令以及文件复制实用程序(例如 cp 或 scp)来实现高效的备份过程。
我们先来说说最重要的事情。
该命令的主要作用是将数据库或表的内容复制到新的存储位置,以保证数据的安全。

我们去年跑的项目数据量在3 000左右,我们使用mysqlhotcopy来备份整个数据库。
整个过程不到5 分钟。
还有一点,使用该命令时记得包含-u和-p参数,避免直接在命令行暴露密码,提高安全性。
还有另一个关键细节。
-h参数用于指定远程服务器的主机名,这在远程备份期间特别有用。

一开始我以为mysqlhotcopy适用于所有类型的表,后来发现是错误的。
它不支持 InnoDB 表。
等等,还有一件事。
虽然该命令操作简单,但是在生产环境中使用时必须极其小心,因为它会锁定数据库,并可能影响数据库的正常运行。

总之,我认为mysqlhotcopy值得尝试,但要注意它的一些局限性和潜在风险。
你怎么认为?

MySQL中的数据库自动备份技巧

说实话,刚入行的时候,MySQL的备份是非常重要的。
当时公司规模较小,数据库只有一台服务器,所以我们依靠mysqldump + crontab来克服这个问题。
至于技巧,我就给大家分享一些我亲眼所见的方法。

首先我们讨论一下最经典的mysqldump和crontab组合。
我曾经在一家小工厂工作,技术人员每天凌晨两点就开始工作,完成以下订单: 巴什 02 02 mysqldump -u root -pYourPassword --单事务 test_db > /backup/test_db_$(date +%Y%m%d).sql 说实话,这一招简单、粗暴、有效,但后来老板批评了我,因为密码是直接写到脚本里的。
使用环境变量后好多了,但是维护 crontab 仍然需要使用旧的 crontab -e 操作,这可能是年轻人不希望看到的。

有趣的是,您可以使用 shell 脚本执行更多技巧。
然后我接管了该项目并使用 db_backup.sh 来涵盖备份、日志记录和清理。
巴什 !/bin/bash BACKUP_DIR=/备份 MYSQL_USER=根用户 DATE=$(date +%Y%m%d)
mysqldump -u $MYSQL_USER -p$MYSQL_PASSWORD --all-databases --single-transaction > $BACKUP_DIR/db_all_$DATE.sql echo“$(日期)的备份已完成。
” >> $BACKUP_DIR/backup.log
搜索 $BACKUP_DIR -name ".sql" -mtime +7 -exec rm {} \; 该脚本还添加了压缩功能,并每天早上自动运行。
然而,也有一些陷阱需要注意。
必须正确设置脚本权限。
我曾经看到一个实习生把一个脚本改成了6 6 6 ,结果被隔壁运维小哥给删掉了。
我自己没有这样做过,但我猜它应该设置为 7 5 0 左右。

至于第三方工具,没有要求尝试 PerconaXtraBackup。
不过,当我问隔壁一家大工厂的运营经理时,他说他用这个来做热备份,而且效率很高,因为它可以在不关闭数据库的情况下进行快照。
我只看过MySQL Enterprise Backup的PPT,据说和官方系统深度融合,不过价格估计是一年咖啡的钱。
坦白说,这适合预算充足、数据安全要求高的公司。
像我们这样的小团队负担不起。

最重要的是定期备份。
前段时间,我的公司遇到了麻烦,我的备份文件损坏了,当时我真的很困惑。
因此,无论您使用哪种计划,您都需要每个月重新开始测试。
还有3 -2 -1 原则。
这听起来像是一个古老的理论,但它确实有效。
3 份(本地+异地+冷备份),2 个介质(硬盘+磁带),1 个异地贮存。
我亲自测试了这个技巧,它确实在灾难恢复期间挽救了生命。

想一想。
备份就像给自己买保险一样。
它通常不会引人注目,但只有当事情发生时你才会意识到它的价值。
技术的选择要根据实际情况而定,不能盲目跟风。

如何备份MYSQL数据库?

说白了,MySQL备份有两种思路:mysqldump转储文本文件方便迁移,mysqlhotcopy直接复制文件快速,但需要手动一致性。
复杂之处在于如何根据业务场景选择合适的工具。

我们先来说说最重要的事情。
去年我们跑那个电商项目,用的是mysqldump+gzip压缩。
凌晨3 点左右我们订完了5 00G。
第二天恢复的时候,发现提前加上了--opt,表结构丢失了数据——原来是插件表没有配置。
还有一点就是远程同步。
我们使用SSH将增量备份传输到远程机房,却忘记添加-t参数,导致mysqldump导出了所有默认表,花了半个小时才清理完毕。
还有另一个重要的细节。
使用mysqlhotcopy备份MyISAM表时,必须使用LOCK TABLES对其进行锁定。
去年测试环境忘记关闭了。
结果,备份数据是与在线数据不同的三条订单记录。

一开始我以为mysqldump慢是因为SQL解析的原因,后来发现我错了。
缓慢的主要原因是磁盘 I/O。
等等,还有一件事,使用 scp 传输时不要忘记验证服务器的 ssh 密钥。
去年,我们凌晨的预订差点因为钥匙过期而失败。

建议定期测试恢复过程。
不要等到有事发生才想起备份文件是否可以使用。