当启动Binlog后,事务会产生Binlog Event,这些Event被看做事务数据的一部分。因此要保证事务的Binlog Event和InnoDB引擎中的数据的一致性。所以带Binlog的CrashSafe要求MySQL宕机重启后能够保证:
- 所有已经提交的事务的数据仍然存在。
- 所有没有提交的事务的数据自动回滚。
- 所有已经提交了的事务的Binlog Event也仍然存在。
- 所有没有提交事务没有记录Binlog Event。
这些要求很好理解,如果重启后数据还在,但是Binlog Event没有了,就没办法复制到其他节点上了。如果重启后,数据没了,但是Binlog Event还在,那么不存在的数据就会被复制到其他节点上,从而导致主从的不一致。
为了保证带Binlog的CrashSafe,MySQL内部使用的两阶段提交(Two Phase Commit)。
主备binlog文件下标是指MySQL中binlog文件的主从复制状态。主备binlog文件下标是一个数字,它表示MySQL主服务器上binlog文件的当前位置,从服务器上的binlog文件下标也是一个数字,它表示从服务器上binlog文件的当前位置。主备binlog文件下标的作用是,当MySQL主从复制过程中出现故障时,可以通过比较主从服务器上binlog文件下标的值来确定哪些数据没有被复制到从服务器上,从而可以快速恢复数据。
是否启用了日志
1
mysql>show variables like 'log_bin';
怎样知道当前的日志
1
mysql> show master status;
看二进制日志文件用mysqlbinlog
shell>mysqlbinlog mail-bin000001(要写绝对问题路径d://)
或者
shell>mysqlbinlog mail-bin000001 | tail
Windows 下用类似的命令。
mysql有以下几种日志:
错误日志: -log-err
查询日志: -log
慢查询日志: -log-slow-queries
更新日志: -log-update
二进制日志:-log-bin在mysql的安装目录下,打开myini,在后面加上上面的参数,保存后重启mysql服务就行了。
查找所有表的语句
select table_name
from information_schematables
where table_schema='当前数据库'
mysql> use mysql
Database changed
mysql> show tables;
+---------------------------+
| Tables_in_mysql |
+---------------------------+
| columns_priv |
| db |
| event |
| func |
| general_log |
| help_category |
| help_keyword |
| help_relation |
| help_topic |
| innodb_index_stats |
| innodb_table_stats |
| ndb_binlog_index |
| plugin |
| proc |
| procs_priv |
| proxies_priv |
| servers |
| slave_master_info |
| slave_relay_log_info |
| slave_worker_info |
| slow_log |
| tables_priv |
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
| user |
+---------------------------+
28 rows in set (005 sec)
show tables即为显示当前数据库中所有的表。
根据具体问题类型,进行步骤拆解/原因原理分析/内容拓展等。
具体步骤如下:/导致这种情况的原因主要是
binlog,二进制日志,记录mysql所有 *** 作命令。
可以用来做数据恢复,同时也是mysql主从备份所必需的日志。
用 mysqlbinlog 命令可以直接打开binlog查看。
1、首先确认MySQL是否开启binlog使用showvariableslike'%log_bin%'。
2、其次进入数据库服务器,找到MySQL数据的data数据所在位置。
3、最后binlog日志就在此文件夹下。
mysqlbinlog确实是个强大的mysql数据库辅助工具。
1首先将数据存到mysql
C:\wamp\bin\mysql\mysql558\bin\mysqlbinlogexe --stop-date="2011-10-30 23:30:00" --result-file="c:\mysql" /data/mysql-bin000025 | mysql -uroot
2然后开始还原数据
C:\wamp\bin\mysql\mysql558\bin\mysqlexe source c:\mysql
据对的实战经验啊~~~
以上就是关于mysql数据库怎么开启binlog全部的内容,包括:mysql数据库怎么开启binlog、mysql主备binlog文件下标、如何查看mysql数据库 *** 作记录日志等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)