本文已参与「新人创作礼」活动,一起开启掘金创作之路。
基于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