您的位置:首页 > 其它

canal安装

2018-12-07 17:37 155 查看

canal简介:https://www.geek-share.com/detail/2684573374.html
Mysql 安装
1、安装前,我们可以检测系统是否自带安装 MySQL:
rpm -qa | grep mysql
·如果安装的有mysql
rpm -e mysql OR rpm -e --nodeps mysql
2、wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
3、rpm -ivh mysql-community-release-el7-5.noarch.rpm
4、yum update
5、yum install mysql-server
6、chown mysql:mysql -R /var/lib/mysql --权限设置
7、mysqld --initialize --初始化mysql
8、启动 MySQL:
·systemctl start mysqld
9、查看 MySQL 运行状态:
·systemctl status mysqld
10、给root用户设置密码
·mysqladmin -u root password “new_password”;
11、登陆mysql服务器
·mysql -u root -p
·Enter password:*******
12、修改my.cnf文件 --默认在/etc/my.cnf
·log-bin=mysql-bin #添加这一行就ok
·binlog-format=ROW #选择row模式
·server_id=1 #配置mysql replaction需要定义,不能和canal的slaveId重复
13、重新启动mysql
·systemctl restart mysqld

Canal 安装
1、下载安装包
·https://github-production-release-asset-2e65be.s3.amazonaws.com/7587038/67d9b500-f187-11e8-98bf-92bce78baac9?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20181207%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20181207T073007Z&X-Amz-Expires=300&X-Amz-Signature=a8cddf415231b380ce186c9edbae7eba32bea51d42e8ec09f165fa253dcfd2cb&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B filename%3Dcanal.adapter-1.1.2.tar.gz&response-content-type=application%2Foctet-stream
2、解压安装包
·tar -zxvf xxx.tar -C 目标文件位置
3、修改配置文件
·vim canal/conf/example/instance.properties

canal.instance.mysql.slaveId=1234
canal.instance.gtidon=false

canal.instance.master.address=127.0.0.1:3306
canal.instance.master.journal.name=
canal.instance.master.position=
canal.instance.master.timestamp=
canal.instance.master.gtid=

canal.instance.rds.accesskey=
canal.instance.rds.secretkey=
canal.instance.rds.instanceId=

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=

canal.instance.dbUsername=canal
canal.instance.dbPassword=canal
canal.instance.connectionCharset = UTF-8
canal.instance.defaultDatabaseName =test

canal.instance.enableDruid=false
#canal.instance.pwdPublicKey=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALK4BUxdDltRRE5/zXpVEVPUgunvscYFtEip3pmLlhrWpacX7y7GCMo2/JM6LeHmiiNdH1FWgGCpUfircSwlWKUCAwEAAQ==

canal.instance.filter.regex=.\…
canal.instance.filter.black.regex=

canal.mq.topic=example
canal.mq.partition=0
#canal.mq.partitionsNum=3
#canal.mq.partitionHash=mytest.person:id,mytest.role:id

注:canal.instance.dbUsername 注意用户的权限,开始测试建议用root
4、启动canal
·./startup.sh
5、查看是否启动成功
·cat /canal/logs/canal/canal.log

