Windows安装canal

wylc123 1年前 ⋅ 302 阅读

第一步
从github上下载。
https://github.com/alibaba/canal/releases/


注:Mysql不用低于5.6

第二步
查看mysql的log_bin是否开启。因为canal是通过logbin监听更新的
在mysql中执行:
show variables like ‘%log_bin%’;
如果未开启,则出现以下内容:
log_bin off

如果未开启,找到mysql的my.ini文件。
打开文件后,添加以下内容
server_id=1 ###代表集群模式第一台机器
binlog_format=ROW ###行模式
log_bin=mysql_bin.log ###binlog的文件名称
expire-logs-days=14 ###失效日期为14天(可不配置)
max-binlog-size=500M ###最大存储500MB(可不配置)

配置完成后,重启Mysql。执行验证语句后得到以下结果
log_bin on

log_bin = ON 表示开启了

第三步
在mysql创建canal用户并赋予replication权限。创建用户赋予权限执行以下两条语句

#创建canal用户并授权

create user canal IDENTIFIED by 'canal';
grant select,replication slave,replication client on*.* to 'canal'@'%';
grant all privileges on *.* TO 'canal'@'%';
flush privileges;


注:如果授权语句执行报错。需要检查root有没有grant的权限

配置canal,打开canal.properties文件。
这里可以配置端口号、集群(集群依赖zk,需要配置zk地址)

第四步
配置监听数据库的信息。
首先将example 复制一份。比如复制后,名字改为book。

打开book下的instance.properties文件

可修改数据库地址
可配置用户名和密码(Canal的)
可设置监听的表

#################################################
## mysql serverId , v1.0.26+ will autoGen
# canal.instance.mysql.slaveId=0

# enable gtid use true/false
canal.instance.gtidon=false

# position info
canal.instance.master.address=127.0.0.1:3307
canal.instance.master.journal.name=
canal.instance.master.position=
canal.instance.master.timestamp=
canal.instance.master.gtid=

# rds oss binlog
canal.instance.rds.accesskey=
canal.instance.rds.secretkey=
canal.instance.rds.instanceId=

# table meta tsdb info
canal.instance.tsdb.enable=true
#canal.instance.tsdb.url=jdbc:mysql://127.0.0.1:3306/canal_tsdb
#canal.instance.tsdb.dbUsername=canal
#canal.instance.tsdb.dbPassword=canal

#canal.instance.standby.address =
#canal.instance.standby.journal.name =
#canal.instance.standby.position =
#canal.instance.standby.timestamp =
#canal.instance.standby.gtid=

# username/password
canal.instance.dbUsername=canal
canal.instance.dbPassword=canal
canal.instance.connectionCharset = UTF-8
# enable druid Decrypt database password
canal.instance.enableDruid=false
#canal.instance.pwdPublicKey=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALK4BUxdDltRRE5/zXpVEVPUgunvscYFtEip3pmLlhrWpacX7y7GCMo2/JM6LeHmiiNdH1FWgGCpUfircSwlWKUCAwEAAQ==

# table regex
canal.instance.filter.regex=.*\\..*
# table black regex
canal.instance.filter.black.regex=mysql\\.slave_.*
# table field filter(format: schema1.tableName1:field1/field2,schema2.tableName2:field1/field2)
#canal.instance.filter.field=test1.t_product:id/subject/keywords,test2.t_company:id/name/contact/ch
# table field black filter(format: schema1.tableName1:field1/field2,schema2.tableName2:field1/field2)
#canal.instance.filter.black.field=test1.t_product:subject/product_image,test2.t_company:id/name/contact/ch

# mq config
canal.mq.topic=example
# dynamic topic route by schema or table regex
#canal.mq.dynamicTopic=mytest1.user,mytest2\\..*,.*\\..*
canal.mq.partition=0
# hash partition config
#canal.mq.partitionsNum=3
#canal.mq.partitionHash=test.table:id^name,.*\\..*
#canal.mq.dynamicTopicPartitionNum=test.*:4,mycanal:6
#################################################

五步

启动Canal,在bin目录下的startup.bat 文件

如果启动报错
可编辑startup.bat 文件,删除@rem

启动报错 Could not create the Java Virtual Machine.

启动canal 会报一下错误信息
本人用的jdk11
第一种是要更换jdk 版本为jdk8 版本太高的话不可以
第二种修改jvm 参数,亲测有效

Java HotSpot(TM) 64-Bit Server VM warning: Ignoring option MaxPermSize; support was removed in 8.0
Java HotSpot(TM) 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
Unrecognized VM option 'UseCMSCompactAtFullCollection'
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

打开编辑canal 启动脚本
startup.sh
修改参数

str=`file -L $JAVA | grep 64-bit`
if [ -n "$str" ]; then
    JAVA_OPTS="-server -Xms2048m -Xmx3072m -Xmn1024m -XX:SurvivorRatio=2 -Xss256k"
else
    JAVA_OPTS="-server -Xms1024m -Xmx1024m -XX:NewSize=256m -XX:MaxNewSize=256m "
fi

然后就可以成功启动canal了

 WARN: Establishing SSL connection without server‘s identity verification is not recommended 的解决方法

翻译:

警告:不建议在没有服务器身份验证的情况下建立SSL连接。根据MySQL 5.5.45+、5.6.26+和5.7.6+的要求,如果没有设置显式选项,默认必须建立SSL连接。为了符合不使用SSL的现有应用程序,verifyServerCertificate属性被设置为'false'。您需要通过设置useSSL=false显式禁用SSL,或者设置useSSL=true并为服务器证书验证提供信任存储区。

报这个警告的原因主要是JDBC的版本与MySQL的版本不兼容,而MySQL在高版本需要指明是否进行SSL连接。

解决方法:

在mysql连接字符串的url中添加配置 &useSSL=false即可:

useSSL=false 禁用SSL
useServerPrepStmts=true 开启预编译功能
String url = "jdbc:mysql://127.0.0.1:3306/db1?useUnicode=true&characterEncoding=utf-8&useSSL=false";

Windows下启动报错: Config dir not found

1,把startup.bat中classpath分号隔开的两个顺序调换:CLASSPATH=%CLASSPATH%;%conf_dir%\..\lib\*

2,确保不是中文文件夹 以及 文件夹命名不能存在空格(Program Files 放在这个文加下也有问题)

报错:Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=512M; support was removed in 8.0

导致原因:
错误场景:当前使用的办公电脑的内存配置为 16G ,开发的项目为SpringCloud的多服务项目,动辄启动十几个服务,若每个服务以默认内存分配来启动的话,出去idea等应用程序所占用的内存,剩下的内存七八个服务就可以完全消耗完。 然而本地开发的情况下,各个服务使用率是非常低的,所以在本地开发环境下,是有必要通过手动设置来压缩各个服务的启动内存的。此博客记录的报错就是在配置Jvm内存的情况下出现的。

过程:

  • 刚开始通过BaiDu搜索后,通过配置 VM options:-server -XX:PermSize=512M
  • 配置后项目启动,会产生本博客描述的报错:Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=512M; support was removed in 8.0
  • 查找资料得知是 java8之后,已经抛弃 -XX:PermSize 配置所致

解决办法

从启动脚本中把-XX:MaxPermSize=256m参数删掉。


相关文章推荐

全部评论: 0

    我有话说: