MySQL-Binlog

MySQL mysqlbinlog 读取mysql-bin文件出错

喜你入骨 提交于 2020-05-01 00:05:37
问题 mysqlbinlog -v -v --base64-output=DECODE-ROWS mysql-bin.000166 | less ERROR: Error in Log_event::read_log_event(): 'Found invalid event in binary log', data_len: 111, event_type: 35 /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/; /*!40019 SET @@session.max_insert_delayed_threads=0*/; /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/; DELIMITER /*!*/; # at 4 #190408 18:15:19 server id 311948559 end_log_pos 123 CRC32 0x56e12e5d Start: binlog v 4, server v 5.7.21-log created 190408 18:15:19 # Warning: this binlog is either in use or was not closed properly. BINLOG ' Nx

MySQL备份与恢复(10)mysqlbinlog命令

筅森魡賤 提交于 2020-04-30 20:29:58
一、mysqlbinlog  #解析 mysql的binlog日志 1、mysql的binlog日志是什么?   数据目录下的如下文件就是   mysqlbin_oldboy.000001   mysqlbin_oldboy.000002   mysqlbin_oldboy.000003   mysqlbin_oldboy.000004 2、mysql的binlog日志作用是什么?   用来记录mysql内部增删改查等对mysql数据库有更新的内容的记录。 3、binlog功能怎么打开     [root@localhost data]# grep log-bin /etc/my.cnf      log-bin=mysqlbin_oldboy 4、mysqlbinlog查看日志,(这里不能用cat查看),不记录 select 记录 [root@localhost bak]# ll /application/mysql/data/ 总用量 29292 -rw-r--r--. 1 root root 2014 9月 20 22 : 24 bin.sql -rw-rw----. 1 mysql mysql 18874368 9月 21 17 : 46 ibdata1 -rw-rw----. 1 mysql mysql 5242880 9月 21 17 : 46 ib_logfile0

使用canal通过mysql复制协议从binlog实现热数据nosql缓存(2)

久未见 提交于 2020-04-30 16:15:09
开启mysql binlog功能 以5.7版本为例,找到/etc/mysql/mysql.conf.d/mysqld.cnf [mysqld] pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock datadir = /var/lib/mysql #log-error = /var/log/mysql/error.log # By default we only accept connections from localhost #bind-address = 127.0.0.1 # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 # 开启binlog log-bin=mysql-bin binlog-format=ROW server_id=1 # 开启binlog 配置完毕重启mysql服务,重启完成后,查看是否已经成功开启 show variables like 'log_%'; canal-server服务 点击下载ali-canal 配置canal-server,修改\canal.deployer-1.0.22\conf\example

关系型数据库---MYSQL---系统学习

*爱你&永不变心* 提交于 2020-04-28 12:48:16
1、概述     1.1  mysql数据库是一种 客户端/服务器体系 的 数据库系统;          服务器部分 在 启动运行后没有人机界面 ,所以终端用户 无法直接使用MySQL ;         对MySQL数据库进行访问、操作 只能通过 MySQL客户端程序 ;     1.2   mysql            mysql 不是 MySQL数据库 服务器 ,只是供人们用来 与MySQL服务器进行通信 的一种 客户端程序 ;            mysql用途 :                 把数据库操作命令发送给MySQL数据库服务器、                 把命令执行的结果显示给用户;     1.3   mysqld           MySQL数据库 服务器程序 ;     1.3   mysqladmin            mysqladmin用途 :                 完成系统管理任务:eg:                     创建数据库    mysqladmin -u root -p create 数据库名                     删除数据库    mysqladmin -u root -p drop 数据库名                     修改密码     mysqladmin

聊聊BinaryLogClient的EventListener

