iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >基于Docker的Mysql主备搭建的实现步骤
  • 499
分享到

基于Docker的Mysql主备搭建的实现步骤

2024-04-02 19:04:59 499人浏览 薄情痞子
摘要

目录前期规划:配置过程:Docker Mysql主从配置。我们会在一台Centos的虚拟机上,配置mysql主备 前期规划: docker mysql版本 mysql:5.7dock

Docker Mysql主从配置。我们会在一台Centos虚拟机上,配置mysql主备

前期规划:

  • docker mysql版本 mysql:5.7
  • docker网络配置,我们会创建名称为mysql的网络,子网掩码为 172.88.0.0/16
  • docker mysql主对应的容器名称:mysql-master, ip地址:172.88.0.11,映射端口:3307,文件卷配置(配置文件和数据文件持久化)mysql配置文件地址:/usr/local/docker/mysql/slave/conf,mysql数据文件地址:/usr/local/docker/mysql/slave/data
  • docker mysql从对应的容器名称:mysql-slave, ip地址: 172.88.0.12,映射端口:3308,文件卷配置(配置文件和数据文件持久化)mysql配置文件地址:/usr/local/docker/mysql/master/conf,mysql数据文件地址:/usr/local/docker/mysql/master/data

配置过程:

网络创建(两个mysql之间是需要通信的)

# 创建网络mysql,子网掩码172.88.0.0/16
[root@localhost conf]# docker network create mysql --subnet 172.88.0.0/16
# 查看网络是否创建成功:有mysql则表示创建成功
[root@localhost conf]# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
b03fab4e1371   bridge    bridge    local
0abda6b25a0e   host      host      local
844e3f85e00e   mysql     bridge    local
c2bbcb4013a7   none      null      local

拉取docker mysql镜像,这里我们使用的是mysql:5.7版本

# 拉取docker镜像,mysql:5.7版本
[root@localhost ~]# docker pull mysql:5.7

启动两个mysql容器,mysql-master,mysql-slave

# 记得修改下conf的配置文件
# chmod -R 777 /usr/local/docker/mysql/master/conf
# chmod -R 777 /usr/local/docker/mysql/slave/conf
# 启动容器,一个对应主,一个对应从
# mysql master [mysql-master, 3307,172.88.0.11,/usr/local/docker/mysql/master/data,/usr/local/docker/mysql/master/conf]
[root@localhost /]# docker run --name mysql-master -p 3307:3306 -v /usr/local/docker/mysql/master/data:/var/lib/mysql -v /usr/local/docker/mysql/master/conf:/etc/mysql/ -e MYSQL_ROOT_PASSWord=123456 -d --net mysql --ip 172.88.0.11 mysql:5.7
# mysql slave [mysql-slave, 3308,172.88.0.12,/usr/local/docker/mysql/slave/data,/usr/local/docker/mysql/slave/conf]
[root@localhost /]# docker run --name mysql-slave -p 3308:3306 -v /usr/local/docker/mysql/slave/data:/var/lib/mysql -v /usr/local/docker/mysql/slave/conf:/etc/mysql/ -e MYSQL_ROOT_PASSWORD=123456 -d --net mysql --ip 172.88.0.12 mysql:5.7

# 查看mysql-master,mysql-slave两个容器是否正确启动
[root@localhost /]# docker ps
CONTaiNER ID   IMAGE       COMMAND                  CREATED          STATUS          PORTS                                                  NAMES
205cd234c29b   mysql:5.7   "docker-entrypoint.s…"   9 seconds aGo    Up 7 seconds    33060/tcp, 0.0.0.0:3308->3306/tcp, :::3308->3306/tcp   mysql-slave
cdcc14b2b2a2   mysql:5.7   "docker-entrypoint.s…"   49 seconds ago   Up 46 seconds   33060/tcp, 0.0.0.0:3307->3306/tcp, :::3307->3306/tcp   mysql-master

mysql主备配置

# 修改配置文件
# mysql-master配置文件修改,因为我们做了docker文件卷处理,所以我们直接在宿主机/usr/local/docker/mysql/master/conf下操作即可
[root@localhost ~]# cd /usr/local/docker/mysql/master/conf/
[root@localhost conf]# vi my.cnf 
# 在my.cnf里面输入如下信息
[mysqld]
## 同一局域网内注意要唯一
server-id=100
## 开启二进制日志功能,可以随便取(关键)
log-bin=mysql-bin

# 进入mysql-master容器里面重启mysql服务
# docker exec -it mysql-master /bin/bash 进入mysql-master容器
# service mysql restart重启mysql服务器
# 这里有一点要注意,重启mysql服务之后,mysql-master容器被关掉了,所以我们需要docker start mysql-master在启动下容器
[root@localhost /]# docker exec -it mysql-master /bin/bash
root@cdcc14b2b2a2:/# service mysql restart
[root@localhost /]# docker start mysql-master

