2

我正在使用 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。

4

1 回答 1

1

我们在我们的 MySQL 从属服务器上成功运行了 Tungsten,所以您想要做的事情绝对是可能的。

默认情况下,slave不会将传入的更改复制到Tungsten 期望它们的传出 binlog。尝试添加:

log-slave-updates=TRUE

到您的 my.cnf 文件。

于 2013-10-03T21:46:48.023 回答