go-mysql-transfer方案
1 | git clone https: //gitee.com/mirrors/go-mysql-transfer.git |
# 查询 master 状态,获取 日志名和偏移量 mysql> show master status; # 重置同步位置 (假设通过上面命令获取到日志名和偏移量为 mysql-bin.000025 993779648) ./go-mysql-transfer -config app.yml -position mysql-bin.000025 993779648 # 全量数据同步 ./go-mysql-transfer -stock
/* mysql 配置文件 my.cnf log-bin=mysql-bin # 开启 binlog binlog-format=ROW # 选择 ROW 模式 server_id=1 # 配置 MySQL replaction 需要定义,不要和 go-mysql-transfer 的 slave_id 重复 */ CREATE TABLE `user` ( `id` BIGINT, `name` VARCHAR (100), `height` INT8, `sex` VARCHAR (1), `age` INT8 PRIMARY KEY (`id`) ); insert into `user` values (10001, 'mark', 180, '1', 30); update `t_user` set `age` = 31 where id = 10001; delete from `t_user` where id = 10001;
-- go-mysql-transfer --[[ 安装步骤: GO111MODULE=on git clone https://gitee.com/0k/go-mysql-transfer.git go env -w GOPROXY=https://goproxy.cn,direct go build 修改 app.yml 执行 go-mysql-transfer ]] local ops = require("redisOps") --加载redis操作模块 local row = ops.rawRow() --当前数据库的一行数据,table类型,key为列名称 local action = ops.rawAction() --当前数据库事件,包括:insert、updare、delete if action == "insert" then -- 只监听insert事件 local id = row["id"] --获取ID列的值 local name = row["name"] --获取USER_NAME列的值 local key = name .. ":" .. id local sex = row["sex"] local height = row["height"] --获取PASSWORD列的值 local age = row["age"] local createtime = row["createtime"] --获取CREATE_TIME列的值 ops.HSET(key, "id", id) -- 对应Redis的HSET命令 ops.HSET(key, "name", name) -- 对应Redis的HSET命令 ops.HSET(key, "sex", sex) -- 对应Redis的HSET命令 ops.HSET(key, "height", height) -- 对应Redis的HSET命令 ops.HSET(key, "age", age) -- 对应Redis的HSET命令 end
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现