ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

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

2021-09-21 19:59:16  阅读:154  来源: 互联网

标签:canal server instance mysql docker properties


下载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.

进入容器

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=.*\\..*

匹配
在这里插入图片描述

标签:canal,server,instance,mysql,docker,properties
来源: https://blog.csdn.net/m0_46392290/article/details/120362904

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有