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
复制代码

 

posted @   幻cat  阅读(610)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示