碰到的坑
1、用户权限问题
2018-12-07 15:40:33.665 [destination = example , address = /127.0.0.1:3306 , EventParser] ERROR c.a.o.c.p.inbound.mysql.rds.RdsBinlogEventParserProxy - dump address /127.0.0.1:3306 has an error, retrying. caused by
com.alibaba.otter.canal.parse.exception.CanalParseException: command : ‘show master status’ has an error!
Caused by: java.io.IOException: ErrorPacket [errorNumber=1227, fieldCount=-1, message=Access denied; you need (at least one of) the SUPER, REPLICATION CLIENT privilege(s) for this operation, sqlState=42000, sqlStateMarker=#]
with command: show master status
at com.alibaba.otter.canal.parse.driver.mysql.MysqlQueryExecutor.query(MysqlQueryExecutor.java:61) ~[canal.parse.driver-1.1.3-SNAPSHOT.jar:na]
at com.alibaba.otter.canal.parse.inbound.mysql.MysqlConnection.query(MysqlConnection.java:105) ~[canal.parse-1.1.3-SNAPSHOT.jar:na]
at com.alibaba.otter.canal.parse.inbound.mysql.MysqlEventParser.findEndPosition(MysqlEventParser.java:653) ~[canal.parse-1.1.3-SNAPSHOT.jar:na]
at com.alibaba.otter.canal.parse.inbound.mysql.MysqlEventParser.findEndPositionWithMasterIdAndTimestamp(MysqlEventParser.java:389) ~[canal.parse-1.1.3-SNAPSHOT.jar:na]
at com.alibaba.otter.canal.parse.inbound.mysql.MysqlEventParser.findStartPositionInternal(MysqlEventParser.java:447) ~[canal.parse-1.1.3-SNAPSHOT.jar:na]
at com.alibaba.otter.canal.parse.inbound.mysql.MysqlEventParser.findStartPosition(MysqlEventParser.java:366) ~[canal.parse-1.1.3-SNAPSHOT.jar:na]
at com.alibaba.otter.canal.parse.inbound.AbstractEventParser$3.run(AbstractEventParser.java:186) ~[canal.parse-1.1.3-SNAPSHOT.jar:na]
at java.lang.Thread.run(Thread.java:748) [na:1.8.0_181]

解决方法:
·使用root登陆mysql
·输入命令:GRANT ALL PRIVILEGES ON . TO ‘canal’@‘localhost’ IDENTIFIED BY ‘canal’;
给canal用户权限

2、连接失败
2018-12-07 16:51:23.055 [destination = example , address = /172.26.xx.xx:3306 , EventParser] ERROR c.a.o.c.p.inbound.mysql.rds.RdsBinlogEventParserProxy - dump address /172.26.xx.xx:3306 has an error, retrying. caused by
com.alibaba.otter.canal.parse.exception.CanalParseException: java.io.IOException: connect /172.26.xx.xx:3306 failure
Caused by: java.io.IOException: connect /172.26.xx.xx:3306 failure
at com.alibaba.otter.canal.parse.driver.mysql.MysqlConnector.connect(MysqlConnector.java:77) ~[canal.parse.driver-1.1.3-SNAPSHOT.jar:na]
at com.alibaba.otter.canal.parse.inbound.mysql.MysqlConnection.connect(MysqlConnection.java:88) ~[canal.parse-1.1.3-SNAPSHOT.jar:na]
at com.alibaba.otter.canal.parse.inbound.mysql.MysqlEventParser.preDump(MysqlEventParser.java:86) ~[canal.parse-1.1.3-SNAPSHOT.jar:na]
at com.alibaba.otter.canal.parse.inbound.AbstractEventParser$3.run(AbstractEventParser.java:175) ~[canal.parse-1.1.3-SNAPSHOT.jar:na]
at java.lang.Thread.run(Thread.java:748) [na:1.8.0_181]
Caused by: java.io.IOException: Error When doing Client Authentication:ErrorPacket [errorNumber=1045, fieldCount=-1, message=Access denied for user ‘canal’@‘test-dn-xx-xx.wakedata.gz’ (using password: YES), sqlState=28000, sqlStateMarker=#]
at com.alibaba.otter.canal.parse.driver.mysql.MysqlConnector.negotiate(MysqlConnector.java:199) ~[canal.parse.driver-1.1.3-SNAPSHOT.jar:na]
at com.alibaba.otter.canal.parse.driver.mysql.MysqlConnector.connect(MysqlConnector.java:74) ~[canal.parse.driver-1.1.3-SNAPSHOT.jar:na]
… 4 common frames omitted

问题原因:cancal用户只允许访问127.0.0.1
解决方法:GRANT ALL PRIVILEGES ON . TO ‘canal’@‘172.26.xx.xx’ IDENTIFIED BY ‘canal’;

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: