电商项目数据高可用架构设计

缓存数据库一致

Canal : 基于Binlog的同步中间件。

Canal伪装成Mysql的从节点。收到Binlog 解析变更的binlog。

Canal Server - 接收Mysql 日志流。
Canal Client - 处理解析后的操作。可以在业务进行实现。

Canal也可以推送到Mq,kafka等。

RabbitMq不支持。Rocket可以支持。

Mysql检查

1
2
3
show VARIABLES like %bin_log%
show VARIABLES like %binlog_format%
show VARIABLES like %server_id%
  • 修改:

my.conf

创建用户

创建canal用户,用来复制Mysql权限。

1
select * from mysql.user;

canal配置文件

几个关键配置

1
2
3
//支持的表,支持正则表达黑丝
canal.instance.filter.regex =
canal.destination =
  • 启动canal server
  • 启动canal client

Binlog

Binlog的格式

  1. Row:幂等操作,所以canal选择这种。
  2. Sql:可以幂等也可能非幂等。
  3. Mix

Canal 适用 Row格式Mysql Binlog