本文介绍如何为PolarDB集群开启Binlog功能。

前提条件

  • PolarDB集群创建于2019年04月05日之后,您可以直接开启Binlog。
  • PolarDB集群创建于2019年04月05日之前,请您先将集群小版本升级至最新版本再开启Binlog,关于如何升级小版本,请参见版本升级

背景信息

PolarDB是一款完全兼容MySQL的云原生数据库,默认使用了更高级别的物理日志代替Binlog,但为了更好地与MySQL生态融合,PolarDB支持手动开启Binlog,开启Binlog后您就可以连接ElasticSearchAnalyticDB等数据产品,也可以搭建PolarDB到RDSRDS到PolarDBPolarDB之间的数据实时同步。

收费说明

Binlog的空间属于集群存储空间的一部分,需要收取存储费用,详情请参见存储空间计费规则

注意事项

  • Binlog功能默认关闭,开启Binlog需要重启集群内所有节点,会造成连接中断,重启前请做好业务安排,谨慎操作。
  • 开启后Binlog默认保存2周,超出两周的Binlog文件会被自动删除,详情请参见常见问题
  • 开启Binlog后会导致写性能下降,读性能不受影响,详情请参见常见问题
  • 拉取、订阅或同步Binlog(例如使用DTS等工具)时,建议使用PolarDB主地址,因为直接指向生成Binlog的主节点,具有更好的兼容性和稳定性。关于如何查看主地址,请参见查看连接地址和端口
  • 本文介绍的loose_polar_log_bin参数为全局(Global)级别参数。若需要使用会话(Session)级别的Binlog功能,可以通过sql_log_bin参数开启。更多详情,请参见sql_log_bin
    说明 sql_log_bin参数多用于临时关闭会话级别Binlog的场景。通常情况下,保持该参数开启(默认值)即可。

操作步骤

  1. 登录PolarDB控制台
  2. 在控制台左上角,选择集群所在地域。
  3. 找到目标集群,单击集群ID。
  4. 在左侧导航栏中选择配置与管理 > 参数配置
  5. 找到目标参数loose_polar_log_bin,单击当前值栏的图标图标,在弹出的对话框中,输入新的参数值,单击确定
    1
    说明
    • 若您的PolarDB MySQL引擎集群版本为MySQL 5.6,当前值修改为ON_WITH_GTID
    • 若您的PolarDB MySQL引擎集群版本为MySQL 5.7或MySQL 8.0,当前值修改为ON
  6. 单击左上角提交修改,在弹出的保存改动对话框中,单击确定
    2
    说明
    • 开启Binlog后,集群会自动重启,新参数配置才会生效,建议在业务低谷期操作并确保应用程序具备重连机制。
    • 若您的PolarDB MySQL引擎集群版本为8.0,您还可以修改参数innodb_fast_startup的值为ON来加速重启。
    • 如果报错提示Custins minor version does not support current action,请提交工单开启。

常见问题

  • Q:Binlog文件能保存多久?
    A:Binlog文件有如下2种保存策略:
    • 开启Binlog后,文件默认保存2周,超出两周的Binlog文件会被自动删除。
      • 若您的集群版本为PolarDB MySQL引擎 5.6,您可以通过修改loose_expire_logs_hours(取值范围为0~2376,单位为小时)的参数值来设置Binlog的保存时长。0表示不自动删除Binlog文件。
      • 若您的集群版本为PolarDB MySQL引擎 5.7或8.0,您可以通过修改binlog_expire_logs_seconds(取值范围为0~4294967295,单位为秒)的参数值来设置Binlog的保存时长。0表示不自动删除Binlog文件。
    • 关闭Binlog后,已有的Binlog文件会一直保留,不会自动删除。
      说明 如需删除,您可以重新打开Binlog,将上述Binlog的保存时长参数(loose_expire_logs_hoursbinlog_expire_logs_seconds)设置为一个较小的值,等文件超过保存时长自动删除后再关闭Binlog。
  • Q:开启Binlog后可以关闭吗?

    A:将参数loose_polar_log_bin修改为OFF并提交即可关闭。

    说明 Binlog关闭后,已有的Binlog文件会一直保留。您可以先缩短Binlog文件的保存时长,等待不需要的文件自动删除后,再关闭Binlog。
  • Q:如何减少Binlog占用的存储空间?

    A:您可以将Binlog的保存时长参数(loose_expire_logs_hoursbinlog_expire_logs_seconds)设置为一个较小的值,来减少Binlog文件对存储空间的占用。

  • Q:开启Binlog对性能影响有多大?

    A:开启Binlog不会影响查询(SELECT)性能,只会影响写入更新(如INSERT、UPDATE、DELETE等)性能。一般情况下,开启Binlog后对性能影响不超过10%。

  • Q:开启Binlog后集群会自动重启,重启任务多久才能完成?

    A:一般来说,重启任务会在5分钟之内完成,重启时服务闪断时间在40秒左右。具体时间与数据量和表数量相关,建议您在业务低谷期在进行操作并确保应用程序具备重连机制。

  • Q:如何远程获取并查看Binlog日志内容?

    A:详情请参见远程获取并解析PolarDB MySQL Binlog日志

  • Q:为什么无法使用DMS的DDL无锁变更功能对PolarDB MySQL引擎集群进行添加索引等表结构变更操作?

    A:PolarDB MySQL引擎集群Binlog默认关闭,因此若需要使用DMS的无锁结构变更功能,请先开启PolarDB MySQL引擎集群的Binglog功能。若不想开启Binlog,您也可以使用online DDL命令来变更表结构。