# 再次进入mysql-master容器授予slave用户 REPLICATioN SLAVE权限和REPLICATION CLIENT权限,用于在主从库之间同步数据[slave用户是用来做数据同步的]
# 1. CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
# 2. GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
# 3. show master status;  查看主库状态,请记住File和Position对应的值
[root@localhost /]# docker exec -it mysql-master /bin/bash
root@205cd234c29b:/# mysql -u root -p     
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.36-log MySQL CommUnity Server (GPL)

Copyright (c) 2000, 2021, oracle and/or its affiliates.

Oracle is a reGIStered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.04 sec)

mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
Query OK, 0 rows affected (0.00 sec)

mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000002 |      617 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.01 sec)

mysql> 

# mysql-slave配置文件修改,因为我们做了docker文件卷处理,所以我们直接在宿主机/usr/local/docker/mysql/slave/conf下操作即可
[root@localhost conf]# cd /usr/local/docker/mysql/slave/conf/
[root@localhost conf]# vi my.cnf 
# 在my.cnf里面输入如下信息
[mysqld]
## 设置server_id,注意要唯一
server-id=101
## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用
log-bin=mysql-slave-bin
## relay_log配置中继日志
relay_log=edu-mysql-relay-bin

# 进入mysql-slave容器里面重启mysql服务
# docker exec -it mysql-slave /bin/bash 进入mysql-master容器
# service mysql restart重启mysql服务器
# 这里又一点要注意,重启mysql服务之后,mysql-slave容器被关掉了,所以我们需要docker start mysql-slave在启动下容器
[root@localhost /]# docker exec -it mysql-slave /bin/bash
root@205cd234c29b:/# service mysql restart
[root@localhost /]# docker start mysql-slave
# 再次进入mysql-slave容器,连上mysql-slave数据库
[root@localhost /]# docker exec -it mysql-slave /bin/bash
[root@localhost conf]# docker exec -it mysql-slave /bin/bash
root@205cd234c29b:/# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.36-log MySQL Community Server (GPL)

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> change master to master_host='172.88.0.11', master_port=3306, master_user='slave',master_password='123456',master_log_file='mysql-bin.000002', master_log_pos=617;
Query OK, 0 rows affected, 2 warnings (0.06 sec)

mysql> start slave;
Query OK, 0 rows affected (0.02 sec)

mysql> show slave status\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 172.88.0.11
                  Master_User: slave
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000002
          Read_Master_Log_Pos: 617
               Relay_Log_File: edu-mysql-relay-bin.000002
                Relay_Log_Pos: 320
        Relay_Master_Log_File: mysql-bin.000002
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 617
              Relay_Log_Space: 531
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key: 
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error: 
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 100
                  Master_UUID: 46cc703D-5b0e-11ec-a43c-0242ac110002
             Master_Info_File: /var/lib/mysql/master.info
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
           Master_Retry_Count: 86400
                  Master_Bind: 
      Last_IO_Error_Timestamp: 
     Last_SQL_Error_Timestamp: 
               Master_SSL_Crl: 
           Master_SSL_Crlpath: 
           Retrieved_Gtid_Set: 
            Executed_Gtid_Set: 
                Auto_Position: 0
         Replicate_Rewrite_DB: 
                 Channel_Name: 
           Master_TLS_Version: 

到此这篇关于基于Docker的Mysql主备搭建的实现步骤的文章就介绍到这了,更多相关Docker Mysql主备搭建内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

您可能感兴趣的文档:

--结束END--

本文标题: 基于Docker的Mysql主备搭建的实现步骤

