从从属服务器恢复MySQL数据库
有相当多的背景信息。我将在接近尾声时开始讨论这个问题 我有一个MySQL复制设置,有一个主服务器和两个从服务器。其中一个从机出现电源问题,导致数据库损坏 由于主服务器和其中一个从属服务器在Solaris 10上运行,MySQL数据库位于zfs文件系统上,因此我们有一个快照备份脚本,它执行一项非常具体的任务:从从属服务器恢复MySQL数据库,mysql,database-replication,Mysql,Database Replication,有相当多的背景信息。我将在接近尾声时开始讨论这个问题 我有一个MySQL复制设置,有一个主服务器和两个从服务器。其中一个从机出现电源问题,导致数据库损坏 由于主服务器和其中一个从属服务器在Solaris 10上运行,MySQL数据库位于zfs文件系统上,因此我们有一个快照备份脚本,它执行一项非常具体的任务: 用读锁刷新表 显示主机状态 将文件/位置记录到数据目录中的文件中 使用zfs拍摄数据目录的快照 解锁表格 如果没有长时间运行的查询,整个过程大约需要一秒钟 我可以使用在主服务器上以这
- 用读锁刷新表
- 显示主机状态
- 将文件/位置记录到数据目录中的文件中
- 使用zfs拍摄数据目录的快照
- 解锁表格
/u01/mysql/bin/mysql Ver 14.14发行版5.1.67,适用于sun-solaris2.10(sparc),使用readline 5.1带读锁的刷新表通常可以与显示从属状态(与显示主状态非常相似)一起使用,以确定相关的二进制日志位置 您也可以通过rsync时依赖磁盘上已经存在的信息来略过这一点,但是您必须注意中继日志索引和文件的错误名称,因为默认情况下它基于从属主机名。您可以通过重命名文件和索引中的引用,或者使用相同的中继日志名来查找 本文件对此进行了讨论,但基本上也是这么做的: 然而。。如果您经常使用临时表,您应该通过检查Slave\u open\u temp\u表来确保当前快照位置没有打开的临时表
请参阅:从机状态确实包括当前正在从机上重播的主日志文件的名称(可能来自中继日志)。现在,我添加了一个查询,以找出每个快照的Slave\u open\u temp\u表的值,然后我就可以知道该快照是否可以有效地用于恢复。快照每小时制作一次,所以应该有很多快照。我的希望是,冲水和锁将确保所有临时表关闭。。。我想我们会发现的。其他细节:当我将数据目录重新同步到我正在恢复的从机时,我不会复制任何二进制日志。它们不是必需的,而且非常庞大。下面是一个现在记录在slaveposition.log文件中的每个快照上的信息示例:快照2015052318:文件mysql-bin.009872,位置13252441附加:mlf mysql-bin.009872,rlf mysql-relay-bin.020175 Slave_open_temp_tables:0