docker如何配置mysql主从复制

 更新时间:2024年12月23日 08:49:56   作者:Mars'Ares  
文章介绍了如何在CentOS 7上搭建一个MySQL集群,包括创建Docker环境、配置文件设置、创建和启动MySQL容器、设置远程访问以及配置主从同步

前提条件

1 具有docker环境的centos7

yum install docker
service docker start

2 mysql镜像(版本5.5以上,本文采用8.0)

docker pull mysql:8.0

mysql集群配置文件

1 创建配置集结构如下

mkdir -p /home/data/mysql/data/master
mkdir -p /home/data/mysql/data/slave
mkdir -p /home/data/mysql/master
mkdir -p /home/data/mysql/slave

2 创建节点配置文件(master.cnf与slave.cnf)

cd /home/data/mysql/master
vi master.cnf
cd /home/data/mysql/slave
vi slave.cnf

内容如下

[mysqld]
server-id=1   #任意自然数n,只要保证两台MySQL主机不重复就可以了。
log-bin=mysql-bin   #开启二进制日志
#auto_increment_increment=2   #步进值auto_imcrement。一般有n台主MySQL就填n
#auto_increment_offset=1   #起始值。一般填第n台主MySQL。此时为第一台主MySQL
#binlog-ignore=mysql   #忽略mysql库【我一般都不写】
#binlog-ignore=information_schema   #忽略information_schema库【我一般都不写】
#replicate-do-db=aa   #要同步的数据库,默认所有库

搭建mysql环境

1 为mysql容器创建专有桥接网络,以便固定mysql容器ip

docker network create --driver bridge --subnet 172.25.0.0/16 mysql_net

备注:创建桥接网卡 mysql_net 指定自网段为172.25.0.0 如果不指定ip则与docker容器的docker0网卡同网段

2 创建mysql容器

(1) master

docker create 
--privileged=true                               #为容器挂载目录添加权限
--name mysqlmaster                              #容器名为mysqlmaster
-v /home/data/mysql/data/master:/var/lib/mysql  #集群配置集中/data/master 挂载到容器/var/lib/mysql
-v /home/data/mysql/master:/etc/mysql/conf.d    #配置集中/master 中master.cnf 挂载到 /etc/mysql/conf.d中设置启动
-e MYSQL_ROOT_PASSWORD=root                     #设置启动密码
--net mysql_net                                 #指定容器连接网络
--ip 172.25.0.3                                 #指定容器使用ip
-p 3307:3306 mysql:8.0                          #指定主机映射到容器端口  即 主机访问centos7 为3307   容器端口为3306

备注:上面#号后需要删除

(2)salve

docker create 
--privileged=true 
--name mysqlslave 
-v /home/data/mysql/data/slave:/var/lib/mysql 
-v /home/data/mysql/salve:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root 
--net mysql_net 
--ip 172.25.0.2 
-p 3308:3306 mysql:8.0

备注:同上

3 启动容器

docker start mysqlsalve
docker start mysqlmaster

查看运行状态

docker ps -a

查看容器ip

docker network inspect mysql_net

4 容器设置远程访问

docker exec -it mysqlmaster /bin/bash

使用容器ip登录 并输入密码

mysql -u root -p  -h 172.25.0.3

修改root帐号密码

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';

备注:同理进入另一个容器相同操作

5 使用navicat在主机(非centos7)登录mysql容器

备注:容器ip为docker容器内部路由使用,虚拟机ip为外部主机入口,可以通过桥接访问到容器

启动mysql主从

1 进入master 赋权限 以及查询master 的日志文件 以及位置

SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
GRANT REPLICATION SLAVE ON *.* to 'root'@'%' identified by 'root'; --赋权限给root用户
flush privileges; --刷新权限
show master status; 

2 进入slave 设置slave配置以及启动slave

change master to 
master_host='172.25.0.3',     --master的ip  不能为127.0.0.1
master_user='root',           --master的帐号密码
master_password='root',
master_log_file='mysql-bin.000003', --master 查询的file名  注意上面!
master_port=3306,                   --master 端口 坑!为容器端口 不是主机端口
master_log_pos=596;                 --日志文件位置  注意上面!
start slave;
show slave status;

备注:主从同步启动标志 若出现cennecting to master 则有错误 请自己查找

3 验证主从

主库创建任何数据,从库随即更新!

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Docker Swarm集群管理的使用及原理解析

    Docker Swarm集群管理的使用及原理解析

    这篇文章主要介绍了Docker Swarm集群管理的使用及原理解析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • 编写最佳的Dockerfile的方法

    编写最佳的Dockerfile的方法

    本文给大家分享的是如何编写最佳的dockerfile的方法,通过具体实例帮助大家快速掌握编写Dockerfile的技巧
    2017-06-06
  • Docker实现同Ip网段联通的实现

    Docker实现同Ip网段联通的实现

    这篇文章主要介绍了Docker实现同Ip网段联通的实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • 谷歌技术人员解决Docker镜像体积太大问题的方法

    谷歌技术人员解决Docker镜像体积太大问题的方法

    这篇文章主要介绍了谷歌技术人员解决Docker镜像体积太大问题的方法,涉及虚拟机,谷歌docker镜像构建实践及构建工具bazel的介绍等相关内容,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • docker 容器添加指定网络地址的方法实现

    docker 容器添加指定网络地址的方法实现

    Docker容器运行的时候默认会自动分配一个默认网桥所在网段的IP地址,本文主要介绍了docker容器添加指定网络地址的方法实现,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • mac下关于docker的安装和配置教程

    mac下关于docker的安装和配置教程

    在Mac上安装Docker的详细步骤包括系统要求、下载安装包、安装DockerDesktop、启动并配置、验证安装、运行HelloWorld容器、管理Docker和卸载Docker
    2024-11-11
  • Docker基本概念和底层原理解析

    Docker基本概念和底层原理解析

    Docker是一个Client-Server结构的系统,Docker守护进程运行在主机上,然后通过Socket连接从客户端访问,守护进程从客户端接受命令并管理运行在主机上的容器,本文给大家介绍docker概念和底层原理,感兴趣的朋友一起看看吧
    2022-03-03
  • docker内的容器如何与宿主机共享IP的方法

    docker内的容器如何与宿主机共享IP的方法

    本文主要介绍了docker内的容器如何与宿主机共享IP的方法,文中根据实例编码详细介绍的十分详尽,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • 通过Docker Compose部署MySQL的详细教程

    通过Docker Compose部署MySQL的详细教程

    Docker Compose 作为 Docker 官方的容器编排工具,为 MySQL 数据库部署带来了显著优势,下面小编就来为大家详细介绍一下具体的流程吧
    2025-03-03
  • Alpine Docker镜像字体的问题解决操作

    Alpine Docker镜像字体的问题解决操作

    这篇文章主要介绍了Alpine Docker镜像字体的问题解决操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03

最新评论