网站建设的三要素,四川省建设厅注册管理中心网站首页,免费wordpress主题分享,手机网站设计规格1.1还原使用mysqldump命令备份的数据库的语法如下#xff1a; mysql -u root -p [dbname] backup.sq 示例#xff1a; mysql -u root -p C:\backup.sql 1.2还原直接复制目录的备份 通过这种方式还原时#xff0c;必须保证两个MySQL数据库的版本号是相同的。MyISAM…1.1还原使用mysqldump命令备份的数据库的语法如下 mysql -u root -p [dbname] backup.sq 示例 mysql -u root -p C:\backup.sql 1.2还原直接复制目录的备份 通过这种方式还原时必须保证两个MySQL数据库的版本号是相同的。MyISAM类型的表有效对于InnoDB类型的表不可用InnoDB表的表空间不能直接复制 2.还原增量binlog的方法 2.1 时间点的恢复建立在一下规则的基础上: 1 mysql服务器需要开启二进制日志--log-bin 查看所有binlog文件 mysql SHOW BINARY LOGS; 查看当前binlog文件信息包含文件名当前位置等 mysql SHOW MASTER STATUS; 2 mysqlbinlog工具将binary log文件由二进制转换为可读的文本文件可以选择基于时间或位置的事件。 3 从binary log文件中执行事件会导致数据的修改表示要重做数据。命令为 [rootlocalhost /]# mysqlbinlog binlog_files | mysql -u root -p 4 查看binlog的时间及位置信息我们可以讲binlog内容输出到终端或文本文件 [rootlocalhost /]# mysqlbinlog binlog_files | more [rootlocalhost /]# mysqlbinlog binlog_files tmpfile 5 将二进制日志输出到文件非常有用比如我们想要删除某些我们不想执行的语句。 通过文本文件导入到数据库 [rootlocalhost /]# mysql -u root -p tmpfile 2.2 多个binlog log日志的还原最好将所有文件使用一个连接完成如果使用不同连接的话有时会导致不安全 例如 [rootlocalhost /]# mysqlbinlog binlog.000001 | mysql -u root -p # DANGER!! [rootlocalhost /]# mysqlbinlog binlog.000002 | mysql -u root -p # DANGER!! 如果第一个日志包含创建临时表语句CREATE TEMPORARY TABLE第二个日志要使用该临时表第一个导入binlog日志的进程退出后临时表会被删除执行第二个日志文件要使用临时表时会因找不到而报 “unknown table.” 建议的方法 方法1 所有二进制文件放在单个连接里 [rootlocalhost /]# mysqlbinlog binlog.000001 binlog.000002 | mysql -u root -p 方法2 将所有二进制文件写在一个文件里执行 [rootlocalhost /]# mysqlbinlog binlog.000001 /tmp/statements.sql [rootlocalhost /]# mysqlbinlog binlog.000002 /tmp/statements.sql [rootlocalhost /]# mysql -u root -p -e source /tmp/statements.sql 使用方法二如果二进制文件里包含GTID信息需要过滤掉 [rootlocalhost /]# mysqlbinlog --skip-gtids binlog.000001 /tmp/dump.sql [rootlocalhost /]# mysqlbinlog --skip-gtids binlog.000002 /tmp/dump.sql [rootlocalhost /]# mysql -u root -p -e source /tmp/dump.sql 3 通过时间点或位置点的恢复 如果我们要跳过某个时间段或位置段需要指定起止时间或位置信息 3.1 通过事件的时间来恢复 我们可以通过参数--start-datetime 和 --stop-datetime指定恢复binlog日志的起止时间点时间使用DATETIME格式。 比如在时间点2005-04-20 10:00:00我们删除掉一个库我们要恢复该时间点前的所有日志 [rootlocalhost /]# mysqlbinlog --stop-datetime2005-04-20 9:59:59 /usr/local/mysql/data/binlog.123456 | mysql -u root -p 我们可能几个小时后才发现该错误后面又有一系列的增删查改等操作我们还需要恢复后续的binlog我们可以指定起始时间 [rootlocalhost /]# mysqlbinlog --start-datetime2005-04-20 10:01:00 /usr/local/mysql/data/binlog.123456 | mysql -u root -p 通过该种方法恢复我们需要通过查看binlog日志知道发生误操作的确切时间点查看日志我们可以先将日志输出到文本里 [rootlocalhost /]# mysqlbinlog /usr/local/mysql/data/binlog.123456 /tmp/mysql_restore.sql 3.2 通过事件的位置来恢复 我们可以通过参数--start-position 和 --stop-position指定恢复binlog日志的起止位置点通过位置的恢复需要我们有更加精细的操作例如在某个时间点我们执行了错误的语句且这个时间点前后都有大并发操作要确定破坏性sql的时间点我们可以先导出大致的时间段的日志到文件以缩小查找范围再去分析和确定 [rootlocalhost /]# mysqlbinlog --start-datetime2005-04-20 9:55:00 --stop-datetime2005-04-20 10:05:00 /usr/local/mysql/data/binlog.123456 /tmp/mysql_restore.sql 确定好需要跳过的位置之后我们就可以进行恢复了 [rootlocalhost /]# mysqlbinlog --stop-position368312 /usr/local/mysql/data/binlog.123456 | mysql -u root -p [rootlocalhost /]# mysqlbinlog --start-position368315 /usr/local/mysql/data/binlog.123456 | mysql -u root -p 注mysqlbinlog工具的输出会在每条sql语句前增加 SET TIMESTAMP语句恢复的数据及mysql日志反映当前时间。 转载于:https://www.cnblogs.com/fyc119/p/7529888.html