怎么使用MySQL中的参数binlog_row_image
发表于:2025-11-09 作者:千家信息网编辑
千家信息网最后更新 2025年11月09日,这篇文章主要介绍"怎么使用MySQL中的参数binlog_row_image",在日常操作中,相信很多人在怎么使用MySQL中的参数binlog_row_image问题上存在疑惑,小编查阅了各式资料,
千家信息网最后更新 2025年11月09日怎么使用MySQL中的参数binlog_row_image
这篇文章主要介绍"怎么使用MySQL中的参数binlog_row_image",在日常操作中,相信很多人在怎么使用MySQL中的参数binlog_row_image问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"怎么使用MySQL中的参数binlog_row_image"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
一、设置过程
插入前先调用TABLE::mark_columns_per_binlog_row_image函数
函数中有image的详细设置
/* Mark columns according the binlog row image option. When logging in RBR, the user can select whether to log partial or full rows, depending on the table definition, and the value of binlog_row_image. Semantics of the binlog_row_image are the following (PKE - primary key equivalent, ie, PK fields if PK exists, all fields otherwise): binlog_row_image= MINIMAL - This marks the PKE fields in the read_set - This marks all fields where a value was specified in the write_set binlog_row_image= NOBLOB - This marks PKE + all non-blob fields in the read_set - This marks all fields where a value was specified and all non-blob fields in the write_set binlog_row_image= FULL - all columns in the read_set - all columns in the write_set This marking is done without resetting the original bitmaps. This means that we will strip extra fields in the read_set at binlogging time (for those cases that we only want to log a PK and we needed other fields for execution). */void TABLE::mark_columns_per_binlog_row_image(){ DBUG_ENTER("mark_columns_per_binlog_row_image"); DBUG_ASSERT(read_set->bitmap); DBUG_ASSERT(write_set->bitmap); /** If in RBR we may need to mark some extra columns, depending on the binlog-row-image command line argument. */ if ((mysql_bin_log.is_open() && in_use && in_use->is_current_stmt_binlog_format_row() && !ha_check_storage_engine_flag(s->db_type(), HTON_NO_BINLOG_ROW_OPT))) { THD *thd= current_thd; /* if there is no PK, then mark all columns for the BI. */ if (s->primary_key >= MAX_KEY) bitmap_set_all(read_set); switch (thd->variables.binlog_row_image) { case BINLOG_ROW_IMAGE_FULL: if (s->primary_key < MAX_KEY) bitmap_set_all(read_set); //记录全部字段 bitmap_set_all(write_set); //记录全部字段,前面write_set应该只是记录了 修改了哪些字段 位图 初始化初始4字节 break; case BINLOG_ROW_IMAGE_NOBLOB: /* for every field that is not set, mark it unless it is a blob */ for (Field **ptr=field ; *ptr ; ptr++) { Field *my_field= *ptr; /* bypass blob fields. These can be set or not set, we don't care. Later, at binlogging time, if we don't need them in the before image, we will discard them. If set in the AI, then the blob is really needed, there is nothing we can do about it. */ if ((s->primary_key < MAX_KEY) && ((my_field->flags & PRI_KEY_FLAG) || (my_field->type() != MYSQL_TYPE_BLOB))) bitmap_set_bit(read_set, my_field->field_index); if (my_field->type() != MYSQL_TYPE_BLOB) bitmap_set_bit(write_set, my_field->field_index); } break; case BINLOG_ROW_IMAGE_MINIMAL: /* mark the primary key if available in the read_set */ if (s->primary_key < MAX_KEY) mark_columns_used_by_index_no_reset(s->primary_key, read_set); //只记录主键或者非空唯一键的 字段 break; default: DBUG_ASSERT(FALSE); } file->column_bitmaps_signal(); } DBUG_VOID_RETURN;}二、过滤过程
THD::binlog_prepare_row_images还会准备image
binlog_log_row 上层接口 记录 binlog-> Write_rows_log_event::binlog_row_logging_function -> THD::binlog_write_row(THD::binlog_delete_row) ->THD::binlog_prepare_row_images 准备前印象位图 如果没有主键/非空唯一键 则不考虑记录全字段 pack_row 通过位图准备好行 THD::binlog_prepare_pending_rows_event -> 判断是否需要新建一个EVENT 大约8K左右, 如果新建 新建后写event到 log buffer ->否则在当前event中写入 add_row_data(row_data, len); 将数据加入到EVENT
到此,关于"怎么使用MySQL中的参数binlog_row_image"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
参数
学习
准备
位图
函数
字段
更多
过程
帮助
实用
接下来
上层
印象
接口
数据
文章
方法
理论
知识
篇文章
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全与执法的教程
统计年鉴是原始数据库
常州维修备件管理软件开发
请外面做软件开发会计处理
软件开发项目预算案例分析
四虎国外服务器免费ip地址
pdo的三种数据库连接方式
网络安全包括舆情安全
微信服务器登陆不了
网络安全重点防护手段
定制数据库云扩展
网络安全方向博士
虚拟机连接到虚拟服务器
PPT共建网络安全
我的世界服务器怎么重启手机版
贵阳盛世加贝网络技术怎么样
数据库中班级号怎么表示
小迪网络技术深圳有限公司
宁波分布式服务器价格
爆破服务器 端口
传奇ip地址和服务器名称
ob链接数据库报oci乱码
网信办备案流程软件开发公司
力控本地数据库
软件开发 服务器cpu
联想亚太区服务器财务 谢 娟
虚拟机连接到虚拟服务器
珠海横琴网络技术有限公司
银行网络技术类员工工资
服务器4个网口冗余