我需要在我的服务器的克隆 VM 中拥有我的数据库的精确副本(以防服务器出现故障,让 VM 准备好使用 dbs)。我知道 mysqldump 是迁移的最佳选择,但我想有另一种选择。所以我决定用ROBOCOPY来做,然后复制data
文件夹。这是我的批次
@echo off
set exclude=*.pid *.err *.cnf *logfile* *log_file*
set ORIGIN="mysql_data_path\data"
set DEST="mysql_data_path_mirror\data"
NET STOP mysqld
robocopy "%ORIGIN%" "%DEST%" /E /COPYALL /PURGE /MIR /IS /IT /TEE /FFT /ETA /R:10 /W:5 /ZB /V /XF %exclude%
问题是我不确定应该排除/添加/复制哪些文件,这在我执行相反的过程时不会影响操作。
例如,我放了一些排除项(*.pid *.err *.cnf *logfile* *log_file*
),但我不知道它们是否正确。在这一点上我需要帮助。而且,除了data
文件夹之外,我还应该复制其他任何内容以在 VM 中运行吗?
谢谢
您不能排除这些
ib_logfile*
文件,如果这些文件不存在,您的数据最多将被损坏,除非您正在运行innodb_fast_shutdown=0
- 这可能会使停止服务需要很长时间。唯一可以安全忽略的是中继日志和二进制日志。您必须检查配置文件中设置的名称。
mysqldump
是一种逻辑级别的工具,可在某些状态下创建再现 DB 的 SQL 脚本。有一些像 Percona XtraBackup 这样的工具可以在物理级别上进行复制。XtraBackup 允许所谓的增量备份,因此您可以进行一次完整的初始备份,然后您可以只保存自上次备份以来的差异。您必须参考手册来决定哪种方式适合您的需求。
rsync
或 LVM 使这更快。)同时,制作 my.cnf 文件的副本。