我的canal 是安装在虚拟机中 要同步 本地mac中的mysql数据
虚拟机中的dns的问题
首先确保虚拟机可以联通外网
vim /etc/sysconfig/network-scripts/ifcfg-ens33,配置好 dns
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="3701b9a1-e0f9-4a6e-ab8f-0a68ec101f35"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=172.16.91.154 # 新增本行
NETMASK=255.255.255.0 # 新增本行
GATEWAY=172.16.91.1 # 新增本行,这是前面vnet2的gateway ip
DNS1=8.8.8.8
DNS2=114.114.114.114 # 新增本行
重启网络
service network restart
canal 下载
wget --no-check-certificate https://github.com/alibaba/canal/releases/download/canal-1.1.6/canal.deployer-1.1.6.tar.gz
注意添加参数 --no-check-certificate,可能回报 ssl 错误
创建mysql新用户
DROP USER 'canal'@'%';
CREATE USER 'canal'@'%' IDENTIFIED BY 'canal';
GRANT ALL PRIVILEGES ON *.* TO 'canal' @'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
(这个命令在msql8.0中会报语法错误)
GRANT ALL PRIVILEGES ON *.* TO 'canal'@'%' IDENTIFIED BY 'canal';
测试虚拟机是否可以联通本地mysql
telnet 192.168.91.124.3 3306
结果如下:
修改 Mysql8.0默认加密连接方式修改
ALTER USER 'canal'@'%' IDENTIFIED WITH mysql_native_password BY 'canal'
因为mysql 8.0 默认密码加密 使用的 caching_sha2_password,在连接canal 时 会报连接失败
改成 mysql_native_password 则连接成功。
修改my.cnf 文件
homebrew安装的mysql配置文件位置: /usr/local/etc/my.cnf
如果不在这个位置可通过以下命令查看:
mysqld --help --verbose | more (查看帮助,按空格下翻)
你会看到开始的这一行(表示配置文件默认读取顺序)
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf
打开my.cnf 文件
# Default Homebrew MySQL server config
[mysqld]
# Only allow connections from localhost
#bind-address = 127.0.0.1
#mysqlx-bind-address = 127.0.0.1
log-bin=mysql-bin #开启binlog
binlog-format=ROW
server_id=1 #配置MySQL replaction需要定义,不要和canal的 slaveId重复
记得注释掉 bind-address = 127.0.0.1, mysqlx-bind-address = 127.0.0.1,这两个配置 注释中也说明了只允许本机连接,不然虚拟机的canal 还是会连接失败