判断mysql 是否开启Binlog,如果没开启Binlog 该如何开启

发布时间:2026/10/23 6:14:04

判断mysql 是否开启Binlog,如果没开启Binlog 该如何开启 方法一SQL 命令检查最常用连接到MySQL后执行-- 查看 binlog 状态SHOWVARIABLESLIKElog_bin;输出示例---------------------- | Variable_name | Value | ---------------------- | log_bin | ON | ----------------------Value ON✅ 表示已开启Value OFF❌ 表示未开启方法二查看详细的 Binlog 配置-- 查看所有 binlog 相关配置SHOWVARIABLESLIKE%bin%;关键参数说明-- 查看 binlog 格式必须是 ROWSHOWVARIABLESLIKEbinlog_format;-- 应该显示ROW-- 查看 binlog 文件位置SHOWVARIABLESLIKElog_bin_basename;-- 显示/var/lib/mysql/mysql-bin-- 查看当前正在写入的 binlog 文件SHOWMASTERSTATUS;-- 显示当前文件和位置方法三检查 Binlog 文件是否存在系统级别在Linux系统中直接查看binlog文件# 查看 MySQL 数据目录mysql-eSHOW VARIABLES LIKE datadir;# 进入数据目录查看 binlog 文件ls-lh/var/lib/mysql/|grepmysql-bin如果看到mysql-bin.000001这样的文件说明binlog已开启。方法四使用 Python 脚本检查importpymysqldefcheck_binlog_status(host,user,password,port3306):connpymysql.connect(hosthost,useruser,passwordpassword,portport)cursorconn.cursor()# 检查 log_bincursor.execute(SHOW VARIABLES LIKE log_bin)log_bincursor.fetchone()# 检查 binlog_formatcursor.execute(SHOW VARIABLES LIKE binlog_format)binlog_formatcursor.fetchone()# 检查 binlog 文件cursor.execute(SHOW MASTER STATUS)master_statuscursor.fetchone()conn.close()return{log_bin:log_bin[1]iflog_binelseOFF,binlog_format:binlog_format[1]ifbinlog_formatelseUnknown,has_binlog_files:master_statusisnotNone}# 使用示例resultcheck_binlog_status(127.0.0.1,root,your_password)print(flog_bin:{result[log_bin]})print(fbinlog_format:{result[binlog_format]})print(fHas binlog files:{result[has_binlog_files]})方法五组合检查脚本推荐创建一个完整的检查脚本#!/usr/bin/env python3importpymysqlimportsysdefcheck_mysql_binlog(host,user,password,port3306):try:connpymysql.connect(hosthost,useruser,passwordpassword,portport)cursorconn.cursor()# 1. 检查 log_bincursor.execute(SHOW VARIABLES LIKE log_bin)log_bincursor.fetchone()# 2. 检查 binlog_formatcursor.execute(SHOW VARIABLES LIKE binlog_format)binlog_formatcursor.fetchone()# 3. 检查 binlog_row_imagecursor.execute(SHOW VARIABLES LIKE binlog_row_image)row_imagecursor.fetchone()# 4. 检查是否有 binlog 文件cursor.execute(SHOW MASTER STATUS)master_statuscursor.fetchone()conn.close()print(*50)print(MySQL Binlog 状态检查)print(*50)print(flog_bin :{log_bin[1]iflog_binelseOFF})print(fbinlog_format :{binlog_format[1]ifbinlog_formatelseUnknown})print(fbinlog_row_image :{row_image[1]ifrow_imageelseUnknown})ifmaster_status:print(f当前 binlog 文件 :{master_status[0]})print(f当前位置 :{master_status[1]})else:print(当前 binlog 文件 : 无)print(*50)# 判断是否满足 CDC 要求is_ready(log_binandlog_bin[1]ONandbinlog_formatandbinlog_format[1].upper()ROWandmaster_statusisnotNone)ifis_ready:print(✅ MySQL 已正确配置可以使用 CDC)else:print(❌ MySQL 未正确配置需要修改配置)ifnotlog_binorlog_bin[1]!ON:print( - 需要开启 log_bin)ifnotbinlog_formatorbinlog_format[1].upper()!ROW:print( - 需要设置 binlog_formatROW)ifnotmaster_status:print( - 未找到 binlog 文件)returnis_readyexceptExceptionase:print(f❌ 连接失败:{e})returnFalseif__name____main__:# 修改为你的 MySQL 配置check_mysql_binlog(host127.0.0.1,userroot,passwordyour_password,port3306)如果未开启如何开启 Binlog1. 修改 MySQL 配置文件找到 MySQL 配置文件通常在/etc/mysql/my.cnf或/etc/my.cnf[mysqld] # 开启 binlog log-bin mysql-bin server-id 1 # 必须设置唯一值 binlog-format ROW # 必须设置为 ROW binlog-row-image FULL # 推荐设置为 FULL expire-logs-days 7 # 日志保留7天可选8.4.11 以后无效 binlog_expire_logs_seconds604800 # 新版本用这个存储保留时间 max-binlog-size 100M # 单个文件大小可选 # 如果你只需要监听特定数据库可以添加 # binlog-do-db your_database # 只记录指定数据库2. 重启 MySQL# Ubuntu/Debiansudosystemctl restart mysql# CentOS/RHELsudosystemctl restart mysqld# 或使用 servicesudoservicemysql restart3. 验证配置SHOWVARIABLESLIKElog_bin;SHOWVARIABLESLIKEbinlog_format;SHOWMASTERSTATUS;SHOW VARIABLES LIKE ‘%bin%’;bind_address *binlog_cache_size 32768binlog_checksum CRC32binlog_direct_non_transactional_updates OFFbinlog_encryption OFFbinlog_error_action ABORT_SERVERbinlog_expire_logs_seconds 2592000binlog_format ROWbinlog_group_commit_sync_delay 0binlog_group_commit_sync_no_delay_count 0binlog_gtid_simple_recovery ONbinlog_max_flush_queue_time 0binlog_order_commits ONbinlog_rotate_encryption_master_key_at_startup OFFbinlog_row_event_max_size 8192binlog_row_image FULLbinlog_row_metadata MINIMALbinlog_row_value_optionsbinlog_rows_query_log_events OFFbinlog_stmt_cache_size 32768binlog_transaction_dependency_history_size 25000binlog_transaction_dependency_tracking COMMIT_ORDERinnodb_api_enable_binlog OFFlog_bin ONlog_bin_basename /var/lib/mysql/binloglog_bin_index /var/lib/mysql/binlog.indexlog_bin_trust_function_creators OFFlog_bin_use_v1_row_events OFFlog_statements_unsafe_for_binlog ONmax_binlog_cache_size 18446744073709547520max_binlog_size 1073741824max_binlog_stmt_cache_size 18446744073709547520mysqlx_bind_address *sql_log_bin ONsync_binlog 1
延伸阅读