本文链接: https://www.lsjlt.com/news/164122.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 基于Docker的Mysql主备搭建的实现步骤
    目录前期规划:配置过程:Docker mysql主从配置。我们会在一台centos的虚拟机上,配置mysql主备 前期规划: docker mysql版本 mysql:5.7dock...
    99+
    2024-04-02
  • docker搭建基于prometheus的监控体系步骤实现
    目录1.启动prometheus容器服务2.启动成功后,公网访问该9090端口进入普罗米修斯主页3.部署mysqld-exporer监控mysql数据库(想监控什么就部署对应的exp...
    99+
    2024-04-02
  • 关于Mysql搭建主从复制功能的步骤实现
    目录1.描述2.开始远程连接3.开启bin-log日志4.重启两台mysql5.授权Ⅰ授权Ⅱ6.配置从服务器7.启动从库的复制功能8.检查从库复制功能状态1.描述 在实际的生产中,为了解决Mysql的单点故障已经提高My...
    99+
    2023-05-23
    Mysql 主从复制 搭建主从复制
  • 基于Docker搭建Redis主从集群的实现
    目录1、拉取 Redis 镜像2、创建 6 个 Redis 容器3、启动 Redis 容器4、组建 Redis 集群5、关于Redis集群搭建最近陆陆续续有不少园友加我好友咨询 re...
    99+
    2024-04-02
  • 基于Docker实现Redis主从+哨兵搭建的示例实践
    目录1.拉取镜像2. 编写主 从配置文件2.1 创建/home/redis/redis_conf目录:2.2 编写主配置文件2.3 编写从配置文件2.4  编写从配置文件3...
    99+
    2024-04-02
  • Mysql双主搭建的方法步骤
    目录1. mysql binlog参数配置2. Mysql binlog查看详细内容3. Mysql双主搭建4. Mysql双主解决数据回环4.1 双主同步测试一4.2 双主同步测试二4.3 双主同步测试三1. Mysq...
    99+
    2023-01-13
    Mysql双主搭建 Mysql双主
  • 使用Docker搭建MySQL主从数据库的方法步骤
    目录1. 准备主服务器2. 准备从服务器3. 启动主从同步4. 实现主从同步5. 停止和重置很多人对主从数据库有一个误区,把多个mysql搭建在同一个服务器上,性能提升是不是很有限?这个理念是错误的,数据库的性能瓶颈主要...
    99+
    2023-01-11
    Docker搭建MySQL主从 Docker MySQL主从
  • docker实现redis集群搭建的方法步骤
    目录一、创建redis docker基础镜像 二、制作redis节点镜像 三、运行redis集群  引用:摘要:接触docker以来,似乎养成了一种习惯,安装什么应用软件都...
    99+
    2024-04-02
  • MySQL基于GTID主从搭建怎么实现
    本篇内容介绍了“MySQL基于GTID主从搭建怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
  • Nginx虚拟主机的搭建的实现步骤
    目录Nginx服务基础关于NginxNginx相对于Apache的优点:Apache相对于Nginx的优点:Nginx访问控制创建运行用户、组编译安装Nginx配置 Nginx服务管...
    99+
    2024-04-02
  • docker搭建memcached的详细步骤
    目录搭建步骤worker登录机器新建文件夹下载magent-0.5.tar.gz并安装创建Dockerfile并构建镜像构建镜像magent:v1pull memcached镜像手动...
    99+
    2024-04-02
  • Docker搭建svn的方法步骤
    目录一、svn简介二、docker搭建svn三、创建svn仓库和账户1、进入容器中进行配置2、创建名称为svn的资源仓库3、设置资源仓库【 /var/opt/svn/conf/svn...
    99+
    2023-01-13
    Docker搭建svn
  • Docker Swarms跨主机集群搭建的具体步骤
    这篇文章主要介绍“Docker Swarms跨主机集群搭建的具体步骤”,在日常操作中,相信很多人在Docker Swarms跨主机集群搭建的具体步骤问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Docker ...
    99+
    2023-06-04
  • tensorflow基于Anaconda环境搭建的方法步骤
    目录1.简介2.在Anaconda环境下搭建TensorFlow- 安装Anaconda创建一个新的Anaconda环境激活新的环境安装TensorFlow验证TensorFlow安...
    99+
    2023-02-28
    tensorflow Anaconda环境搭建 tensorflow Anaconda 搭建
  • k8s搭建mysql集群实现主从复制的方法步骤
    目录环境介绍一、部署NFS服务器二、创建PV三、编写mysql的yaml文件四、启动MySQL五、验证MySQL主从复制环境介绍 名称版本操作系统IP备注K8S集群1.20.15Centos7.9192.168.11.2...
    99+
    2023-01-05
    k8s mysql主从 k8s搭建mysql主从
  • SpringMVC的工程搭建步骤实现
    目录一、创建项目二、配置核心文件三、web.xml四、配置TomCat五、运行TomCat一、创建项目 1、新建一个项目名为:springmvc-demo-yuyongqing 右键...
    99+
    2024-04-02
  • Docker搭建RabbitMQ集群的方法步骤
    目录集群模式介绍1、普通集群的搭建1.1、普通集群架构介绍1.2、环境准备1.3、集群搭建2、镜像集群的搭建2.1、配置镜像集群的策略集群模式介绍 RabbitMQ集群模式有两种:普...
    99+
    2024-04-02
  • docker仓库搭建的步骤是什么
    搭建Docker仓库的步骤如下: 安装Docker:在服务器上安装Docker引擎。 配置Docker Registry:可...
    99+
    2023-10-26
    docker
  • TypeScript环境搭建的实现步骤
    目录1. 安装TS环境2. 安装 ts-node3. 安装nodemon4. Parcel打包支持浏览器运行TS文件前提是已经装好了node.js,node.js安装图文教程&nbs...
    99+
    2024-04-02
  • docker搭建Zookeeper集群的方法步骤
    目录0.前言1.前提2.开始搭建解释创建zoo.cfg3.docker搭建1.docker创建网络2.启动第1个zk节点3.启动第2个zk节点4.启动第3个zk节点4.访问节点1.进...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作