前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker下的MySQL主从复制

Docker下的MySQL主从复制

作者头像
Reset
发布2023-03-20 11:16:53
3680
发布2023-03-20 11:16:53
举报
文章被收录于专栏:ResetReset

docker 安装MySQL

代码语言:javascript
复制
#master配置文件
my.cnf添加如下内容:
[mysqld]
user=mysql
character-set-server=utf8
default_authentication_plugin=mysql_native_password
secure_file_priv=/var/lib/mysql
expire_logs_days=7
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
max_connections=1000
## 开启二进制日志功能
log-bin=mysql-bin
#MySQL服务器的ID,保证整个集群环境中唯一
server-id=1
#是否只读,1:只读  0:读写
read-only=0
[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

# slave配置文件
my.cnf添加如下内容:
[mysqld]
user=mysql
character-set-server=utf8
default_authentication_plugin=mysql_native_password
secure_file_priv=/var/lib/mysql
expire_logs_days=7
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
max_connections=1000
## 开启二进制日志功能
log-bin=mysql-slave-bin        
#MySQL服务器的ID,保证整个集群环境中唯一
server-id=2
#是否只读,1:只读  0:读写
read-only=1

## relay_log配置中继日志  
relay_log=edu-mysql-relay-bin
[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

修改配置文件需要重启MySQL

代码语言:javascript
复制
docker restart mysql-master
docker restart mysql-slave

创建MySQL的容器

代码语言:javascript
复制
# master
docker run -p 3301:3306 --name mysql-master \
-v /mysql_test/master/conf/my.cnf:/etc/mysql/my.cnf \
-v /mysql_test/master/logs:/var/log/mysql \
-v /mysql_test/master/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d 4f00dec165f1
#slave
docker run -p 3302:3306 --name mysql-slave \
-v /software/mysql_test/slave/conf/my.cnf:/etc/mysql/my.cnf \
-v /software/mysql_test/slave/logs:/var/log/mysql \
-v /software/mysql_test/slave/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d 4f00dec165f1

# 4f00dec165f1为MySQL镜像ID

在主MySQL执行如下命令

在从MySQL执行如下命令

代码语言:javascript
复制
# mysql5.7执行如下命令,其他版本自己百度一下
change master to 
master_host='192.168.6.23',
master_user='root',
master_password='123456',
master_port=3301,
master_log_file='mysql-bin.000001',
master_log_pos=154,
master_connect_retry=10;
#查看主从复制的状态
show slave status \G;
# master_port:Master MySQL的端口号,指的是容器的端口号
# master_user:用于数据同步的用户
# master_password:用于同步的用户的密码
# master_log_file:指定 Slave 从哪个日志文件开始复制数据,即上文中提到的 File 字段的值
# master_log_pos:从哪个 Position 开始读,即上文中提到的 Position 字段的值
# master_connect_retry:如果连接失败,重试的时间间隔,单位是秒,默认是 60 秒

启动

在salve执行如下命令

代码语言:javascript
复制
start slave;

MYSQL docker

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • docker 安装MySQL
    • 创建MySQL的容器
      • 在主MySQL执行如下命令
        • 在从MySQL执行如下命令
          • 启动
          相关产品与服务
          容器镜像服务
          容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档