Mysql实例自动恢复MySQL数据库的日志文件思路分享及解决方案
《Mysql实例自动恢复MySQL数据库的日志文件思路分享及解决方案》要点: 如果MySQL服务器启用了二进制日志,你可以使用mysqlbinlog工具来恢复从指定的时间点开始 (例如,从你最后一次备份)直到现在或另一个指定的时间点的数据.“mysqlbinlog:用于处理二进制日志文件的实用工具”. 要想从二进制日志恢复数据,你需要知道当前二进制日志文件的路径和文件名.一般可以从选项文件(即my.cnf or my.ini,取决于你的系统)中找到路径.如果未包含在选项文件中,当服务器启动时,可以在命令行中以选项的形式给出.启用二进制日志的选项为 --log-bin.要想确定当前的二进制日志文件的文件名,输入下面的MySQL语句: SHOW BINLOG EVENTS G 你还可以从命令行输入下面的内容: mysql --user=root -pmy_pwd -e 'SHOW BINLOG EVENTS G' 将暗码my_pwd替换为服务器的root暗码. 1. 指定恢复时间 mysqlbinlog --stop-date="2005-04-20 9:59:59" /var/log/mysql/bin.123456 | mysql -u root -pmypwd 该命令将恢复截止到在--stop-date选项中以DATETIME格式给出的日期和时间的所有数据.如果你没有检测到几个小时后输入的错误的SQL语句,可能你想要恢复后面发生的活动.根据这些,你可以用起使日期和时间再次运行mysqlbinlog: mysqlbinlog --start-date="2005-04-20 10:01:00" /var/log/mysql/bin.123456 | mysql -u root -pmypwd 在该行中,从上午10:01登录的SQL语句将运行.组合执行前夜的转储文件和mysqlbinlog的两行可以将所有数据恢复到上午10:00前一秒钟.你应检查日志以确保时间确切.下一节介绍如何实现. 2. 指定恢复位置 也可以不指定日期和时间,而使用mysqlbinlog的选项--start-position和--stop-position来指定日志位置.它们的 作用与起止日选项相同,不同的是给出了从日志起的位置号.使用日志位置是更准确的恢复办法,特别是当由于破坏性SQL语句同时发生许多事务的时候.要想确 定位置号,可以运行mysqlbinlog寻找执行了不期望的事务的时间范围,但应将结果重新指向文本文件以便进行检查.操作办法为: mysqlbinlog --start-date="2005-04-20 9:55:00" --stop-date="2005-04-20 10:05:00" /var/log/mysql/bin.123456 > /tmp/mysql_restore.sql 该命令将在/tmp目录创建小的文本文件,将显示执行了错误的SQL语句时的SQL语句.你可以用文本编辑器打开该文件,寻找你不要想重复的语句.如果二 进制日志中的位置号用于停止和继续恢复操作,应进行注释.用log_pos加一个数字来标记位置.使用位置号恢复了以前的备份文件后,你应从命令行输入下 面内容: mysqlbinlog --stop-position="368312" /var/log/mysql/bin.123456 | mysql -u root -pmypwd mysqlbinlog --start-position="368315" /var/log/mysql/bin.123456 | mysql -u root -pmypwd 上面的第1行将恢复到停止位置为止的所有事务.下一行将恢复从给定的起始位置直到二进制日志结束的所有事务.因为mysqlbinlog的输出包括每个SQL语句记录之前的SET TIMESTAMP语句,恢复的数据和相关MySQL日志将反应事务执行的原时间.MYSQL必读 1、mysql 数据库没有增量备份的机制,当数据量太大的时候备份是一个很大的问题.还好 mysql 数据库提供了一种主从备份的机制,其实就是把主数据库的所有的数据同时写到备份数据库中.实现 mysql 数据库的热备份. 2、要想实现双机的热备首先要了解主从数据库服务器的版本的需求.要实现热备 mysql 的版本都要高于3.2,还有一个基本的原则就是作为从数据库的数据库版本可以高于主服务器数据库的版本,但是不可以低于主服务器的数据库版本. 3、设置主数据库服务器: a. 首先查看主服务器的版本是否是支持热备的版本.然后查看 my.cnf(类 unix)或者 my.ini(windows)中 mysqld 配置块的配置有没有 log-bin (记录数据库更改日志),因为 mysql 的复制机制是基于日志的复制机制,所以主服务器一定要支持更改日志才行.然后设置要写入日志的数据库或者不要写入日志的数据库.这样只有您感兴趣的数据库 的更改才写入到数据库的日志中. server-id=1 //数据库的 id 这个应该默认是1就不用改动 log-bin=log_name //日志文件的名称,这里可以制定日志到别的目录 如果没有设置则默认主机名的一个日志名称 binlog-do-db=db_name //记录日志的数据库 binlog-ignore-db=db_name //不记录日志的数据库 以上的如果有多个数据库用","分割开,然后设置同步数据库的用户帐号 mysql> GRANT REPLICATION SLAVE ON *.* -> TO [email='repl'@'%.mydomain.com']'repl'@'%.mydomain.com'[/email] IDENTIFIED BY 'slavepass'; 4.0.2 以前的版本,因为不支持 REPLICATION 要使用下面的语句来实现这个功能 mysql> GRANT FILE ON *.* -> TO [email='repl'@'%.mydomain.com']'repl'@'%.mydomain.com'[/email] IDENTIFIED BY 'slavepass'; 设置好主服务器的配置文件后重新启动数据库 b.锁定现有的数据库并备份现在的数据 《Mysql实例自动恢复MySQL数据库的日志文件思路分享及解决方案》是否对您有启发,欢迎查看更多与《Mysql实例自动恢复MySQL数据库的日志文件思路分享及解决方案》相关教程,学精学透。编程之家PHP学院为您提供精彩教程。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- java – 使用Eclipse Link在JPA中映射Joda Time
- Mysql学习解决MySQL客户端输出窗口显示中文乱码问
- Mysql学习win10免安装版本的MySQL安装配置教程
- MYSQL数据库MySQL中InnoDB的Memcached插件的使用
- 在PHP / MySQL中间歇性的“未选择数据库”?
- Mysql必读CentOS下php使用127.0.0.1不能连接mysq
- Mysql实例navicat 8 创建数据库与创建用户分配权
- MYSQL教程MySQL的Replace into 与Insert into on
- MYSQL教程Linux下卸载系统自带的MySQL数据库(步骤
- MySQL删除存储过程