云服务 docker安装mysql 设置canal数据同步

下载mysql

根据需要指定版本

docker image pull mysql:5.7.29

查看镜像

docker images 

在这里插入图片描述
创建容器

docker run -d -p 3306:3306  -v /docker/mysql/conf/my.cnf:/etc/my.cnf -v /docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mymysql mysql:5.7.29 --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci

run run 是运行一个容器
-d  表示后台运行
-p  表示容器内部端口和服务器端口映射关联
--privileged=true 设值MySQL 的root用户权限, 否则外部不能使用root用户登陆
-v /docker/mysql/conf/my.cnf:/etc/my.cnf 将服务器中的my.cnf配置映射到docker中的/docker/mysql/conf/my.cnf配置
-v /docker/mysql/data:/var/lib/mysql  同上,映射数据库的数据目录, 避免以后docker删除重新运行MySQL容器时数据丢失
-e MYSQL_ROOT_PASSWORD=123456   设置MySQL数据库root用户的密码
--name mysql     设值容器名称为mysql
mysql:5.7  表示从docker镜像mysql:5.7中启动一个容器
--character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci 设值数据库默认编码

可能会出现端口冲突

docker: Error response from daemon: driver failed programming external connectivity on endpoint mymysql (bda637da1d921634c102c399af1e77658a0ef2f77a5200a630957de38d9ca59e): Error starting userland proxy: listen tcp4 0.0.0.0:3306: bind: address already in use.

查看端口

netstat -tanlp

杀死相关的进程

kill 886

名字冲突 更换一个容器的名字

docker: Error response from daemon: Conflict. The container name "/mymysql" is already in use by container "4336c6c06a85c7210fe75910be1060a2fa66a88ca2d9a34958d3f4f9e89eade3". You have to remove (or rename) that container to be able to reuse that name.

配置加速器
来到阿里云,容器镜像服务-》镜像工具 选择对应版本

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://lforptrg.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

进入容器

docker exec -it mymysql bash

mysql -uroot -p

使用命令查看root用户是否开启远程权限弄

use mysql;
select User,authentication_string,Host from user;

host显示%则代表开启了远程连接
在这里插入图片描述

远程连接

如果是使用云服务记得要开器3306端口
在这里插入图片描述

开启canal

查看

show variables like 'log_bin';

on表示开启,off标识没有开启
在这里插入图片描述

开启canal

在我们刚才设置的挂载my.cnf文件中添加下面的内容。这里要记住重新启动这个mysql服务。

[mysqld]
#binlog文件名
log-bin=mysql-bin
#选择row模式
binlog_format=ROW
#mysql实例id,不能和canal的serverId重复
server-id=1

设置同步用户canal

grant SELECT, REPLICATION SLAVE, REPLICATION CLIENT on *.* to 'canal'@'%' identified by "canal";
flush privileges;

安装canal

这里演示的是最新版的

docker pull canal/canal-server

在本地创建存放配置文件的地址

mkdir canal
touch canal.properties
touch instance.properties

cp容器中的文件

docker cp canal:/home/admin/canal-server/conf/example/instance.properties /docker/canal/instance.properties
docker cp canal:/home/admin/canal-server/conf/canal.properties /docker/canal/canal.properties

创建容器

docker run --name canal -p 11111:11111 -d 
-v /docker/canal/instance.properties:/home/admin/canal-server/conf/example/instance.properties 
-v /docker/canal/canal.properties:/home/admin/canal-server/conf/canal.properties canal/canal-server

修改instance文件

# position info  修改Linux中的数据库地址
canal.instance.master.address=147.95.115.74:3306

# username/password 指定可访问用户名和密码
canal.instance.dbUsername=canal
canal.instance.dbPassword=canal

# table regex  数据同步的规则这里写的是所有的数据库所有的表
canal.instance.filter.regex=.*\\..*

匹配
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值