• 欢迎访问微视觉网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入微视觉微视觉-影视后期交流
  • 本站全面支持自动充值,目的是更好的服务大家!
  • 本站全面开启SSL服务,请放心使用!
  • 如果您觉得本站对你非常有用,那么赶紧使用Ctrl+D 收藏吧

细聊MySQL之常用工具及基本操作(完结篇)

数据库 Jason.w.wei 2年前 (2016-09-03) 1046次浏览 已收录 0个评论

十、binlog 查看工具 mysqlbinlog 的使用。
在讲解 mysqlbinlog 时,我先提供 mysqlbinlog 的相关参数给大家熟悉下:
细聊 MySQL 之常用工具及基本操作(完结篇)
要查看 binlog,首先得有。如果服务器用默认的启动方式,mysql 将不会生成 binlog。所以在 mysqld 启动时,必须加上–log-bin 参数。binlog 文件通常在数据文件目录内,如/usr/local/mysql/data 内,以 xxx-bin.0000xx 的形式命名。为了适用 mysqlbinlog 查看 binlog,首先我们在 test 库执行一段 SQL:

CREATE TABLE t ( id INT NOT NULL, name VARCHAR(20) NOT NULL, date DATE NULL ) ENGINE = InnoDB; 
START TRANSACTION; 
INSERT INTO t VALUES(1, 'apple', NULL); 
UPDATE t SET name = 'pear', date = '2009-01-01' WHERE id = 1; 
DELETE FROM t WHERE id = 1; 
COMMIT;

以上步骤概括了创建表、插入数据、更新数据、删除数据的操作,并且是在一个事务内完成。
1、mysqlbinlog 16 进制格式查看,语法如下:

shell> mysqlbinlog --hexdump master-bin.000001

输出大致如下:

#141203 0:03:50 server id 1 end_log_pos 300 CRC32 0xda824ff6
# Position Timestamp Type Master ID Size Master Pos Flags
# 78 e6 c3 7e 54 02 01 00 00 00 b4 00 00 00 2c 01 00 00 00 00
# 8b 04 00 00 00 00 00 00 00 04 00 00 21 00 00 00 00 |................|
# 9b 00 00 01 00 00 20 40 00 00 00 00 06 03 73 74 64 |.............std|
# ab 04 21 00 21 00 08 00 0c 01 74 65 73 74 00 74 65 |.........test.te|
# bb 73 74 00 43 52 45 41 54 45 20 54 41 42 4c 45 20 |st.CREATE.TABLE.|
# cb 74 0d 0a 28 0d 0a 20 20 69 64 20 20 20 49 4e 54 |t.......id...INT|
# db 20 4e 4f 54 20 4e 55 4c 4c 2c 0d 0a 20 20 6e 61 |.NOT.NULL.....na|
# eb 6d 65 20 56 41 52 43 48 41 52 28 32 30 29 20 4e |me.VARCHAR.20..N|
# fb 4f 54 20 4e 55 4c 4c 2c 0d 0a 20 20 64 61 74 65 |OT.NULL.....date|
# 10b 20 44 41 54 45 20 4e 55 4c 4c 0d 0a 29 20 45 4e |.DATE.NULL....EN|
# 11b 47 49 4e 45 20 3d 20 49 6e 6e 6f 44 42 f6 4f 82 |GINE...InnoDB.O.|
# 12b da |.|
# Query thread_id=4 exec_time=0 error_code=0
use `test`/*!*/;
SET TIMESTAMP=1417593830/*!*/;
SET @@session.pseudo_thread_id=4/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=1075838976/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8 *//*!*/;
SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=8/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
CREATE TABLE t^M
(^M

  id INT NOT NULL,^M
  name VARCHAR(20) NOT NULL,^M
  date DATE NULL^M
) ENGINE = InnoDB
/*!*/;

这里只截取了创建表 t 的这一段 log。可以看到,结果中有 Position Timestamp Type Master ID Size Master Pos Flags 这几列。下面说明下这几列的意义。

Position: LOG 文件的字节位置
Timestamp: 事件发生的时间戳
Type: 事件类型(以下表格是所有的事件类型)
细聊 MySQL 之常用工具及基本操作(完结篇)
2、事件的显示
shell> mysqlbinlog log_file
结果如下所示:
# at 379
#141203 0:03:50 server id 1 end_log_pos 491 CRC32 0xab45c565 Query thread_id=4 exec_time=0 error_code=0
SET TIMESTAMP=1417593830/*!*/;
INSERT INTO t VALUES(1, ‘apple’, NULL)
/*!*/;
at 代表 log 文件内字节位置
CRC32 0xab45c565 代表校验和
Query thread_id=4 代表执行的线程 ID
end_log_pos 491 代表结束的字节位置
error_code=0 代表错误码
141203 可能代表事务标识,未验证
注释下面是具体的 SQL 操作记录
3、使用 mysqlbinlog 备份二进制文件
mysqlbinlog 工具可以读取并显示二进制文件的内容,这种能力可以用来备份。mysqlbinlog 能进行静态备份或者不间断的连续备份。mysqlbinlog 能够一直运行知道服务器关闭,或者 mysqlbinlog 强制退出。当连接关闭时,mysqlbinlog 不会等待或者重连,如果需要继续进行备份,必须重新启动 mysqlbinlog。
二进制日志的备份需要调用 mysqlbinlog 的至少两个选项:
–read-from-remote-server (or -R) 选项告诉 mysqlbinlog 连接到一个服务器和请求 binlog
–raw option 告诉 mysqlbinlog 写二进制输出而不是文本输出
在使用–read-from-remote-server 选项时,通常要搭配–user、–host、–password 等一起使用。
一些其它的选项也是比较有用的,与–raw 一起搭配使用,如
–stop-never:一直保持连接
–stop-never-slave-server-id=id:当–stop-never 开启时报告 server id
–result-file:指定输出的文件名

下面用例子来描述下:
mysqlbinlog –read-from-remote-server –host=host_name –raw –to-last-log –result-file=xxx binlog.000130
此为静态备份,一次性备份 binlog 到 xxx 文件

mysqlbinlog –read-from-remote-server –host=host_name –raw –stop-never –result-file=xxx binlog.000130
加了–stop-never 后为连续备份,直到服务器 shutdown 或强制退出 mysqlbinlog

在运行此命令前需注意两点:
1、检查 binlog.index 内的路径是否正确,否则会出现找不到二进制日志的错误。
2、保证 binlog 文件没有异常,否则会出现备份不了的情况。
3、mysqld 运行时必须指定 server id。


微视觉 , 版权所有丨如未注明 , 均为网络收集丨本网站采用BY-NC-SA协议进行授权 , 转载请注明细聊 MySQL 之常用工具及基本操作(完结篇)
喜欢 (7)
[wuwei967@126.com]
分享 (0)

您必须 登录 才能发表评论!