当前位置: 首页 > article >正文

docker 搭建 mysql 主从

Docker 搭建MySQL 主从

# 拉取mysql 镜像
docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/library/mysql:8.0.29
docker tag  swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/library/mysql:8.0.29  docker.io/library/mysql:8.0.29
docker rmi -f swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/library/mysql:8.0.29

# 创建对应目录
mkdir -p /data/mysql/master/{conf,data}
mkdir -p /data/mysql/slave1/{conf,data}
mkdir -p /data/mysql/slave2/{conf,data}

#  启动 mysql 主服务器 端口 3306
docker run -d \
-p 3306:3306 \
-v /data/mysql/master/conf:/etc/mysql/conf.d \
-v /data/mysql/master/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
--name test-mysql-master \
mysql:8.0.29


#  启动 mysql 从1服务器 端口 3307
docker run -d \
-p 3307:3306 \
-v /data/mysql/slave1/conf:/etc/mysql/conf.d \
-v /data/mysql/slave1/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
--name test-mysql-slave1 \
mysql:8.0.29


#  启动 mysql 从1服务器 端口 3308
docker run -d \
-p 3308:3306 \
-v /data/mysql/slave2/conf:/etc/mysql/conf.d \
-v /data/mysql/slave2/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
--name test-mysql-slave2 \
mysql:8.0.29

创建配置文件

# my.cnf(或my.ini)
# test-mysql-master 容器
vi /data/mysql/master/conf/my.cnf

[mysqld]
# 服务器唯一id,默认值为1
server-id=1
# 设置日志格式,默认值ROW
binlog_format=STATEMENT
# 二进制日志名,默认binlog
log-bin=binlog
# 设置需要复制的数据库,默认复制全部数据库
#binlog-do-db=mytestdb
# 设置不需要复制的数据库
#binlog-ignore-db=mysql
#binlog-ignore-db=infomation_schema

# 重启容器
docker restart test-mysql-master


# test-mysql-slave1 容器
vi /data/mysql/slave1/conf/my.cnf
[mysqld]
# 服务器唯一id,默认值为1
server-id=2

# 重启容器
docker restart test-mysql-slave1



# test-mysql-slave2 容器
vi /data/mysql/slave2/conf/my.cnf
[mysqld]
# 服务器唯一id,默认值为1
server-id=3

# 重启容器
docker restart test-mysql-slave2

进入容器

# test-mysql-master 容器
# 设置字符集
docker exec -it test-mysql-master env LANG=C.UTF-8 /bin/bash

# 进入容器内的mysql命令行
mysql -uroot -proot

# 修改默认密码校验方式
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';


# test-mysql-slave1 容器
docker exec -it test-mysql-slave1 env LANG=C.UTF-8 /bin/bash

# 进入容器内的mysql命令行
mysql -uroot -proot

# 修改默认密码校验方式
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';


# test-mysql-slave2 容器
docker exec -it test-mysql-slave2 env LANG=C.UTF-8 /bin/bash

# 进入容器内的mysql命令行
mysql -uroot -proot

# 修改默认密码校验方式
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';

创建用户

# test-mysql-master 容器 操作即可
docker exec -it test-mysql-master env LANG=C.UTF-8 /bin/bash
mysql -uroot -proot
# 创建 slave 用户
CREATE USER 'dongdong'@'%';

# 设置密码
ALTER USER 'dongdong'@'%' IDENTIFIED WITH mysql_native_password BY 'root';

# 赋予权限
GRANT REPLICATION SLAVE ON *.* TO 'dongdong'@'%';

# 刷新权限
FLUSH PRIVILEGES;

配置主从关系并启动

# 查看主服务器 二进制文件和偏移量
docker exec -it test-mysql-master env LANG=C.UTF-8 /bin/bash
mysql -uroot -proot
SHOW MASTER STATUS\G;

mysql> SHOW MASTER STATUS\G;
*************************** 1. row ***************************
             File: binlog.000004
         Position: 157
     Binlog_Do_DB: 
 Binlog_Ignore_DB: 
Executed_Gtid_Set: 
1 row in set (0.00 sec)

ERROR: 
No query specified

mysql> 


# 配置主从
# test-mysql-slave1 容器 操作
docker exec -it test-mysql-slave1 env LANG=C.UTF-8 /bin/bash
mysql -uroot -proot

CHANGE MASTER TO MASTER_HOST='192.168.224.128',
MASTER_USER='dongdong',MASTER_PASSWORD='root',MASTER_PORT=3306,
MASTER_LOG_FILE='binlog.000004',MASTER_LOG_POS=157;

# 启动
START SLAVE;
# 查看状态
SHOW SLAVE STATUS\G;

# test-mysql-slave2 容器 操作
docker exec -it test-mysql-slave2 env LANG=C.UTF-8 /bin/bash
mysql -uroot -proot

CHANGE MASTER TO MASTER_HOST='192.168.224.128',
MASTER_USER='dongdong',MASTER_PASSWORD='root',MASTER_PORT=3306,
MASTER_LOG_FILE='binlog.000004',MASTER_LOG_POS=157;

# 启动
START SLAVE;
# 查看状态
SHOW SLAVE STATUS\G;

http://www.kler.cn/a/534798.html

相关文章:

  • 文献阅读分享《新闻推荐中的审议式多样性:操作化与实验用户研究》
  • 【Linux】24.进程间通信(3)
  • 动静态库的学习
  • 宾馆民宿酒店住宿管理系统+小程序项目需求分析文档
  • 64位的谷歌浏览器Chrome/Google Chrome
  • Mysql:数据库
  • 人工智能丨PyTorch 强化学习与自然语言处理
  • 小白如何制作精致 PPT?免费 Office 插件来帮忙
  • 116,【8】 攻防世界 web shrine
  • Anaconda 下个人环境的快速安装指南:支持 GPU 运算的 PyTorch 环境
  • 清除el-table选中状态 clearSelection
  • 春晚「宇树科技」人形机器人H1技术浅析!
  • M系列/Mac安装配置Node.js全栈开发环境(nvm+npm+yarn)
  • 脚本批量重启openstack虚拟机并加上启动编号、脚本批量验证openstack虚拟机状态并加上编号
  • Vuex 解析:从 Vue 2 到 Vue 3 的演变与最佳实践
  • Gemini 2.0 全面开放,AI 进入新纪元!
  • deepseek r1 完全本地部署实战教程
  • [paddle] 矩阵的分解
  • Python——Unicode 编码 或 解码 工具(GUI打包版)
  • 禅道社区版项目管理软件部署(记录篇)
  • System类
  • 联想拯救者开机进入bios
  • 2025年前端面试准备html篇
  • @DeclareParents
  • 如何借助DeepSeek、ChatGPT等AI模型构建自己的量化交易策略?
  • maven详细讲解