docker Mysql部署主从集群

这篇具有很好参考价值的文章主要介绍了docker Mysql部署主从集群。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1 docker安装

2 docker mysql 安装配置 远程连接

2.0 配置

2.0.1 文件夹 配置

2.0.2 主库文件配置 my.cnf -> 主库 id 和 开启二进制日志 

2.0.3 从库文件配置 -> 从库 id

2.1 mysql 主 -> 第一个端口号和从库不一样

2.1.1 docker run 主库

2.1.2  查看主库二进制日志

2.2 mysql 从库

2.2.1 docker run 从库

2.2.2 从库权限设置

2.3 mysql 远程设置 -> 主库 从库 都要设置

2.4 防火墙/安全组 端口号要打开 

3 mysql 配置主从关系

3.1 课程视频

3.1.1 原理课程 ->( 客户端 --> Mycat中间件服务器 -> 主从服务器)

3.1.2 搭建课程

3.2 搭建主从

3.2.1  查看主库ip -> 让从库连接

3.2.2 测试主从数据库连接 -> 在从库 容器中 bash>

3.2.3 从库中设置从主关系 ->  从库mysql中 mysql> 

3.2.3 开启从库 ->  从库数据库中 ->两进程启动

3.2.4 查看线程状态 --> 端口号要用3306

4 测试

5 非 docker 主从 集群


1 docker安装

coin-ex 一// Docker安装_tenc1239的博客-CSDN博客

2 docker mysql 安装配置 远程连接

2.0 配置

2.0.1 文件夹 配置

// 主库 从库 目录 --> 最终要映射到容器
mkdir -p /opt/mysql-m/conf 
mkdir -p /opt/mysql-s/conf

// 主库 从库 数据 目录
mkdir -p /opt/mysql-m/data
mkdir -p /opt/mysql-s/data

2.0.2 主库文件配置 my.cnf -> 主库 id 和 开启二进制日志 

// 新建并打开my.cnf文件
vim /opt/mysql-m/conf/my.cnf

// 配置文件内容
[mysqld]
#mysqld 代表mysql 的服务进程
#指定对应的进程
# pid-file 进程号记录在这个文件 不设置 会放在mysql 的数据目录下 host_name.pid 

pid-file=/var/run/mysqld/mysqld.pid # 可以 不写 这里是容器的路径 容器会自动创建 如果不是容器 就要写自定义
socket=/var/run/mysqld/mysqld.sock # 可以不写 自动生成  是指 连接方式
datadir=/var/lib/mysql 
server-id=1 #主库id 要和从库区分开
log-bin=mysql-master-bin # 开启二进制日志

2.0.3 从库文件配置 -> 从库 id

// 新建并打开my.cnf文件
vim /opt/mysql-s/conf/my.cnf

// 配置文件内容
[mysqld]
#mysqld 代表mysql 的服务进程
#指定对应的进程
# pid-file 进程号记录在这个文件 不设置 会放在mysql 的数据目录下 host_name.pid 

pid-file=/var/run/mysqld/mysqld.pid # 可以 不写 这里是容器的路径 容器会自动创建 如果不是容器 就要写自定义
socket=/var/run/mysqld/mysqld.sock # 可以不写 自动生成  是指 连接方式
datadir=/var/lib/mysql 
server-id=2 #主库id 要和从库区分开
log-bin=mysql-slave-bin # 开启二进制日志 日志名前缀mysql-slave-bin

2.1 mysql 主 -> 第一个端口号和从库不一样

2.1.1 docker run 主库

docker run --name mysql_m -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7  --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

--privileged=true // 指定root权限
-v /opt/mysql-m/conf:/etc/mysql/conf.d // 自定义目录映射到容器目录
-v /opt/mysql-m/data:/var/lib/mysql  // [mysqld]配置文件中 指定的
mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci // 这两个必须写在mysql:5.7 后面

-- 完整---
docker run -itd -p 3306:3306 \
--name mysql-m \
--privileged=true \
-e MYSQL_ROOT_PASSWORD=root \
-v /opt/mysql-m/conf:/etc/mysql/conf.d \
-v /opt/mysql-m/data:/var/lib/mysql \
mysql:5.7 \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_unicode_ci

