set timestamp=1527919329/*!*/;
update building set status=1 where id=2000
/*!*/;
# at 688
#180602 14:02:09 server id 1 end_log_pos 719 crc32 0x4c550a7d xid = 200
commit/*!*/;
# 查看binlog模式
mysql> show variables like "%binlog_format%";
# 修改binlog模式
mysql> set global binlog_format='row';
# 查看binlog是否开启
mysql> show variables like 'log_bin';
# 开启bīnlog
修改my.cnf文件log-bin = mysql-bin
第二步安装
# 安装go
sudo apt-get install go
# 安装godep
go get github.com/tools/godep
# 获取go-mysql-elasticsearch插件
go get github.com/siddontang/go-mysql-elasticsearch
# 安装go-mysql-elasticsearch插件
cd go/src/github.com/siddontang/go-mysql-elasticsearch
make
# mysql address, user and password
# user must have replication privilege in mysql.
my_addr = "127.0.0.1:3306" # 需要同步的mysql基本设置
my_user = "root"
my_pass = "root"
# elasticsearch address
es_addr = "127.0.0.1:9200" # 本地elasticsearch配置
# path to store data, like master.info, and dump mysql data
data_dir = "./var" # 数据存储的url
# 以下配置保存默认不变
# inner http status address
stat_addr = "127.0.0.1:12800"
# pseudo server id like a slave
server_id = 1001
# mysql or mariadb
flavor = "mysql"
# mysqldump execution path
mysqldump = "mysqldump"
# mysql data source
[[source]]
schema = "test" //elasticsearch 与 mysql 同步时对应的数据库名称
# only below tables will be synced into elasticsearch.
# 要同步test这个database里面的几张表。对于一些项目如果使用了分表机制,我们可以用通配符来匹配,譬如t_[0-9]{4},就可# 以匹配 table t_0000 到 t_9999。
tables = ["t", "t_[0-9]{4}", "tfield", "tfilter"]
# below is for special rule mapping
# 对一个 table,我们需要指定将它的数据同步到 es 的哪一个 index 的 type 里面。如果不指定,我们默认会用起 schema # name 作为 es 的 index 和 type
[[rule]]
schema = "test" //数据库名称
table = "t" //表名称
index = "test" //对应的索引名称
type = "t" //对应的类型名称
# 将所有满足格式 t_[0-9]{4} 的 table 同步到 es 的 index 为 test,type 为 t 的下面。当然,这些表需要保证
# schema 是一致的
[[rule]]
schema = "test"
table = "t_[0-9]{4}"
index = "test"
type = "t"
# 对于 table tfilter,我们只会同步 id 和 name 这两列,其他的都不会同步
filter = ["id", "name"]
# table tfield 的 column id ,我们映射成了 es_id,而 tags 则映射成了 es_tags
# list 这个字段,他显示的告知需要将对应的 column 数据转成 es 的 array type。这个现在通常用于 mysql 的 varchar # 等类型,我们可能会存放类似 “a,b,c” 这样的数据,然后希望同步给 es 的时候变成 [a, b, c] 这样的列表形式。
[rule.field]
# map column `id` to es field `es_id`
id="es_id"
# map column `tags` to es field `es_tags` with array type
tags="es_tags,list"
# map column `keywords` to es with array type
keywords=",list"
第四步运行
cd go/src/github.com/siddontang/go-mysql-elasticsearch
bin/go-mysql-elasticsearch -config=./etc/river.toml