binlog_format
在STATEMENT
模式下记录的是 sql
flush logs;update ceshi2.account set username='2';mysql> SHOW BINLOG EVENTS IN 'binlog.000019' limit 10;+---------------+-----+----------------+-----------+-------------+----------------------------------------+| Log_name| Pos | Event_type| Server_id | End_log_pos | Info|+---------------+-----+----------------+-----------+-------------+----------------------------------------+| binlog.000019 |4 | Format_desc|1 |125 | Server ver: 8.0.21, Binlog ver: 4|| binlog.000019 | 125 | Previous_gtids |1 |156 ||| binlog.000019 | 156 | Anonymous_Gtid |1 |235 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS'|| binlog.000019 | 235 | Query|1 |324 | BEGIN|| binlog.000019 | 324 | Query|1 |446 | update ceshi2.account set username='2' || binlog.000019 | 446 | Xid|1 |477 | COMMIT /* xid=300671 */|+---------------+-----+----------------+-----------+-------------+----------------------------------------+
binlog 操作查看所有的 binlog-- 查看链接的数据库 binlog 文件信息SHOW BINARY LOGS;SHOW MASTER LOGS;mysql> SHOW BINARY LOGS;+---------------+-----------+-----------+| Log_name| File_size | Encrypted |+---------------+-----------+-----------+| binlog.000013 |16162 | No|| binlog.000014 |179 | No|| binlog.000015 |3765 | No|| binlog.000016 |1700 | No|+---------------+-----------+-----------+
查看当前正在写入的 binlog-- 查看当前正在写入的 binlog 文件信息SHOW MASTER STATUS;mysql> SHOW MASTER STATUS;+---------------+----------+--------------+------------------+-------------------+| File| Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |+---------------+----------+--------------+------------------+-------------------+| binlog.000016 |1700 ||||+---------------+----------+--------------+------------------+-------------------+1 row in set (0.00 sec)
生成新的 binlog-- 刷新产生新的日志文件FLUSH LOGS;-- 原来的日志文件是 binlog.000016mysql> SHOW MASTER STATUS;+---------------+----------+--------------+------------------+-------------------+| File| Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |+---------------+----------+--------------+------------------+-------------------+| binlog.000017 |156 ||||+---------------+----------+--------------+------------------+-------------------+1 row in set (0.00 sec)
查看 binlog 中的操作SHOW BINLOG EVENTS[IN 'log_name'][FROM pos][LIMIT [offset,] row_count]mysql> show binlog events limit 100,3;+---------------+------+----------------+-----------+-------------+-------------------------------------------------------------------------------------+| Log_name| Pos| Event_type| Server_id | End_log_pos | Info|+---------------+------+----------------+-----------+-------------+-------------------------------------------------------------------------------------+| binlog.000013 | 9382 | Query|1 |9539 | use `ceshi`; GRANT SELECT ON `ceshi`.`test2` TO 'db_dev'@'localhost' /* xid=1023 */ || binlog.000013 | 9539 | Anonymous_Gtid |1 |9616 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS'|| binlog.000013 | 9616 | Query|1 |9711 | use `ceshi`; FLUSH PRIVILEGES|+---------------+------+----------------+-----------+-------------+-------------------------------------------------------------------------------------+
binlog 落盘时机Mysql 中有很多 Buffer Pool
(可以简单理解为内存),为了提高数据库性能,一般提交事务之后,二进制日志先写入 Buffer Poll
,在写入到二进制文件中 。如果二进制日志没有落盘,那么二进制日志有可能丢失,从库进行复制时会丢失数据 。
参数
sync_binlog
配置写入 Buffer Poll
多少次的时候调用系统调用 fsync
将内存中的二进制日志数据落盘 。sync_binlog=1
表示提交事务的时候同步将二进制日志数据落盘 。配合innodb_flush_log_at_trx_commit=1
(控制 redo log 落盘) 数据安全 。sync_binlog=N
表示提交了 N 个二进制数据时才将日志数据落盘 。也有人将其设置为 2,提高并发性,系统崩溃时可能丢失二进制日志数据 。sync_binlog=0
表示由操作系统 IO 调度来决定日志什么时候落盘 。一般没人采用这个 。
根据备份方法的不同可以划分为:
- 热备(Hot Backup)
- 冷备 (Clod Backup)
冷备需要停止 Mysql 进行备份,速度较快 。可以在从库进行冷备 。
推荐阅读
- 才买的茶有霉味怎么办,买茶的时候如何区分干仓与湿仓
- MySQL的 join 操作弱爆了?
- 白沙溪茶的功效与作用,花砖茶的由来与特征
- 蛮砖古茶山及口感特点,蛮砖古茶山资料简介与普洱茶特点
- 百合茶的功效和作用,百合花茶的功效作用与泡法
- 六大类茶与菜肴的配搭,配搭功效不样的的花草茶
- 学葫芦丝的方式与技巧
- 巴马藤茶的功效与作用,藤婆茶的功效与作用有哪些
- 白河歌风茶简介,茶与对联是中国文化中极为出彩的喻世或抒情
- 化妆|“会化妆”与“不会化妆”的女人,看眉毛和口红就知道:差别太大