2.1.2  查看主库二进制日志

docker exec -it mysql-m bash // 进入mysql容器
mysql -u root -p // 进入mysql

show master status ;

grant all on *.* to 'root'@'%' identified by 'root'; //创建 root 账号 有所有的权限

grant replication slave on *.* to 'to_slave'@'%' identified by 'root'; // 主库创建to_slave 账号  从库复制 密码 root --> 
flush privileges ;

2.2 mysql 从库

2.2.1 docker run 从库

docker run -itd -p 3307:3306 \
--name mysql-s \
--privileged=true \
-e MYSQL_ROOT_PASSWORD=root \
-v /opt/mysql-s/conf:/etc/mysql/conf.d \
-v /opt/mysql-s/data:/var/lib/mysql \
mysql:5.7 \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_unicode_ci

2.2.2 从库权限设置

grant all on *.* to 'root'@'%'; //  创建root'@'%' 账号 有全部的权限
flush privileges ;

2.3 mysql 远程设置 -> 主库 从库 都要设置


// 远程设置
docker exec -it mysql bash // 进入mysql容器
mysql -u root -p // 进入mysql
use mysql // 随便选择一个数据库
select host,user,plugin,authentication_string from mysql.user; // 进行查询
select * from mysql.user\G; // 进行查询全部 并\G 竖向显示
grant ALL on *.* to `root`@`%` with grant option; // 授权
set password for root@'%' =password('root'); #mysql5.7 远程连接前 必须改一次密码 不管密码是不是root 就是要执行一次
flush privileges;

2.4 防火墙/安全组 端口号要打开 

apt-get install firewalld
systemctl start firewalld #打开防火墙
systemctl enable firewalld #设置防火墙自启动
firewall-cmd --zone=public --add-port=8888/tcp --permanent #设置8888端口开放
systemctl restart firewalld
 
#查看所有永久开放的port
firewall-cmd --list-ports --permanent

3 mysql 配置主从关系

3.1 课程视频

3.1.1 原理课程 ->( 客户端 --> Mycat中间件服务器 -> 主从服务器)

https://www.bilibili.com/video/BV1Kr4y1i7ru?p=188&vd_source=ff8b7f852278821525f11666b36f180a

3.1.2 搭建课程

https://www.bilibili.com/video/BV1md4y1o7DY?p=17&vd_source=ff8b7f852278821525f11666b36f180a

3.2 搭建主从

3.2.1  查看主库ip -> 让从库连接

docker inspect mysql-m | grep IPAddress

3.2.2 测试主从数据库连接 -> 在从库 容器中 bash>

docker exec -it mysql-s bash
// 在bash 中连接
mysql -h 主库ip -u root -p

3.2.3 从库中设置从主关系 ->  从库mysql中 mysql> 

// 主库中 show master status; 查询二进制日志最新位置 以及 日志名
// 外部连接是 docker run 设置的第一个port  这里要用3306 
change master to \
master_host='172.18.0.2',\
master_port=3306,\
master_user='root',\
master_password='root',\
master_log_pos=347,\
master_log_file='mysql-master-bin.000004'; 

3.2.3 开启从库 ->  从库数据库中 ->两进程启动

start slave;

3.2.4 查看线程状态 --> 端口号要用3306(docker内部主从)

mysql> show slave status\G;

docker Mysql部署主从集群

3.2.5 如果从库没有数据库和表 直接同步最新数据会报错->不存在表

解决办法: 自建库和表 或 全量同步

4 测试

5 非 docker 主从 集群

Mysql 主从 读写分离_tenc1239的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-431836.html