更多相关文章

2026/10/23 6:14:04

Rime 输入方案挑花眼?这份 awesome-rime 清单帮你一次选对

Rime 输入方案挑花眼?这份 awesome-rime 清单帮你一次选对 【免费下载链接】awesome-rime A curated list of Rime IME schemata and configs | Rime 輸入方案和配置列表 项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-rime 刚在 Windows 装好小…

2026/10/23 6:14:04

PCL2内存优化终极指南:告别Minecraft卡顿的3步解决方案

PCL2内存优化终极指南:告别Minecraft卡顿的3步解决方案 Plain Craft Launcher 2(简称PCL2)作为一款广受好评的Minecraft启动器,其强大的内存优化功能能够显著提升游戏性能。无论你是运行原版Minecraft还是加载大量模组&#xff0…

2026/10/23 6:14:04

PCL2启动器内存配置:从基础概念到高级调优

PCL2启动器内存配置:从基础概念到高级调优 Plain Craft Launcher 2(PCL2)作为一款功能完善的Minecraft启动器,其内存管理机制设计得相当专业。本文将从内存配置的基础概念出发,深入探讨PCL2的内存管理原理、配置策略以…

2026/10/23 7:24:10

宝可梦自走棋的精灵图打包流程是怎么跑起来的

宝可梦自走棋的精灵图打包流程是怎么跑起来的 【免费下载链接】pokemonAutoChess Pokemon Auto Chess Game. Made by fans for fans. Open source, non profit. All rights to the Pokemon Company. 项目地址: https://gitcode.com/GitHub_Trending/po/pokemonAutoChess …

2026/10/22 11:29:28

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

2026/10/23 0:02:26

Verilog实现FPGA密码锁:矩阵键盘与状态机设计实战

说实话,这几年接触了不少想入门FPGA的朋友,如果你问哪个项目能一口气把Verilog的核心基本功串起来,我通常会推荐电子密码锁。这个项目看着不起眼,却把矩阵键盘扫描、按键消抖、状态机设计、动态显示刷新、外设控制这些数字逻辑里的…

2026/10/23 0:02:26

数据服务监控运维实战:从指标体系到告警治理与故障排查

周末凌晨两点,手机震了。第一反应是“数据服务挂了”。打开电脑看了下,果然,某张核心报表的数据产出时间已经超过SLA两小时,下游三个业务方连着发来问询。这种场景,做过大数据运维的人都不会陌生。数据服务的监控与运维…

2026/10/23 0:02:26

FreeRTOS任务通知实战详解:内核原理、API与避坑指南

裸机编程切到RTOS之后,任务之间的通信和同步永远是躲不开的坎。前面聊过队列、信号量、互斥锁、事件组,这次把FreeRTOS任务通知(Task Notification)单独拎出来讲透。原因很简单:任务通知是FreeRTOS里最容易用错、也最容…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