Jim*_*ein 6 mysql backup mysql-replication incremental-backup database-backup
我只是花了几个小时构建一个新的数据库服务器来替换mysqldump一个月前创建的文件中的2 个失败的服务器,然后使用我的服务器的 bin-logs 将其mysqldump更新。现在我有这个新的数据库服务器在线,并且已经运行了几天,我需要完成服务器设置并重新实施备份策略。
我需要将(至少)一个 MySQL Replication Slave 联机以供新服务器使用,并开始创建可用备份以备再次失败时使用。
在我进一步行动之前:
innodb-file-per-table选项my.cnf。二进制日志现在在新的 MySQL 服务器上启用,但 inno file per table 选项几乎是一个非修复,直到我可以导入另一个逻辑备份(我可能最终会启动第二个从站,并提升第一个从站掌握并放弃当前的主人 - 因为配置不是我需要的地方)。所以,问题是:
我需要备份 MySQL 服务器,但我不能让新的 MySQL 服务器脱机。我需要继续进行写入,并在几乎没有停机时间的情况下提供读取服务。这种“几乎没有停机时间”的要求被定义为少于 10 分钟。我的数据目前在服务器上使用了大约 100GB 的空间(mysql 数据文件),逻辑备份大约是 50GB(这是很多索引......哈哈)。我不关心这个备份是合乎逻辑的,还是从 MySQL 数据目录中复制一份数据文件。在线后,我可以从从属设备创建逻辑备份。
而且,问题是:
您将如何创建这个所需的备份?我知道这并不容易,很多人会说这是不可能的。但我拒绝相信这是不可能的,必须有办法完成它。
关于服务器的说明:它运行的是 Ubuntu 10.04、MySQL 5.1.41,并且存储数据的文件系统是 ext3。服务器在 Rackspace Cloud 上运行,所以文件系统几乎“就是它本来的样子”,除非我可以重新分区根设备并使用另一个 FS(可能是 XFS?)重新分区来做快照。
我读过Perconas XtraBackup Tool,但它只适用于 InnoDB 表。他们有一个 MyISAM 工具,但我真的不明白它如何(或者即使它确实如此)与 XtraBackup 一起工作来创建一个完全一致的备份。
我读过,mysqlhotcopy但它只适用于 MyISAM 表。
显然我知道mysqldump,但(也很明显)这里的问题是创建一致的备份而不锁定整个数据库服务器输出整个 sql 备份文件所需的小时数。
关于 XtraBackup,或更具体地说 innobackupex,请查看此解释
摘抄:
innobackupex 程序还允许您备份 MyISAM 表和 .frm 文件,从而增加了更多便利和功能。它启动xtrabackup,等待完成复制文件,然后发出FLUSH TABLES WITH READ LOCK以防止进一步更改MySQL的数据并将所有MyISAM表刷新到磁盘。它持有该锁,复制 MyISAM 文件,然后释放该锁。
备份的MyISAM和InnoDB表最终会保持一致,因为在准备(恢复)过程之后,InnoDB的数据会前滚到备份完成的点,而不是回滚到备份开始的点。该时间点与执行 FLUSH TABLES WITH READ LOCK 的位置相匹配,因此 MyISAM 数据和准备好的 InnoDB 数据是同步的。
希望这可以帮助。
干杯
| 归档时间: |
|
| 查看次数: |
2267 次 |
| 最近记录: |