DockerCompose安装Mysql配置读写分离

文章目录

    • 1、首先要安装Docker 以及Docker-compose
      • Docker安装
      • Docker-compose安装
    • 2、安装MySql
    • 3、配置主Master(主)
      • 修改容器配置
      • 添加用户赋权限
    • 4、配置从Slave(从)
    • 5、开启Master-Slave主从复制配置
    • 6、测试

1、首先要安装Docker 以及Docker-compose

Docker安装

#查看内核
➜  ~ uname -r    
4.15.0-96-generic # 要求3.0以上
#查看Centos
➜  ~ cat /etc/os-release 
NAME="Ubuntu"
VERSION="18.04.4 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.4 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic

安装

1.卸载旧版本

yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

2.需要的安装包

yum install -y yum-utils

3.设置镜像的仓库

yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
#默认是从国外的,不推荐
#推荐使用国内的
yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

4.更新yum软件包索引

yum makecache fast

5.安装docker相关的 docker-ce 社区版 而ee是企业版

yum install docker-ce docker-ce-cli containerd.io

6.使用docker version查看是否按照成功

docker version

DockerCompose安装Mysql配置读写分离_第1张图片

  • 但是我们可以看见docker只启动了client,我们通过输入service docker start来开启server,之后再次输入docker version来验证
#开始service
service docker start
#开机自动启动docker
systemctl enable docker
#启动docker
systemctl start docker
#重启dokcer
systemctl restart docker
#验证
docker version

Docker-compose安装

1、安装Run this command to download the latest version of Docker Compose 修改自己需要的版本

sudo curl -L "https://github.com/docker/compose/releases/download/1.25.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

如果github dockercompose速度较慢可以使用下面这个,效果一样
curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.4/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

2、赋权Apply executable permissions to the binary: sudo chmod +x /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose

3、Optionally, install command completion for the bash and zsh shell.

sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

4、测试(查看版本)Test the installation

docker-compose --version

2、安装MySql

  • 拉取MySql镜像
docker pull mysql:5.7.35
  • 编写docker-compose-mysql.yml文件
version: '3.0'
services:
  #主数据库
  master_mysql:
    image: mysql:5.7.35
    restart: always
    container_name: master_mysql
    privileged: true
    ports:
     - 3306:3306
    environment:
      MYSQL_ROOT_PASSWORD: root
      TZ: Asia/Shanghai
    volumes:
      - /opt/master_mysql/data:/var/lib/mysql
      - /opt/master_mysql/conf/my.cnf:/etc/mysql/my.cnf
  #从数据库    
  slave_mysql:
    image: mysql:5.7.35
    restart: always
    container_name: slave_mysql
    privileged: true
    ports:
     - 3307:3306
    environment:
      MYSQL_ROOT_PASSWORD: root
      TZ: Asia/Shanghai
    volumes:
      - /opt/slave_mysql/data:/var/lib/mysql
      - /opt/slave_mysql/conf/my.cnf:/etc/mysql/my.cnf
  • 创建主库,从库挂载目录
mkdir -p /opt/master_mysql/data
mkdir -p /opt/master_mysql/conf
mkdir -p /opt/slave_mysql/data
mkdir -p /opt/slave_mysql/conf
  • 创建挂载文件

可以直接将下面的配置直接写里面,也可以直接创建为空文件

vim  /opt/master_mysql/conf/my.cnf

vim  /opt/slave_mysql/conf/my.cnf
  • 启动docker-compose-mysql.yml
docker-compose -f docker-compose-mysql.yml up -d
  • 查看容器启动是否成功,采用Navicat Premium 15 连接两台MySql测试是否连接成功

在这里插入图片描述

3、配置主Master(主)

修改容器配置

修改容器也可以,也可以直接修改你挂载目录里面的my.cnf文件都可行!

  • 安装vim
apt-get update
apt-get install vim
  • 进入容器
docker exec -it 37111bb4ea57/bin/bash
  • 修改配置在my.cnf配置添加内容
  • vim /etc/mysql/my.cnf
[mysqld]
## 同一局域网内注意要唯一
server-id=100  
## 开启二进制日志功能,可以随便取(关键)
log-bin=mysql-bin
  • 重启master_mysql容器

添加用户赋权限

  • 添加用户,并赋予权限
-mysql7版本
grant replication slave on *.* to 'slave'@'%' identified by 'root';

-mysql8版本
CREATE USER 'slave'@'%' IDENTIFIED BY 'root';--为从库服务器 设置用户名和密码(表明从服务器的ip可以使%,账号为slave 密码root
grant replication slave, replication client on *.* to 'slave'@'%';--设置权限
flush privileges;--权限生效

show grants for 'slave'@'%';

DockerCompose安装Mysql配置读写分离_第2张图片

4、配置从Slave(从)

  • 安装vim
apt-get update
apt-get install vim
  • 进入容器
docker exec -it ccb28a2e2f90/bin/bash
  • 修改配置在my.cnf配置添加内容
  • vim /etc/mysql/my.cnf
[mysqld]
## 同一局域网内注意要唯一
server-id=200
## 开启二进制日志功能,可以随便取(关键)
log-bin=mysql-bin
## 设置为只读,该项如果不设置,表示slave可读可写
read_only= 1
  • 重启slave_mysql容器

5、开启Master-Slave主从复制配置

  • 进入Master库查看状态
--通过该命令可以查看master数据库当前正在使用的二进制日志及当前执行二进制日志位置
show master status;

DockerCompose安装Mysql配置读写分离_第3张图片

记住File和Position,后面Slave库会在这个文件这个位置进行同步数据。此时一定不要操作Master库,否则将会引起Master状态的变化,File和Position字段也将会进行变化。

  • 使用Navicat连接Slave(从库)后新建查询,执行以下SQL

MASTER_HOST 主库IP
MASTER_PORT 主库端口
MASTER_USER 刚才创建的同步账号的用户名
MASTER_PASSWORD 刚才创建的同步账号的密码
MASTER_LOG_FILE:指定 Slave 从哪个日志文件开始复制数据,即上文中提到的 File 字段的值
MASTER_LOG_POS:从哪个 Position 开始读,即上文中提到的 Position 字段的值

change master to
master_host='192.168.7.231',
master_user='slave',
master_password='root',
MASTER_LOG_FILE='mysql-bin.000003',
MASTER_LOG_POS=885;
  • 使用start slave命令开启主从复制过程
-- 顺便提供下其它命令 stop slave 停止slave。reset slave重启slave。 reset master重启master。
start slave;
  • 查看配置有没有成功
show slave status;

在这里插入图片描述

6、测试

主库添加库添加表,刷新从库查看是否成功
DockerCompose安装Mysql配置读写分离_第4张图片

你可能感兴趣的:(Mysql,Docker,docker,mysql,读写分离,docker-compose)