3、基于docker进行mysql部署

166 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

基于docker进行mysql部署

目录结构

在这里插入图片描述

init

此目录为mysql配置文件存储路径

create_sync_user.sh

  #!/bin/bash
  #定义用于同步的用户名
  MASTER_SYNC_USER=${MASTER_SYNC_USER:-sync_admin}
  #定义用于同步的用户密码
  MASTER_SYNC_PASSWORD=${MASTER_SYNC_PASSWORD:-123456}
  #定义用于登录mysql的用户名
  ADMIN_USER=${ADMIN_USER:-root}
  #定义用于登录mysql的用户密码
  ADMIN_PASSWORD=${ADMIN_PASSWORD:-123456}
  #定义运行登录的host地址
  ALLOW_HOST=${ALLOW_HOST:-%}
  #定义创建账号的sql语句,mysql8以下版本 【WITH mysql_native_password】这段需要删除
  #CREATE_USER_SQL="CREATE USER '$MASTER_SYNC_USER'@'$ALLOW_HOST' IDENTIFIED WITH mysql_native_password BY '$MASTER_SYNC_PASSWORD';"
  #定义赋予同步账号权限的sql,这里设置两个权限,REPLICATION SLAVE,属于从节点副本的权限,REPLICATION CLIENT是副本客户端的权限,可以执行show master status语句
  CHANGE_RULE_SQL="ALTER USER $ADMIN_USER@'%' IDENTIFIED WITH mysql_native_password BY $ADMIN_USER;"
  ACCESS_SQL="GRANT ALL PRIVILEGES ON . TO $ADMIN_USER@'%' IDENTIFIED BY $ADMIN_PASSWORD WITH GRANT OPTION;"
  #定义刷新权限的sql
  FLUSH_PRIVILEGES_SQL="FLUSH PRIVILEGES;"
  #执行sql
  mysql -u"$ADMIN_USER" -p"$ADMIN_PASSWORD" -e "$CHANGE_RULE_SQL $ACCESS_SQL $FLUSH_PRIVILEGES_SQL"

docker-compose.yaml

此文件为docker-compose启动配置文件

docker-compose.yaml源码

version: '3'
services:
  mysql-master:
    image: mysql:latest
    container_name: mysql-master
    environment:
      MYSQL_ROOT_PASSWORD: "123456"
      MASTER_SYNC_USER: "sync_admin"
      MASTER_SYNC_PASSWORD: "123456"
      ADMIN_USER: "root"
      ADMIN_PASSWORD: "123456"
      ALLOW_HOST: "172.20.0.%"
      # 允许同步地址根据自身需要进行修改
      TZ: "Asia/Shanghai"
    ports:
      - 3306:3306
    networks:
      my-network:
        ipv4_address: "172.20.0.12"
    restart: always
    hostname: mysql-master
    volumes:
      - ./init:/docker-entrypoint-initdb.d
    command:
      - "--server-id=1"
      - "--character-set-server=utf8mb4"
      - "--collation-server=utf8mb4_unicode_ci"
      - "--log-bin=mysql-bin"
      - "--sync_binlog=1"

networks:
  my-network:
    external: true