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

下载mysql

根据需要指定版本

docker image pull mysql:5.7.29

查看镜像

docker images 

云服务 docker安装mysql 设置canal数据同步
创建容器

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显示%则代表开启了远程连接
云服务 docker安装mysql 设置canal数据同步

远程连接

如果是使用云服务记得要开器3306端口
云服务 docker安装mysql 设置canal数据同步

开启canal

查看

show variables like 'log_bin';

on表示开启,off标识没有开启
云服务 docker安装mysql 设置canal数据同步

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

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

上一篇:k8s启动dashboard


下一篇:为k8s安装 KubeSphere可视化