From 224ec8a9478461b9c921dd491f4c29fa15667538 Mon Sep 17 00:00:00 2001 From: colben Date: Thu, 5 Sep 2024 20:24:39 +0800 Subject: [PATCH] update --- centos7/Dockerfile | 2 +- mysql/Demo/MGR/README.md | 36 -------- mysql/Demo/MGR/docker-compose.yml | 90 ------------------- mysql/Demo/MGR/mysql1/my.cnf | 3 - mysql/Demo/MGR/mysql2/my.cnf | 3 - mysql/Demo/MGR/mysql3/my.cnf | 3 - ...Dockerfile-centos7 => Dockerfile-mysql5.7} | 24 ++--- mysql/{Dockerfile => Dockerfile-mysql8} | 0 mysql/README.md | 13 +-- mysql/mysql5.7.sh | 67 ++++++++++++++ mysql/{mysql.sh => mysql8.sh} | 4 +- 11 files changed, 78 insertions(+), 167 deletions(-) delete mode 100644 mysql/Demo/MGR/README.md delete mode 100644 mysql/Demo/MGR/docker-compose.yml delete mode 100644 mysql/Demo/MGR/mysql1/my.cnf delete mode 100644 mysql/Demo/MGR/mysql2/my.cnf delete mode 100644 mysql/Demo/MGR/mysql3/my.cnf rename mysql/{Dockerfile-centos7 => Dockerfile-mysql5.7} (68%) rename mysql/{Dockerfile => Dockerfile-mysql8} (100%) create mode 100755 mysql/mysql5.7.sh rename mysql/{mysql.sh => mysql8.sh} (92%) diff --git a/centos7/Dockerfile b/centos7/Dockerfile index 169b236..fc72bdb 100644 --- a/centos7/Dockerfile +++ b/centos7/Dockerfile @@ -5,7 +5,7 @@ RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ && rm -f /etc/yum.repos.d/CentOS-* \ && echo -e "[centos7]\n\ name=centos base\n\ -baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos${ARCH:+-altarch}/$releasever/os/$basearch/\n\ +baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/centos${ARCH:+-altarch}/\$releasever/os/\$basearch/\n\ enabled=1\n\ gpgcheck=0\n\ " > /etc/yum.repos.d/centos7.repo \ diff --git a/mysql/Demo/MGR/README.md b/mysql/Demo/MGR/README.md deleted file mode 100644 index 403b19a..0000000 --- a/mysql/Demo/MGR/README.md +++ /dev/null @@ -1,36 +0,0 @@ -# 部署 MySQL Group Replication - -- 按实际环境修改 - - docker-compose.yml - - mysql{1..3}/my.cnf - -- 创建目录 - ``` - grep '\ /etc/yum.repos.d/mysql-8.0.repo \ +" > /etc/yum.repos.d/mysql-5.7.repo \ && yum makecache fast \ && yum install mysql-community-server -y \ && rm -rf /usr/sbin/mysqld-debug \ @@ -38,7 +27,7 @@ gpgcheck=0\n\ && sed -i -e 's,--initialize,&-insecure,g' \ -e 's,/usr/sbin/mysqld ,&--defaults-file=/etc/mysql/my.cnf ,g' \ /usr/bin/mysqld_pre_systemd \ - && echo -e '[mysqld]\nmysqlx = OFF\n' > /etc/my.cnf \ + && echo '[mysqld]' > /etc/my.cnf \ && echo -e '[client]\n\ socket = /run/mysqld/mysqld.sock\n\ \n\ @@ -52,7 +41,6 @@ character-set-server = utf8mb4\n\ default-storage-engine = innodb\n\ slow-query-log = TRUE\n\ slow-query-log-file = /var/log/mysql/slow.log\n\ -default-authentication-plugin = mysql_native_password\n\ lower-case-table-names = 1\n\ \n\ [mysqladmin]\n\ diff --git a/mysql/Dockerfile b/mysql/Dockerfile-mysql8 similarity index 100% rename from mysql/Dockerfile rename to mysql/Dockerfile-mysql8 diff --git a/mysql/README.md b/mysql/README.md index 0f0223d..338452b 100644 --- a/mysql/README.md +++ b/mysql/README.md @@ -1,13 +1,12 @@ -# 构建 mysql 镜像 +# 构建 mysql 5.7/8.0 镜像 ## 定制 -- 安装 mysql 8.0 +- 安装 mysql 5.7/8.0 - 固定一些常用配置 - 第一次启动 mysql 时,会执行如下操作 - 初始化数据目录 - 自动创建一个只有 shutdown 权限的普通用户,该用户用于优雅停止 mysql,__不要修改该用户任何信息__ - 自动执行 {mysql-log}/init_sql/ 下的 xxxx.sql 文件 -- 每两秒检查 {mysql-log}/extra_scripts/ 下的可执行文件,发现后立即执行 ## 外挂目录和文件 - /etc/my.cnf: mysql 配置文件 @@ -15,15 +14,7 @@ - /var/lib/mysql-bin: mysql binlog 目录 - /var/log/mysql: mysql 日志目录 -## 引入环境变量 -- SERVER_ID: mysql server id -- GROUP_REPLICATION: 是否开启组复制 -- GROUP_REPLICATION_LOCAL_ADDRESS: 指定本地地址 -- GROUP_REPLICATION_GROUP_SEEDS: 指定组复制的全部节点,用逗号间隔 -- EXTRA_SCRIPTS: 是否执行 {mysql-log}/extra_scripts/ 下的可执行文件,默认为空,不执行 - ## 案例 - [Demo/SingleNode/](Demo/SingleNode/): 单节点 - [Demo/TwoMasterNodes/](Demo/TwoMasterNodes/): 两节点互为主从+高可用 -- [Demo/MGR/](Demo/MGR/): 组复制 diff --git a/mysql/mysql5.7.sh b/mysql/mysql5.7.sh new file mode 100755 index 0000000..9850bdf --- /dev/null +++ b/mysql/mysql5.7.sh @@ -0,0 +1,67 @@ +#!/bin/bash + +#========================================= +# Author : colben +#========================================= + +set -euo pipefail +export LANG=en_US.UTF-8 + +[ 'x86_64' == "$(uname -m)" ] && ARCH='' || ARCH="-$(uname -m)" +ROOT_DIR="$(cd $(dirname $0) && pwd)" +IMAGE="harbor.colben.cn/general/mysql$ARCH:5.7" + +if [ -t 0 ]; then + function Print { echo -e "\033[36;1m$(date +'[%F %T]')\033[32;1m $*\033[0m"; } + function Warn { echo -e "\033[36;1m$(date +'[%F %T]')\033[33;1m $*\033[0m"; } + function Error { echo -e "\033[36;1m$(date +'[%F %T]')\033[31;1m $*\033[0m"; exit 1; } +else + function Print { echo -e "$(date +'[%F %T INFO]') $*"; } + function Warn { echo -e "$(date +'[%F %T WARN]') $*"; } + function Error { echo -e "$(date +'[%F %T ERROR]') $*"; exit 1; } +fi + +function Quit { + local exitCode=$? + [ 0 -ne $exitCode ] && Error Failed to build or push image! + [ -z "${END:-}" ] && echo && Error Interrupted manually! + Print Succeeded to build and push image. +} + +function YesOrNo { + Warn $* + local sw= + while :; do + read -p '(Yes/No/Quit) ' -n1 sw + [[ "$sw" =~ ^Y|y$ ]] && echo && return 0 + [[ "$sw" =~ ^N|n$ ]] && echo && return 1 + [[ "$sw" =~ ^Q|q$ ]] && echo && exit 0 + [ -n "$sw" ] && echo + done +} + +function Update { + : +} + +function Build { + local yn + cd $ROOT_DIR + docker images --format='{{.Repository}}:{{.Tag}}' | grep "^$IMAGE$" \ + && Warn Removing image $IMAGE ... \ + && docker rmi $IMAGE + Warn Building image: $IMAGE ... + docker build --force-rm --build-arg ARCH="$ARCH" -t $IMAGE -f Dockerfile-mysql5.7 . + YesOrNo Push image: $IMAGE? && docker push $IMAGE +} + +function Main { + trap Quit EXIT + Update + Build + END=1 +} + +# Start here +Main + diff --git a/mysql/mysql.sh b/mysql/mysql8.sh similarity index 92% rename from mysql/mysql.sh rename to mysql/mysql8.sh index 339ca23..24b59c4 100755 --- a/mysql/mysql.sh +++ b/mysql/mysql8.sh @@ -9,7 +9,7 @@ export LANG=en_US.UTF-8 [ 'x86_64' == "$(uname -m)" ] && ARCH='' || ARCH="-$(uname -m)" ROOT_DIR="$(cd $(dirname $0) && pwd)" -IMAGE="harbor.colben.cn/general/$(basename ${0%.sh})$ARCH:8" +IMAGE="harbor.colben.cn/general/mysql$ARCH:8" if [ -t 0 ]; then function Print { echo -e "\033[36;1m$(date +'[%F %T]')\033[32;1m $*\033[0m"; } @@ -51,7 +51,7 @@ function Build { && Warn Removing image $IMAGE ... \ && docker rmi $IMAGE Warn Building image: $IMAGE ... - docker build --force-rm --build-arg ARCH="$ARCH" -t $IMAGE . + docker build --force-rm --build-arg ARCH="$ARCH" -t $IMAGE -f Dockerfile-mysql8 . YesOrNo Push image: $IMAGE? && docker push $IMAGE }