代码拉取完成,页面将自动刷新
go-mysql-postgres 是通过解析binlog日志增量更新到postgresql数据库的一个服务
##安装
##如何使用
./bin/go-mysql-postgres -config=./etc/river.toml
##注意事项
在go-mysql-postgres,你必须要定义好同步的表
[[source]]
schema = "test"
tables = ["t1", t2]
[[source]]
schema = "test_1"
tables = ["t3", t4]
schema
是mysql库名,tables
是要同步的表
如果你要同步所有库下面的表,你可以用 *
[[source]]
schema = "test"
tables = ["*"]
由于pg db 相当于 mysql的实例因此定义pg目标是可以取别名pg_name。用于rule同步到哪个db下schema
[[target]]
pg_name = "sync_db1"
pg_host = "192.168.1.10"
pg_port = 5432
pg_user = "postgres"
pg_pass = "postgres"
pg_dbname = "db1"
[[rule]]
schema = "db1"
table = "t1"
pg_schema = "public"
pg_table = "t1"
#skip_actions available values ["insert", "delete","update"]
#skip_actions = ["delete"]
#
#skip_alter_actions available values ["ADD", "DROP","ALTER"]
skip_alter_actions = ["ALTER","DROP","ADD"]
data_routers=[
{field_filters={type="0"},target={data_source="sync_db1",schema_name="public",table_name="t1"}},
{field_filters={type="1"},target={data_source="sync_db1",schema_name="public",table_name="t1"}},
{field_filters={type="3"},target={data_source="sync_db1",schema_name="public",table_name="t2"}}
]
一个完整配置rule
如果你只有一个target,参考river.toml配置,可以不用配置pg_name,如果你有多个配置源,那就要配置pg_name
如果你要做冷热分离处理,可以过滤掉delete操作
由于mysql alter语法和pg alter语法稍有区别,所以建议你配置过滤。
要改表结构,先修改pg数据库的,然后在修改mysql库中的表结构
如果你的表中有个字段是status,希望status 更改后,映射到另一个表,可以添加data_routers
他的原理是先删除在插入
1、添加自动映射主键
2、添加正则表达式同步表
3、添加对json格式的支持
4、添加对字段类型转换 varchar->array 解决mysql find_in_set 查询慢的问题
在var目录下有2个文件,一个是app.pid 一个是master.info
bin_name = "mysql-bin.1"
bin_pos = 1
这是同步binlog日志信息。
http://ip:12800/stat
可以通过这个URL 监控服务是否正常
在部署该服务上安装 statsd
配置文件
{
graphitePort: 2013 #graphite端口号
, graphiteHost: "xxx" #graphite主机ip
, address: "127.0.0.1"
, mgmt_address: "127.0.0.1"
, deleteGauges: true
, port: 8125
, backends: [ "./backends/graphite" ]
, flushInterval: 30000
, graphite:{globalSuffix: "ip"} #go-mysql-postgres主机ip
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。