mysql日志怎么恢复
mysql日志复原的办法:第一指定复原时间,代码为【mysqlbinlog --stop-date=""】;然后指定复原位置,代码为【mysqlbinlog --start-date="2020-10-09 9:55:00"】。
mysql日志复原的办法:
要想从二进制日志复原数据,你需要知道当前二进制日志文件的途径和文件名。一样可以从选项文件(即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. 指定复原时间
关于MySQL 4.1.4,可以在mysqlbinlog语句中通过--start-date和--stop-date选项指定DATETIME格局的起止时间。举例说 明,假设在今天上午10:00(今天是2006年4月20日),施行SQL语句来删除一个大表。要想复原表和数据,你可以复原前晚上的备份,并输入:
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日志将反响事务施行的原时间。
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> FLUSH TABLES WITH READ LOCK;
备份数据库有两种方法一种是直接进入到 mysql 的 data 名目然后打包你需要备份数据库的文件夹,第二种是使用 mysqldump 的方式来备份数据库但是要加上"--master-data " 这个参数,倡议使用第一种办法来备份数据库.
解除表的锁定的办法:
unlock tables;
c.查看主效劳器的状态
mysql> show master statusG;
+---------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| mysql-bin.003 | 73 | test | manual,mysql |
+---------------+----------+--------------+------------------+
记载 File 和 Position 项目的值,今后要用的。
相关免费学习引荐:mysql数据库(视频)
以上就是mysql日志如何复原的具体内容,更多请关注百分百源码网其它相关文章!