Docker部署MySQL主从

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

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值