到了这里,关于docker Mysql部署主从集群的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [Kubernetes]8. K8s使用Helm部署mysql集群(主从数据库集群)

    上一节讲解了K8s包管理工具Helm、使用Helm部署mongodb集群(主从数据库集群),这里来看看 K8s使用Helm部署mysql集群(主从数据库集群) 无本地存储: 当重启的时候,数据库消失 (1).打开官网的应用中心 打开应用中心,搜索mysql (2).安装  1).添加repo仓库 2).安装 具体命令如下:  3).自动生成

    2024年01月21日
    浏览(41)
  • Docker进阶:mysql 主从复制、redis集群3主3从【扩缩容案例】

    💖The Begin💖点点关注,收藏不迷路💖 首先,确保你已经安装了Docker。 要下载特定版本的Tomcat镜像,可以在 docker pull 命令后面添加 image_name: tag 参数。其中 tag 制定了镜像的版本号。 解决插入中文报错: 总结: docker安装完mysql,运行实例之后,建议先修改完字符集编码后再

    2024年02月10日
    浏览(25)
  • Docker部署mysql8.x版本互为主从

    两台服务器拉取mysql8.x镜像 192.168.197.136 192.168.197.137 docker pull mysql:8.0.28 两台服务器配置免密登录 生成秘钥   ssh-keygen   (一路回车默认即可) ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.197.137    将公钥发送到另一个节点 ssh root@192.168.197.137    测试是否是免密登录 然后来构建m

    2023年04月11日
    浏览(25)
  • 【实战】使用Helm在K8S集群安装MySQL主从

    K8S对于云原生部署有着至关重要的作用,几乎所有的应用和中间件都可以部署在K8S,让其帮助我们进行管理。一般情况下我们推荐数据库不使用容器化部署,但是在某些场合为了方便管理也可以采用该种方式。今天我们就用在K8S集群部署MySQL,仅当作学习学习,在生产环境谨

    2024年02月22日
    浏览(34)
  • 【MySQL5.7麒麟系统,ARM架构下离线安装,搭建主从集群】

    注意:MsSQL8.0开始才支持arm架构,我们可以去第三方下载编译好的安装包,或者可以采取docker安装 注意:信息中心的服务器需要自己挂盘,建议统一挂载到/data目录 1、修改配置文件 2、设置开机自动启动 3、添加环境变量 4、初始化启动MySQL 5、修改MySQL密码,并允许远程连接

    2024年02月03日
    浏览(28)
  • Docker进阶篇-安装MySQL主从复制

      查看返回结果的文件名 File 、当前位置 Position,下面用得上 进入从数据库 配置从数据库所属的主数据库 命令详解: master_host:主数据库IP地址(即宿主机IP) master_user:在主数据库创建的用于同步数据的用户账号 master_password:在主数据库创建的用于同步数据的用户密码

    2024年01月20日
    浏览(35)
  • 服务器离线部署docker,镜像迁移,mysql主从搭建等服务

    公司项目要上线项目,买了两台云服务器,需进行环境部署(1台接入公网,一台只能局域网访问),主要部署以下内容 1、服务器之间配置ssh免密 2、离线docker部署 3、docker镜像迁移 4、redis服务 5、minio文件服务 6、kkFileView文件预览服务 7、mysql主从搭建 目录 1、配置两台服务器

    2024年02月04日
    浏览(29)
  • docker 安装mysql8 实现互为主从

    先按照这个目录结构创建。 mysql.conf 配置,mysql的基础可以在此添加 mysql-master下conf配置 mysql-slave下conf配置  注意我指定了数据库为test_db  注意:我使用的mysql用户为默认root,可以自行创建其他用户访问数据库。 在mysql文件夹下执行   如上图所示表示mysql创建成功。 获取主服

    2024年02月22日
    浏览(34)
  • 【初识 Docker | 中级篇】 Docker 安装 MySQL(单机及主从配置)

    可以按照以下步骤在 Docker 中安装 MySQL ✔ 拉取 MySQL 镜像 docker pull mysql ✔ 运行 MySQL 容器 docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=your_password mysql 其中, your_password 是 MySQL 的 root 用户密码 ,可以替换为您自己的密码。这个命令会在后台运行一个名为 mysql 的容器,并将

    2024年02月10日
    浏览(24)
  • docker笔记4:高级复杂安装-mysql主从复制

    docker run -p 3307:3306 --name mysql-master -v /mydata/mysql-master/log:/var/log/mysql -v /mydata/mysql-master/data:/var/lib/mysql -v /mydata/mysql-master/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=root   -d mysql:5.7 进入/mydata/mysql-master/conf目录下新建my.cnf  vim my.cnf docker restart mysql-master 进入mysql-master容器  docker exec -it

    2024年02月09日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包