![只要源 mysql 和目标 mysql 是同一版本,通过复制 /mysql/data 文件夹进行备份就可以了?](https://linux22.com/image/497816/%E5%8F%AA%E8%A6%81%E6%BA%90%20mysql%20%E5%92%8C%E7%9B%AE%E6%A0%87%20mysql%20%E6%98%AF%E5%90%8C%E4%B8%80%E7%89%88%E6%9C%AC%EF%BC%8C%E9%80%9A%E8%BF%87%E5%A4%8D%E5%88%B6%20%2Fmysql%2Fdata%20%E6%96%87%E4%BB%B6%E5%A4%B9%E8%BF%9B%E8%A1%8C%E5%A4%87%E4%BB%BD%E5%B0%B1%E5%8F%AF%E4%BB%A5%E4%BA%86%EF%BC%9F.png)
如果只有 MyISAM 数据库,是否可以通过简单地复制粘贴数据文件夹来进行备份和恢复,而不管版本如何?
但是如果有 INNODB 数据库,并且我们确定源版本和目标版本相同,这种复制粘贴的方法可行吗?
最好避免输入任何命令来进行备份,因为执行此操作的人以前从未使用过命令行。
答案1
如果我们总是不得不避开命令行,我们就永远无法登上月球。要么再找一名宇航员,要么更加努力地训练。
如果您正在谈论生产中的实时数据库,则值可能会不断变化,因此通过简单地复制一堆文件来备份任何数据库类型的数据库都是不可靠的。
您可以通过以下方式获得整个 mysql 数据库(包括系统表)的安全备份:
mysqldump --all-databases > mysqlbackup.sql
备份位于文件 mysqlbackup.sql 中 - 可以备份到磁带、dvd 等。
恢复与此相反,通过将备份文件重定向到 mysql 客户端来完成。
mysql < mysqlbackup.sql
对于这两个命令,您可能需要 -u 来指定具有管理员权限的用户名,以及 -p 来指定密码。
答案2
如果您必须使用复制和粘贴,则必须停止两端的 MySQL 服务,必须具有相同的配置,并且必须复制所有日志文件以及数据文件夹。
但是,正如已经指出的那样,这是一种糟糕的做法。创建一个脚本并告诉需要运行它的人输入什么命令没什么大不了的。假设那个人足够聪明,能够登录到机器上,我希望他/她能够毫无困难地运行一个命令。
另一个选择是创建一个主从副本,让它保持最新状态,而无需用户执行任何操作。当然,您仍然需要监控系统以确保其正常运行,但无论如何您都应该这样做。
答案3
您真的不应该将复制从服务器视为良好的备份解决方案。例如,如果发生数据库被删除或主服务器上执行其他有害 SQL 的情况,该怎么办?这些语句只会复制到您的从服务器并执行相同的操作,从而无法回滚到事件发生之前的某个时间点。
遵循 labradort 的建议,至少使用 mysqldump。
答案4
我根本不建议复制和粘贴文件。如果这个人不懂技术,你怎么能确定 mysql 守护进程是否正确停止了?
如果这是针对非技术用户,您确实应该花时间构建一个调用 mysqldump 的脚本来为他们正确创建备份。