独自空忆成欢 提交于 2020-04-28 01:01:15
序 本文主要研究一下BinaryLogClient的EventListener EventListener mysql-binlog-connector-java-0.20.1/src/main/java/com/github/shyiko/mysql/binlog/BinaryLogClient.java public interface EventListener { void onEvent(Event event); } EventListener接口定义了onEvent方法 BinaryLogClientStatistics mysql-binlog-connector-java-0.20.1/src/main/java/com/github/shyiko/mysql/binlog/jmx/BinaryLogClientStatistics.java public class BinaryLogClientStatistics implements BinaryLogClientStatisticsMXBean, BinaryLogClient.EventListener, BinaryLogClient.LifecycleListener { private AtomicReference<EventHeader> lastEventHeader = new

MySQL5.7.20源码安装以及pt-query-digest用法示例

我们两清 提交于 2020-04-27 19:35:49
MySQL5.7.20源码安装 1.下载解压 cd /data/app/mysql5.7 wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.20.tar.gz tar -zxvf mysql-5.7.20.tar.gz 2.添加mysql用户组并添加mysql用户,并且不允许登录 groupadd mysql useradd -r -g mysql -s /bin/false -M mysql 3.创建安装目录 mkdir -p /data/app/mysql5.7/{data,boost} 4.cmake配置 cmake . -DCMAKE_INSTALL_PREFIX=/data/app/mysql5.7 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DENABLED_LOCAL_INFILE=ON -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1

MySQL 5.7 源码中的目录结构

强颜欢笑 提交于 2020-04-24 17:52:32
MySQl Server的源码可以直接去Github浏览。 这里我们选择5.7版本的: https://github.com/mysql/mysql-server/tree/5.7 也可以通过: git clone https://github.com/mysql/mysql-server.git 下载下来。 源码根目录中主要目录和文件的作用: BUILD :里面包含各个平台,各个编译器下进行编译的脚本; CMakeLists.txt :CMake入口编译文件; client :客户端工具,所有客户端工具都在这里,比如mysql,mysqlbinlog,mysqladmin,mysqldump等; cmake :为CMake编译服务的,这里定义了很多在CMake编译时使用的方法或变量; cmd-line-utils :一些小工具; config.h.cmake :用于生成编译时配置头文件的.cmake文件; dbug :提供一些调试用的宏定义,可以很好地跟踪数据库执行到的执行函数、运行栈桢等信息,可以定位一些问题; extra :包含了用来做网络消息认证的SSL包,并提供了comp_err、resolveip等小工具; include :MySQL代码包含的所有头文件,这里不包括存储引擎的头文件; libbinlogevents :MySQL 5.7 引擎开始新增的

MySQL回滚到某一时刻数据的方法

梦想与她 提交于 2020-04-24 17:50:09
MySQL回滚到某一时刻数据的方法 对于有归档日志的数据库来说,原理上都具备全库回滚到之前某一时刻的能力。在这方面最好用的Orale数据库,使用Oracle数据库的RMAN工具,可以方便的设置全备,增备保留的时间和自动清理,RMAN自己记录之前做过哪些备份操作,有一份备份列表,所以可以全自动的根据全备、增备、归档日志进行回滚,只需一条命令。这个可以参考我之前写的博客 Oracle Database 12c RMAN全量+增量备份+归档日志恢复详解 Oracle 12c数据库定时备份和清理脚本 mysql不同于oracle和db2这种企业级数据库,它没有oracle里面的redo日志,也没有db2里面的循环日志。mysql有类似于oracle和db2归档日志的binlog,而这个binlog可以看作是循环日志和归档日志的结合。有一定的大小限制。未完成的事务和已完成的事务都会记录在binlog中,当一个binlog写满之后,就会开启一个新的binlog。binlog还有三种方式,row,statement,mixed。其中row记录量最大,但是对于各种工具支持最好,所以对于安全要求比较高的数据库,推荐使用row格式。 同时,binlog也是mysql主从复制的依据,所以使用binlog来恢复数据库是比较可靠的。不足的就是mysql并没有内置binlog的清理工具

MySQL从库实用技能(一)--巧用slave_exec_mode参数

无人久伴 提交于 2020-04-13 16:59:24
【今日推荐】:为什么一到面试就懵逼!>>> MySQL从库实用技能(一)--巧用slave_exec_mode参数 想必从库异常中断的情况不在少数,其中报错信息中1032及1062的错误占了不少的比重 错误1032指的是从库中找不到对应行的记录 错误1062指的是主键冲突 遇到此报错时,大多DBA会使用如下方法进行处理 1 手动处理 方法一: 找出引起异常的数据然后手动在从库处理后重启SQL线程继续观察; 根据报错的信息,通过mysqlbinlog解析binlog日志,找到对应的数据,然后查看从库是否缺失数据或者已存在对应主键的数据,然后手动在从库处理对应记录的数据。处理完毕后再次开启同步。 但是,后续还得观察是否再次出现错误 方法二: 手动跳过1个或更多个事务,然后继续观察。 / 传统点位模式复制 / SQL>set global sql_slave_skip_counter=1; SQL>start sql_thread; / GTID模式复制 / SQL>set gtid_next='e29d3917-9dbb-11e9-8b64-e4434b6e2c80:11103335-16054791'; SQL>begin;commit; SQL>set gtid_next='AUTOMATIC'; 注意,手动跳过事务的方式存在一个很大的缺点: 1个事务中存在多个sql,用此方式

MySQL从库实用技能(一)--巧用slave_exec_mode参数

假如想象 提交于 2020-04-12 17:47:23
想必从库异常中断的情况不在少数,其中报错信息中1032及1062的错误占了不少的比重 错误1032指的是从库中找不到对应行的记录 错误1062指的是主键冲突 遇到此报错时,大多DBA会使用如下方法进行处理 1 手动处理 方法一: 找出引起异常的数据然后手动在从库处理后重启SQL线程继续观察; 根据报错的信息,通过mysqlbinlog解析binlog日志,找到对应的数据,然后查看从库是否缺失数据或者已存在对应主键的数据,然后手动在从库处理对应记录的数据。处理完毕后再次开启同步。 但是,后续还得观察是否再次出现错误 方法二: 手动跳过1个或更多个事务,然后继续观察。 /* 传统点位模式复制 */ SQL > set global sql_slave_skip_counter = 1 ; SQL > start sql_thread; /* GTID模式复制 */ SQL > set gtid_next = ' e29d3917-9dbb-11e9-8b64-e4434b6e2c80:11103335-16054791 ' ; SQL > begin ; commit ; SQL > set gtid_next = ' AUTOMATIC ' ; 注意,手动跳过事务的方式存在一个很大的缺点: 1个事务中存在多个sql,用此方式,本事务中的其他SQL也会被跳过(具体的和binlog