我正在使用 mysql 和 vertica,并且有一个以混合 binlog 格式(默认设置)运行的主/从 mysql 对。
为了将其复制到 vertica 数据库以执行某些分析任务,我正在考虑使用 tungsten。
主服务器忙于来自应用程序的读/写请求,而从服务器只是记录正在发生的事情,所以理想情况下,我想在 mysql 从服务器上运行钨复制器,因为它也只是读取。
Tungsten 要求 binlog 采用基于行的格式,因此我在从属设备上启用了基于行的 binlog,它创建了 binlog 和 relay-binlog 文件。因此,slave 从 master 读取混合 binlog,应用到它的数据库,并以基于行的格式保存 relay-binlog 中的更改。到目前为止一切都很好。
当我使用标准的 -a --master-slave 参数时,它似乎只查看只包含从服务器本地发生的事情的二进制日志,而不是中继二进制日志。
我发现的文档和帖子都指向在 master 上运行 tungsten,并在不使用 mysql master/slave 的情况下使用它进行复制,而不是我想到的混合模式。
但是,我更愿意保持正常工作,只需添加钨作为从 mysql slave 复制到 vertica 的桥梁。
我将如何配置它?
我如何告诉它我想从从属复制哪些表到 vertica,而不是全部复制?
配置细节:
/etc/my.cnf 从机:
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。