首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >[转]一个比较两个MySQL实例参数的Python脚本

[转]一个比较两个MySQL实例参数的Python脚本

作者头像
保持热爱奔赴山海
发布2025-10-16 23:28:03
发布2025-10-16 23:28:03
1040
举报
文章被收录于专栏:数据库相关数据库相关

MySQL 的参数(variables)决定了数据库的行为模式、性能表现、存储策略及安全规则等核心特性。即便数据库版本相同,若两个实例的关键参数存在差异,执行相同 SQL 时仍可能出现显著的性能偏差。

对于主从复制或高可用集群而言,各节点的关键参数也需保持一致 —— 否则可能引发主从同步异常、数据写入逻辑冲突(进而导致数据不一致)、故障切换(Failover)后读写行为不一致等问题。

此外,参数一致性报告可纳入运维规范体系,同时为数据库升级或迁移提供重要参考,从而规避因实例间参数差异导致的迁移失败或性能下降风险。

以下是一个比较两个MySQL实例的参数输出差异,并保存到CSV的python脚本。

代码语言:javascript
复制
#!/usr/bin/env python3  
import pymysql  
import csv  

cfg1 = {"host": "host1", "port": 3306, "user": "user1", "password": "password1"}  
cfg2 = {"host": "host2", "port": 3306, "user": "user2", "password": "password2"}  

def get_vars(cfg):  
    conn = pymysql.connect(**cfg)  
    with conn.cursor() as cur:  
        cur.execute("SHOW VARIABLES")  
        return dict(cur.fetchall())  

vars1 = get_vars(cfg1)  
vars2 = get_vars(cfg2)  

diffs = []  
for k in sorted(set(vars1) | set(vars2)):  
    v1, v2 = vars1.get(k), vars2.get(k)  
    if v1 != v2:  
        diffs.append((k, v1, v2))  

# ======== 保存为 CSV ========def save_to_csv(diffs, filename="mysql_diff.csv"):  
    with open(filename, "w", newline="", encoding="utf-8") as f:  
        writer = csv.writer(f)  
        writer.writerow(["参数名", "实例1值", "实例2值"])  
        writer.writerows(diffs)  
    print(f"\n📄 差异结果已保存到: {filename}")  

if diffs:  
    print(f"❗ 共发现 {len(diffs)} 个参数不一致:\n")  
    print(f"{'参数名':40s} {'实例1值':35s} {'实例2值'}")  
    print("-" * 100)  
    for k, v1, v2 in diffs:  
        print(f"{k:40s} {str(v1):35s} {str(v2)}")  
    save_to_csv(diffs)  
else:  
    print("✅ 两个实例参数完全一致。")

执行脚本后,我们可以获得如下类似的CSV文件:

图片
图片

MySQL中的关键性能参数

  • 内存相关innodb_buffer_pool_sizeinnodb_buffer_pool_instancesinnodb_log_file_sizeinnodb_log_files_in_group
  • I/O相关innodb_io_capacityinnodb_io_capacity_maxinnodb_log_file_size
  • 查询和排序缓冲区参数read_buffer_sizeread_rnd_buffer_sizesort_buffer_sizejoin_buffer_size
  • 连接并发max_connectionsthread_pool_size
  • 事务与持久化innodb_flush_log_at_trx_commitsync_binlog
  • 主从复制binlog_formatgtid_modeserver_id
  • 临时表/缓存tmp_table_sizetable_open_cache

在获取参数一致性报告后,我们可以优先核对上述参数 —— 它们直接影响数据库的内存利用效率、I/O 吞吐量、查询执行效率、并发承载能力、数据一致性及集群同步稳定性,是保障实例行为统一和性能可控的关键校验点。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档