1.新建文件目录
mkdir -p /houder-data/mysql3330/{conf,data,logs}
mkdir -p /houder-data/mysql4440/{conf,data,logs}
#赋权644
chmod 644 /xxxx/conf/mysql.cnf
2.编辑文件mysql.cnf放入conf目录下
# 适用于 master 的配置文件
# ----------------------------------------------------------------------------------------
[mysql]
# 客户端默认字符集
default-character-set=utf8mb4
[mysqld]
# 端口
port=3330
# 服务器ID(唯一值)
server-id=3330
# 为设置最大的连接数
max_connections=1000
# 不区分大小写表名
lower_case_table_names=1
# 启用二进制日志
log-bin=mysql-bin
# binlog 保留7天
expire_logs_days=7
# binlog 最大1G
max_binlog_size=1G
# binlog 格式:STATEMENT (默认),ROW,MIXED
binlog_format=ROW
# 表示自增长字段每次递增的量,指自增字段的起始值,其默认值是1,取值范围是1 .. 65535
auto-increment-increment=2
# 表示自增长字段从哪个数开始,指字段一次递增多少,他的取值范围是1 .. 65535
auto-increment-offset=1
# 适用于 slave 端的配置文件
# ----------------------------------------------------------------------------------------
[mysqld]
# 端口
port=4440
# 服务器ID(唯一值)
server-id=4440
# 启用中继日志
relay-log=mysql-relay
# 为设置最大的连接数
max_connections=1000
# 不区分大小写表名
lower_case_table_names=1
如果遇到时区问题,可添加如下配置,没问题就不管。
#设置默认东八区时区
default-time_zone = "+8:00"
3.创建容器
docker run -d --name mysql3330 \
-p 3330:3330 \
--restart=always --privileged=true \
-e MYSQL_ROOT_PASSWORD=xxxxx \
-v /houder-data/mysql3330/conf:/etc/mysql/conf.d/:rw \
-v /houder-data/mysql3330/logs:/var/log/mysql/:rw \
-v /houder-data/mysql3330/data:/var/lib/mysql/:rw \
mysql:8.0.30
docker run -d --name mysql4440 \
-p 4440:4440 \
--restart=always --privileged=true \
-e MYSQL_ROOT_PASSWORD=xxxxx \
-v /houder-data/mysql4440/conf:/etc/mysql/conf.d/:rw \
-v /houder-data/mysql4440/logs:/var/log/mysql/:rw \
-v /houder-data/mysql4440/data:/var/lib/mysql/:rw \
mysql:8.0.30
如果密码里面有特殊符号最好用''整个框住,如:MYSQL_ROOT_PASSWORD='hj12&$#kj3!'
4.可用navicat测试连接
5.master(mysql3330)上创建从机同步用户
CREATE USER 'slave'@'%' IDENTIFIED WITH mysql_native_password BY 'xxxxx';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
flush privileges;
6.查看主机状态并记录下来
show master status;
7.从机复制主机
# 命令如下
CHANGE MASTER TO MASTER_HOST='主机的IP地址',
MASTER_PORT=端口号,
MASTER_USER='username',
MASTER_PASSWORD='passworld',
MASTER_LOG_FILE='mysql-bin.具体数字',
MASTER_LOG_POS=具体值;
# 根据上述配置,示例如下:
CHANGE MASTER TO MASTER_HOST='192.168.0.35',
MASTER_PORT=3330,
MASTER_USER='slave',
MASTER_PASSWORD='xxxxx',
MASTER_LOG_FILE='mysql-bin.000003',
MASTER_LOG_POS=856;
8.启动、查询、停用同步
start slave;
show slave status;
stop slave;
成功了!
2024.3.12 mysql:8.2.0 mysql.cnf 配置信息
[mysql]
# 客户端默认字符集
default-character-set=utf8mb4
[mysqld]
# 端口
port=3306
# 服务器ID(唯一值)
server-id=35
# 为设置最大的连接数
max_connections=1000
# 区分大小写表名 !!!#######有问题!
lower_case_table_names=0
# 启用二进制日志
log-bin=mysql-bin
# binlog 最大1G
max_binlog_size=1G
# 表示自增长字段每次递增的量,指自增字段的起始值,其默认值是1,取值范围是1 .. 65535
auto-increment-increment=2
# 表示自增长字段从哪个数开始,指字段一次递增多少,他的取值范围是1 .. 65535
auto-increment-offset=1