创建数据映射目录
mkdir -p /usr/local/docker1/{logs,conf,data}
在conf目录,创建映射文件(文件名自定义,后三行为开启binlog,根据选择添加)
vim /usr/local/docker/conf/custom.cnf
[mysqld]
max_allowed_packet=20M
lower_case_table_names=1
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
log-bin=/var/lib/mysql/mysql-bin
server-id=123454
binlog-format=ROW
log-bin=/var/lib/mysql/mysql-bin binlog日志的基本文件名,后面会追加标识来表示每一个文件
server-id=123454 在mysql做主主同步时,多个主需要构成一个环状,但是同步的时候有要保证一条数据不会陷入死循环,这里就是靠server-id来实现的
binlog-format=ROW 日志中会记录成每一行数据被修改的形式,然后在 slave 端再对相同的数据进行修改。
运行容器
docker run -p 3308:3306 --name mysql2 -v /usr/local/docker1/conf:/etc/mysql/conf.d -v /usr/local/docker1/logs:/var/log/mysql -v /usr/local/docker1/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
-p docker容器映射端口 , “:” 前为宿主机端口,后为docker容器内提供服务的端口
-e 配置信息,此处填写登录mysql的用户名和密码
-v 数据卷映射,将容器内的目录映射到宿主机, “:” 前为宿主机目录,后为docker容器内目录
查看运行状态
docker ps -a
docker logs +容器id或容器名称
容器状态为 up 表示容器运行成功,否则查看前边步骤是否有问题,或使用 docker logs 查看容器报错信息
进入MySql 容器,并连接mysql
docker exec -it mysql2 bash
mysql -uroot -p
查看binlog日志是否开启
show variables like '%log_bin%';