我正在使用mysql和vertica,并且有一个以混合binlog格式运行的主/从mysql对(默认设置)。
为了将某些分析任务复制到vertica数据库,我正在考虑使用钨。
主人忙于应用程序的读/写请求,而奴隶正在记录发生的事情,所以理想情况下我想在mysql slave上运行钨复制器,因为它只是读取。
Tungsten要求binlog采用基于行的格式,因此我在slave上启用了基于行的binlog,从而创建了binlog和relay-binlog文件。因此,从服务器从主服务器读取混合binlog,应用于其数据库并且还以行为基础格式保持relay-binlog中的更改。到目前为止一切都很好。
当我使用标准的-a --master-slave参数时,它似乎只是查看仅包含从站本地发生的事情的binlog,而不是relay-binlogs。
我发现的文档和帖子都指向在主服务器上运行钨,并且在不使用mysql主/从服务器的情况下使用它进行复制,而不是我想到的那种混合模式。
但是我宁愿保持什么工作,只需添加钨作为从mysql slave到vertica复制的桥梁。
我该如何配置?
如何告诉它我想从slave到vertica复制哪些表,而不是全部复制?
配置细节:
奴隶的datadir=/var/lib/mysql
log-bin=/var/log/mysql/mysql-bin.log
expire_logs_days=7
# for tungsten replicator we need row based binlogs on the slave
binlog-format=row
## Server timezone is GMT.
#default-time-zone='+00:00'
# Tables default to UTF8.
character-set-server=utf8
collation-server=utf8_general_ci
server-id=3
我用来演奏钨的剧本:
tungsten-replicator-2.1.2-30/tools/tungsten-installer --master-slave -a \
--service-name=mysql2vertica \
--master-host=testslave1 \
--cluster-hosts=testslave1 \
--datasource-user=tungsten \
--datasource-password=supersecret \
--home-directory=/opt/tungsten \
--buffer-size=1000 \
--java-file-encoding=UTF8 \
--java-user-timezone=CDT \
--mysql-use-bytes-for-string=false \
--svc-extractor-filters=colnames,pkey \
--property=replicator.filter.pkey.addPkeyToInserts=true \
--property=replicator.filter.pkey.addColumnsToDeletes=true \
--start-and-report
似乎开始很好,在线说,但只复制binlog中的内容,但不复制relay-binlog。
答案 0 :(得分:1)
我们已成功在我们的MySQL奴隶上运行Tungsten,所以你想要做的事情肯定是可能的。
默认情况下,Tungsten所期望的奴隶does not copy incoming changes to the outgoing binlog。尝试添加:
log-slave-updates=TRUE
到你的my.cnf文件。