当前位置 主页 > 网站技术 > 代码类 >

    基于Docker的MySQL主从复制环境搭建的实现步骤

    栏目:代码类 时间:2020-01-31 15:02

    1. 前言

    之前的程序架构可能是这样的一种形式:

    当程序体量扩大后,我们进行扩展,可能会扩展多个后台服务实例,但数据库还是只有一个,所以系统的瓶颈还是在数据库上面,所以这次的主要任务就是对数据库进行扩展,主要形式为:扩展多台数据库实例,实现读写分离,对于一些写的任务分配到主数据库,对于读的任务使用子数据库进行读取。从而提高系统性能。

    修改后的架构如下所示:

    2. 环境预搭建

    这次使用docker来进行这个环境的搭建,使用MySQL版本为5.7.13。

    docker pull mysql:5.7.13

    整体结构为:

    1个master主节点,作为写的节点。 2个slave从节点,作为读的节点。

    先分别将这几个节点启动,映射到不同的端口。在本机使用数据库连接工具连接,测试是否正常启动且正常连接。

    docker run -p 3307:3306 --name mysql-master -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.13
    docker run -p 3308:3306 --name mysql-slave1 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.13
    docker run -p 3309:3306 --name mysql-slave2 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.13

    我这里分别将主节点(mysql-master)映射为3307端口,两个从节点(mysql-slave1,2)分别为33083309端口。然后设置MySQL的root密码为123456

    然后可以使用navicat等工具连接测试MySQL。

    分别进入这几个节点,编辑配置文件。

    docker exec -it mysql-master /bin/bash

    我使用的是name来进入容器,也可以根据id来选择,即docker exec -it 对应容器的id /bin/bash

    由于没有预先安装vivim程序,然后要下载时需要执行apt update命令,这时会从国外源进行下载。由于众所周知的原因,速度很慢。我就将下载源更改为国内源。

    进入到/etc/apt文件夹中,首先将原有的文件进行备份:

    mv sources.list sources.list.bak

    然后使用如下命令新建文件并输入内容:

    echo deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse > sources.list

    然后我们再执行apt update等操作,最后安装vim即可。

    3. 进行主从配置

    主节点(master)配置

    进入主节点容器后,进入/etc/mysql文件夹中,会有一个my.cnf文件,主要对它进行修改。

    编辑这个文件,找到[mysqld],在这个下面添加如下命令:

    [mysqld]
    ...
    ...
    ## 唯一的编号
    server-id=101
    ## 这个是关键配置项
    log-bin=mysql-bin

    配置完成后,需要重启MySQL服务使配置生效。使用service mysql restart命令进行重启,重启完成后会关闭MySQL的容器,我们还要重启容器docker restart mysql-master

    从节点(slave)配置

    同主节点一样,编辑/etc/mysql/my.cnf文件

    [mysqld]
    ...
    ...
    ## 唯一的编号
    server-id=103
    ## 选,如果需要将该节点作为其他节点的主节点则需要添加
    # log-bin=mysql-bin