前言
在部署nacos的时候触发的脑袋灵光一闪,每次部署nacos都要部署下mysql服务器,然后导入sql语句,配置nacos配置文件,那有没有简单的方法实现一键部署nacos和nacos-mysql 呢?
答案是肯定!如下目录图:
我用的IDE是 Idea 2023
源码下载地址 :docker-mysql-master
1、编写dockerfile
mysql属于oracle 当然要orcale的镜像喽!
下面代码是官方提供的代码 我们需要稍微的改动一下文件添加下面这句话复制init.sql到
/docker-entrypoint-initdb.d/
COPY init.sql /docker-entrypoint-initdb.d/
/docker-entrypoint-initdb.d/ 解释:
/docker-entrypoint-initdb.d/ 是一个特殊的目录,用于在 Docker 容器启动时运行 SQL 脚本初始化数据库。任何位于该目录下的文件都会在容器启动时被 Docker 引擎执行。这个目录通常用于初始化数据库或设置默认密码等操作。这个功能是为了一些初始化操作可以在容器启动时自动完成,避免了手动登录容器进行初始化的步骤
FROM oraclelinux:7-slim
RUN set -eux; \
groupadd --system --gid 999 mysql; \
useradd --system --uid 999 --gid 999 --home-dir /var/lib/mysql --no-create-home mysql
# add gosu for easy step-down from root
# https://github.com/tianon/gosu/releases
ENV GOSU_VERSION 1.16
RUN set -eux; \
# TODO find a better userspace architecture detection method than querying the kernel
arch="$(uname -m)"; \
case "$arch" in \
aarch64) gosuArch='arm64' ;; \
x86_64) gosuArch='amd64' ;; \
*) echo >&2 "error: unsupported architecture: '$arch'"; exit 1 ;; \
esac; \
curl -fL -o /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$gosuArch.asc"; \
curl -fL -o /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$gosuArch"; \
export GNUPGHOME="$(mktemp -d)"; \
gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4; \
gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu; \
rm -rf "$GNUPGHOME" /usr/local/bin/gosu.asc; \
chmod +x /usr/local/bin/gosu; \
gosu --version; \
gosu nobody true
RUN set -eux; \
# https://github.com/docker-library/mysql/pull/871#issuecomment-1167954236
yum install -y --setopt=skip_missing_names_on_install=False oracle-epel-release-el7; \
yum install -y --setopt=skip_missing_names_on_install=False \
bzip2 \
gzip \
openssl \
xz \
zstd \
; \
yum clean all
RUN set -eux; \
# https://dev.mysql.com/doc/refman/8.0/en/checking-gpg-signature.html
# gpg: key 3A79BD29: public key "MySQL Release Engineering <mysql-build@oss.oracle.com>" imported
key='859BE8D7C586F538430B19C2467B942D3A79BD29'; \
export GNUPGHOME="$(mktemp -d)"; \
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key"; \
gpg --batch --export --armor "$key" > /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql; \
rm -rf "$GNUPGHOME"
ENV MYSQL_MAJOR 5.7
ENV MYSQL_VERSION 5.7.44-1.el7
RUN set -eu; \
. /etc/os-release; \
{ \
echo '[mysql5.7-server-minimal]'; \
echo 'name=MySQL 5.7 Server Minimal'; \
echo 'enabled=1'; \
echo "baseurl=https://repo.mysql.com/yum/mysql-5.7-community/docker/el/${VERSION_ID%%[.-]*}/\$basearch/"; \
echo 'gpgcheck=1'; \
echo 'gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql'; \
# https://github.com/docker-library/mysql/pull/680#issuecomment-825930524
echo 'module_hotfixes=true'; \
} | tee /etc/yum.repos.d/mysql-community-minimal.repo
RUN set -eux; \
yum install -y --setopt=skip_missing_names_on_install=False "mysql-community-server-minimal-$MYSQL_VERSION"; \
yum clean all; \
# the "socket" value in the Oracle packages is set to "/var/lib/mysql" which isn't a great place for the socket (we want it in "/var/run/mysqld" instead)
# https://github.com/docker-library/mysql/pull/680#issuecomment-636121520
grep -F 'socket=/var/lib/mysql/mysql.sock' /etc/my.cnf; \
sed -i 's!^socket=.*!socket=/var/run/mysqld/mysqld.sock!' /etc/my.cnf; \
grep -F 'socket=/var/run/mysqld/mysqld.sock' /etc/my.cnf; \
{ echo '[client]'; echo 'socket=/var/run/mysqld/mysqld.sock'; } >> /etc/my.cnf; \
\
# make sure users dumping files in "/etc/mysql/conf.d" still works
! grep -F '!includedir' /etc/my.cnf; \
{ echo; echo '!includedir /etc/mysql/conf.d/'; } >> /etc/my.cnf; \
mkdir -p /etc/mysql/conf.d; \
# 5.7 Debian-based images also included "/etc/mysql/mysql.conf.d" so let's include it too
{ echo '!includedir /etc/mysql/mysql.conf.d/'; } >> /etc/my.cnf; \
mkdir -p /etc/mysql/mysql.conf.d; \
\
# comment out a few problematic configuration values
find /etc/my.cnf /etc/mysql/ -name '*.cnf' -print0 \
| xargs -0 grep -lZE '^(bind-address|log)' \
| xargs -rt -0 sed -Ei 's/^(bind-address|log)/#&/'; \
\
# ensure these directories exist and have useful permissions
# the rpm package has different opinions on the mode of `/var/run/mysqld`, so this needs to be after install
mkdir -p /var/lib/mysql /var/run/mysqld; \
chown mysql:mysql /var/lib/mysql /var/run/mysqld; \
# ensure that /var/run/mysqld (used for socket and lock files) is writable regardless of the UID our mysqld instance ends up having at runtime
chmod 1777 /var/lib/mysql /var/run/mysqld; \
\
mkdir /docker-entrypoint-initdb.d; \
\
mysqld --version; \
mysql --version
RUN set -eu; \
. /etc/os-release; \
{ \
echo '[mysql-tools-community]'; \
echo 'name=MySQL Tools Community'; \
echo "baseurl=https://repo.mysql.com/yum/mysql-tools-community/el/${VERSION_ID%%[.-]*}/\$basearch/"; \
echo 'enabled=1'; \
echo 'gpgcheck=1'; \
echo 'gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql'; \
# https://github.com/docker-library/mysql/pull/680#issuecomment-825930524
echo 'module_hotfixes=true'; \
} | tee /etc/yum.repos.d/mysql-community-tools.repo
ENV MYSQL_SHELL_VERSION 8.0.35-1.el7
RUN set -eux; \
yum install -y --setopt=skip_missing_names_on_install=False "mysql-shell-$MYSQL_SHELL_VERSION"; \
yum clean all; \
\
mysqlsh --version
VOLUME /var/lib/mysql
COPY init.sql /docker-entrypoint-initdb.d/
COPY docker-entrypoint.sh /usr/local/bin/
RUN ln -s usr/local/bin/docker-entrypoint.sh /entrypoint.sh # backwards compat
ENTRYPOINT ["docker-entrypoint.sh"]
EXPOSE 3306 33060
CMD ["mysqld"]
2、编写 docker-entrypoint.sh
直接上代码了
#!/bin/bash
set -eo pipefail
shopt -s nullglob
# logging functions
mysql_log() {
local type="$1"; shift
# accept argument string or stdin
local text="$*"; if [ "$#" -eq 0 ]; then text="$(cat)"; fi
local dt; dt="$(date --rfc-3339=seconds)"
printf '%s [%s] [Entrypoint]: %s\n' "$dt" "$type" "$text"
}
mysql_note() {
mysql_log Note "$@"
}
mysql_warn() {
mysql_log Warn "$@" >&2
}
mysql_error() {
mysql_log ERROR "$@" >&2
exit 1
}
# usage: file_env VAR [DEFAULT]
# ie: file_env 'XYZ_DB_PASSWORD' 'example'
# (will allow for "$XYZ_DB_PASSWORD_FILE" to fill in the value of
# "$XYZ_DB_PASSWORD" from a file, especially for Docker's secrets feature)
file_env() {
local var="$1"
local fileVar="${var}_FILE"
local def="${2:-}"
if [ "${!var:-}" ] && [ "${!fileVar:-}" ]; then
mysql_error "Both $var and $fileVar are set (but are exclusive)"
fi
local val="$def"
if [ "${!var:-}" ]; then
val="${!var}"
elif [ "${!fileVar:-}" ]; then
val="$(< "${!fileVar}")"
fi
export "$var"="$val"
unset "$fileVar"
}
# check to see if this file is being run or sourced from another script
_is_sourced() {
# https://unix.stackexchange.com/a/215279
[ "${#FUNCNAME[@]}" -ge 2 ] \
&& [ "${FUNCNAME[0]}" = '_is_sourced' ] \
&& [ "${FUNCNAME[1]}" = 'source' ]
}
# usage: docker_process_init_files [file [file [...]]]
# ie: docker_process_init_files /always-initdb.d/*
# process initializer files, based on file extensions
docker_process_init_files() {
# mysql here for backwards compatibility "${mysql[@]}"
mysql=( docker_process_sql )
echo
local f
for f; do
case "$f" in
*.sh)
# https://github.com/docker-library/postgres/issues/450#issuecomment-393167936
# https://github.com/docker-library/postgres/pull/452
if [ -x "$f" ]; then
mysql_note "$0: running $f"
"$f"
else
mysql_note "$0: sourcing $f"
. "$f"
fi
;;
*.sql) mysql_note "$0: running $f"; docker_process_sql < "$f"; echo ;;
*.sql.bz2) mysql_note "$0: running $f"; bunzip2 -c "$f" | docker_process_sql; echo ;;
*.sql.gz) mysql_note "$0: running $f"; gunzip -c "$f" | docker_process_sql; echo ;;
*.sql.xz) mysql_note "$0: running $f"; xzcat "$f" | docker_process_sql; echo ;;
*.sql.zst) mysql_note "$0: running $f"; zstd -dc "$f" | docker_process_sql; echo ;;
*) mysql_warn "$0: ignoring $f" ;;
esac
echo
done
}
# arguments necessary to run "mysqld --verbose --help" successfully (used for testing configuration validity and for extracting default/configured values)
_verboseHelpArgs=(
--verbose --help
--log-bin-index="$(mktemp -u)" # https://github.com/docker-library/mysql/issues/136
)
mysql_check_config() {
local toRun=( "$@" "${_verboseHelpArgs[@]}" ) errors
if ! errors="$("${toRun[@]}" 2>&1 >/dev/null)"; then
mysql_error $'mysqld failed while attempting to check config\n\tcommand was: '"${toRun[*]}"$'\n\t'"$errors"
fi
}
# Fetch value from server config
# We use mysqld --verbose --help instead of my_print_defaults because the
# latter only show values present in config files, and not server defaults
mysql_get_config() {
local conf="$1"; shift
"$@" "${_verboseHelpArgs[@]}" 2>/dev/null \
| awk -v conf="$conf" '$1 == conf && /^[^ \t]/ { sub(/^[^ \t]+[ \t]+/, ""); print; exit }'
# match "datadir /some/path with/spaces in/it here" but not "--xyz=abc\n datadir (xyz)"
}
# Ensure that the package default socket can also be used
# since rpm packages are compiled with a different socket location
# and "mysqlsh --mysql" doesn't read the [client] config
# related to https://github.com/docker-library/mysql/issues/829
mysql_socket_fix() {
local defaultSocket
defaultSocket="$(mysql_get_config 'socket' mysqld --no-defaults)"
if [ "$defaultSocket" != "$SOCKET" ]; then
ln -sfTv "$SOCKET" "$defaultSocket" || :
fi
}
# Do a temporary startup of the MySQL server, for init purposes
docker_temp_server_start() {
if [ "${MYSQL_MAJOR}" = '5.7' ]; then
"$@" --skip-networking --default-time-zone=SYSTEM --socket="${SOCKET}" &
mysql_note "Waiting for server startup"
local i
for i in {30..0}; do
# only use the root password if the database has already been initialized
# so that it won't try to fill in a password file when it hasn't been set yet
extraArgs=()
if [ -z "$DATABASE_ALREADY_EXISTS" ]; then
extraArgs+=( '--dont-use-mysql-root-password' )
fi
if docker_process_sql "${extraArgs[@]}" --database=mysql <<<'SELECT 1' &> /dev/null; then
break
fi
sleep 1
done
if [ "$i" = 0 ]; then
mysql_error "Unable to start server."
fi
else
# For 5.7+ the server is ready for use as soon as startup command unblocks
if ! "$@" --daemonize --skip-networking --default-time-zone=SYSTEM --socket="${SOCKET}"; then
mysql_error "Unable to start server."
fi
fi
}
# Stop the server. When using a local socket file mysqladmin will block until
# the shutdown is complete.
docker_temp_server_stop() {
if ! mysqladmin --defaults-extra-file=<( _mysql_passfile ) shutdown -uroot --socket="${SOCKET}"; then
mysql_error "Unable to shut down server."
fi
}
# Verify that the minimally required password settings are set for new databases.
docker_verify_minimum_env() {
if [ -z "$MYSQL_ROOT_PASSWORD" -a -z "$MYSQL_ALLOW_EMPTY_PASSWORD" -a -z "$MYSQL_RANDOM_ROOT_PASSWORD" ]; then
mysql_error <<-'EOF'
Database is uninitialized and password option is not specified
You need to specify one of the following as an environment variable:
- MYSQL_ROOT_PASSWORD
- MYSQL_ALLOW_EMPTY_PASSWORD
- MYSQL_RANDOM_ROOT_PASSWORD
EOF
fi
# This will prevent the CREATE USER from failing (and thus exiting with a half-initialized database)
if [ "$MYSQL_USER" = 'root' ]; then
mysql_error <<-'EOF'
MYSQL_USER="root", MYSQL_USER and MYSQL_PASSWORD are for configuring a regular user and cannot be used for the root user
Remove MYSQL_USER="root" and use one of the following to control the root user password:
- MYSQL_ROOT_PASSWORD
- MYSQL_ALLOW_EMPTY_PASSWORD
- MYSQL_RANDOM_ROOT_PASSWORD
EOF
fi
# warn when missing one of MYSQL_USER or MYSQL_PASSWORD
if [ -n "$MYSQL_USER" ] && [ -z "$MYSQL_PASSWORD" ]; then
mysql_warn 'MYSQL_USER specified, but missing MYSQL_PASSWORD; MYSQL_USER will not be created'
elif [ -z "$MYSQL_USER" ] && [ -n "$MYSQL_PASSWORD" ]; then
mysql_warn 'MYSQL_PASSWORD specified, but missing MYSQL_USER; MYSQL_PASSWORD will be ignored'
fi
}
# creates folders for the database
# also ensures permission for user mysql of run as root
docker_create_db_directories() {
local user; user="$(id -u)"
local -A dirs=( ["$DATADIR"]=1 )
local dir
dir="$(dirname "$SOCKET")"
dirs["$dir"]=1
# "datadir" and "socket" are already handled above (since they were already queried previously)
local conf
for conf in \
general-log-file \
keyring_file_data \
pid-file \
secure-file-priv \
slow-query-log-file \
; do
dir="$(mysql_get_config "$conf" "$@")"
# skip empty values
if [ -z "$dir" ] || [ "$dir" = 'NULL' ]; then
continue
fi
case "$conf" in
secure-file-priv)
# already points at a directory
;;
*)
# other config options point at a file, but we need the directory
dir="$(dirname "$dir")"
;;
esac
dirs["$dir"]=1
done
mkdir -p "${!dirs[@]}"
if [ "$user" = "0" ]; then
# this will cause less disk access than `chown -R`
find "${!dirs[@]}" \! -user mysql -exec chown --no-dereference mysql '{}' +
fi
}
# initializes the database directory
docker_init_database_dir() {
mysql_note "Initializing database files"
"$@" --initialize-insecure --default-time-zone=SYSTEM
mysql_note "Database files initialized"
}
# Loads various settings that are used elsewhere in the script
# This should be called after mysql_check_config, but before any other functions
docker_setup_env() {
# Get config
declare -g DATADIR SOCKET
DATADIR="$(mysql_get_config 'datadir' "$@")"
SOCKET="$(mysql_get_config 'socket' "$@")"
# Initialize values that might be stored in a file
file_env 'MYSQL_ROOT_HOST' '%'
file_env 'MYSQL_DATABASE'
file_env 'MYSQL_USER'
file_env 'MYSQL_PASSWORD'
file_env 'MYSQL_ROOT_PASSWORD'
declare -g DATABASE_ALREADY_EXISTS
if [ -d "$DATADIR/mysql" ]; then
DATABASE_ALREADY_EXISTS='true'
fi
}
# Execute sql script, passed via stdin
# usage: docker_process_sql [--dont-use-mysql-root-password] [mysql-cli-args]
# ie: docker_process_sql --database=mydb <<<'INSERT ...'
# ie: docker_process_sql --dont-use-mysql-root-password --database=mydb <my-file.sql
docker_process_sql() {
passfileArgs=()
if [ '--dont-use-mysql-root-password' = "$1" ]; then
passfileArgs+=( "$1" )
shift
fi
# args sent in can override this db, since they will be later in the command
if [ -n "$MYSQL_DATABASE" ]; then
set -- --database="$MYSQL_DATABASE" "$@"
fi
mysql --defaults-extra-file=<( _mysql_passfile "${passfileArgs[@]}") --protocol=socket -uroot -hlocalhost --socket="${SOCKET}" --comments "$@"
}
# Initializes database with timezone info and root password, plus optional extra db/user
docker_setup_db() {
# Load timezone info into database
if [ -z "$MYSQL_INITDB_SKIP_TZINFO" ]; then
# sed is for https://bugs.mysql.com/bug.php?id=20545
mysql_tzinfo_to_sql /usr/share/zoneinfo \
| sed 's/Local time zone must be set--see zic manual page/FCTY/' \
| docker_process_sql --dont-use-mysql-root-password --database=mysql
# tell docker_process_sql to not use MYSQL_ROOT_PASSWORD since it is not set yet
fi
# Generate random root password
if [ -n "$MYSQL_RANDOM_ROOT_PASSWORD" ]; then
MYSQL_ROOT_PASSWORD="$(openssl rand -base64 24)"; export MYSQL_ROOT_PASSWORD
mysql_note "GENERATED ROOT PASSWORD: $MYSQL_ROOT_PASSWORD"
fi
# Sets root password and creates root users for non-localhost hosts
local rootCreate=
# default root to listen for connections from anywhere
if [ -n "$MYSQL_ROOT_HOST" ] && [ "$MYSQL_ROOT_HOST" != 'localhost' ]; then
# no, we don't care if read finds a terminating character in this heredoc
# https://unix.stackexchange.com/questions/265149/why-is-set-o-errexit-breaking-this-read-heredoc-expression/265151#265151
read -r -d '' rootCreate <<-EOSQL || true
CREATE USER 'root'@'${MYSQL_ROOT_HOST}' IDENTIFIED BY '${MYSQL_ROOT_PASSWORD}' ;
GRANT ALL ON *.* TO 'root'@'${MYSQL_ROOT_HOST}' WITH GRANT OPTION ;
EOSQL
fi
local passwordSet=
# no, we don't care if read finds a terminating character in this heredoc (see above)
read -r -d '' passwordSet <<-EOSQL || true
ALTER USER 'root'@'localhost' IDENTIFIED BY '${MYSQL_ROOT_PASSWORD}' ;
EOSQL
# tell docker_process_sql to not use MYSQL_ROOT_PASSWORD since it is just now being set
docker_process_sql --dont-use-mysql-root-password --database=mysql <<-EOSQL
-- What's done in this file shouldn't be replicated
-- or products like mysql-fabric won't work
SET @@SESSION.SQL_LOG_BIN=0;
${passwordSet}
GRANT ALL ON *.* TO 'root'@'localhost' WITH GRANT OPTION ;
FLUSH PRIVILEGES ;
${rootCreate}
DROP DATABASE IF EXISTS test ;
EOSQL
# Creates a custom database and user if specified
if [ -n "$MYSQL_DATABASE" ]; then
mysql_note "Creating database ${MYSQL_DATABASE}"
docker_process_sql --database=mysql <<<"CREATE DATABASE IF NOT EXISTS \`$MYSQL_DATABASE\` ;"
fi
if [ -n "$MYSQL_USER" ] && [ -n "$MYSQL_PASSWORD" ]; then
mysql_note "Creating user ${MYSQL_USER}"
docker_process_sql --database=mysql <<<"CREATE USER '$MYSQL_USER'@'%' IDENTIFIED BY '$MYSQL_PASSWORD' ;"
if [ -n "$MYSQL_DATABASE" ]; then
mysql_note "Giving user ${MYSQL_USER} access to schema ${MYSQL_DATABASE}"
docker_process_sql --database=mysql <<<"GRANT ALL ON \`${MYSQL_DATABASE//_/\\_}\`.* TO '$MYSQL_USER'@'%' ;"
fi
fi
}
_mysql_passfile() {
# echo the password to the "file" the client uses
# the client command will use process substitution to create a file on the fly
# ie: --defaults-extra-file=<( _mysql_passfile )
if [ '--dont-use-mysql-root-password' != "$1" ] && [ -n "$MYSQL_ROOT_PASSWORD" ]; then
cat <<-EOF
[client]
password="${MYSQL_ROOT_PASSWORD}"
EOF
fi
}
# Mark root user as expired so the password must be changed before anything
# else can be done (only supported for 5.6+)
mysql_expire_root_user() {
if [ -n "$MYSQL_ONETIME_PASSWORD" ]; then
docker_process_sql --database=mysql <<-EOSQL
ALTER USER 'root'@'%' PASSWORD EXPIRE;
EOSQL
fi
}
# check arguments for an option that would cause mysqld to stop
# return true if there is one
_mysql_want_help() {
local arg
for arg; do
case "$arg" in
-'?'|--help|--print-defaults|-V|--version)
return 0
;;
esac
done
return 1
}
_main() {
# if command starts with an option, prepend mysqld
if [ "${1:0:1}" = '-' ]; then
set -- mysqld "$@"
fi
# skip setup if they aren't running mysqld or want an option that stops mysqld
if [ "$1" = 'mysqld' ] && ! _mysql_want_help "$@"; then
mysql_note "Entrypoint script for MySQL Server ${MYSQL_VERSION} started."
mysql_check_config "$@"
# Load various environment variables
docker_setup_env "$@"
docker_create_db_directories "$@"
# If container is started as root user, restart as dedicated mysql user
if [ "$(id -u)" = "0" ]; then
mysql_note "Switching to dedicated user 'mysql'"
exec gosu mysql "$BASH_SOURCE" "$@"
fi
# there's no database, so it needs to be initialized
if [ -z "$DATABASE_ALREADY_EXISTS" ]; then
docker_verify_minimum_env
# check dir permissions to reduce likelihood of half-initialized database
ls /docker-entrypoint-initdb.d/ > /dev/null
docker_init_database_dir "$@"
mysql_note "Starting temporary server"
docker_temp_server_start "$@"
mysql_note "Temporary server started."
mysql_socket_fix
docker_setup_db
docker_process_init_files /docker-entrypoint-initdb.d/*
mysql_expire_root_user
mysql_note "Stopping temporary server"
docker_temp_server_stop
mysql_note "Temporary server stopped"
echo
mysql_note "MySQL init process done. Ready for start up."
echo
else
mysql_socket_fix
fi
fi
exec "$@"
}
# If we are sourced from elsewhere, don't perform any further actions
if ! _is_sourced; then
_main "$@"
fi
3、编写-init.sql-Nacos
/*
* Copyright 1999-2018 Alibaba Group Holding Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/******************************************/
/* 数据库全名 = nacos_config */
/* 表名称 = config_info */
/******************************************/
CREATE TABLE `config_info` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`data_id` varchar(255) NOT NULL COMMENT 'data_id',
`group_id` varchar(128) DEFAULT NULL,
`content` longtext NOT NULL COMMENT 'content',
`md5` varchar(32) DEFAULT NULL COMMENT 'md5',
`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
`src_user` text COMMENT 'source user',
`src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
`app_name` varchar(128) DEFAULT NULL,
`tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
`c_desc` varchar(256) DEFAULT NULL,
`c_use` varchar(64) DEFAULT NULL,
`effect` varchar(64) DEFAULT NULL,
`type` varchar(64) DEFAULT NULL,
`c_schema` text,
`encrypted_data_key` text NOT NULL COMMENT '秘钥',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_configinfo_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info';
/******************************************/
/* 数据库全名 = nacos_config */
/* 表名称 = config_info_aggr */
/******************************************/
CREATE TABLE `config_info_aggr` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`data_id` varchar(255) NOT NULL COMMENT 'data_id',
`group_id` varchar(128) NOT NULL COMMENT 'group_id',
`datum_id` varchar(255) NOT NULL COMMENT 'datum_id',
`content` longtext NOT NULL COMMENT '内容',
`gmt_modified` datetime NOT NULL COMMENT '修改时间',
`app_name` varchar(128) DEFAULT NULL,
`tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_configinfoaggr_datagrouptenantdatum` (`data_id`,`group_id`,`tenant_id`,`datum_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='增加租户字段';
/******************************************/
/* 数据库全名 = nacos_config */
/* 表名称 = config_info_beta */
/******************************************/
CREATE TABLE `config_info_beta` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`data_id` varchar(255) NOT NULL COMMENT 'data_id',
`group_id` varchar(128) NOT NULL COMMENT 'group_id',
`app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
`content` longtext NOT NULL COMMENT 'content',
`beta_ips` varchar(1024) DEFAULT NULL COMMENT 'betaIps',
`md5` varchar(32) DEFAULT NULL COMMENT 'md5',
`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
`src_user` text COMMENT 'source user',
`src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
`tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
`encrypted_data_key` text NOT NULL COMMENT '秘钥',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_configinfobeta_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_beta';
/******************************************/
/* 数据库全名 = nacos_config */
/* 表名称 = config_info_tag */
/******************************************/
CREATE TABLE `config_info_tag` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`data_id` varchar(255) NOT NULL COMMENT 'data_id',
`group_id` varchar(128) NOT NULL COMMENT 'group_id',
`tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',
`tag_id` varchar(128) NOT NULL COMMENT 'tag_id',
`app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
`content` longtext NOT NULL COMMENT 'content',
`md5` varchar(32) DEFAULT NULL COMMENT 'md5',
`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
`src_user` text COMMENT 'source user',
`src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_configinfotag_datagrouptenanttag` (`data_id`,`group_id`,`tenant_id`,`tag_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_tag';
/******************************************/
/* 数据库全名 = nacos_config */
/* 表名称 = config_tags_relation */
/******************************************/
CREATE TABLE `config_tags_relation` (
`id` bigint(20) NOT NULL COMMENT 'id',
`tag_name` varchar(128) NOT NULL COMMENT 'tag_name',
`tag_type` varchar(64) DEFAULT NULL COMMENT 'tag_type',
`data_id` varchar(255) NOT NULL COMMENT 'data_id',
`group_id` varchar(128) NOT NULL COMMENT 'group_id',
`tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',
`nid` bigint(20) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`nid`),
UNIQUE KEY `uk_configtagrelation_configidtag` (`id`,`tag_name`,`tag_type`),
KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_tag_relation';
/******************************************/
/* 数据库全名 = nacos_config */
/* 表名称 = group_capacity */
/******************************************/
CREATE TABLE `group_capacity` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`group_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Group ID,空字符表示整个集群',
`quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
`usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
`max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
`max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数,,0表示使用默认值',
`max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
`max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',
`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_group_id` (`group_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='集群、各Group容量信息表';
/******************************************/
/* 数据库全名 = nacos_config */
/* 表名称 = his_config_info */
/******************************************/
CREATE TABLE `his_config_info` (
`id` bigint(20) unsigned NOT NULL,
`nid` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`data_id` varchar(255) NOT NULL,
`group_id` varchar(128) NOT NULL,
`app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
`content` longtext NOT NULL,
`md5` varchar(32) DEFAULT NULL,
`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`src_user` text,
`src_ip` varchar(50) DEFAULT NULL,
`op_type` char(10) DEFAULT NULL,
`tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
`encrypted_data_key` text NOT NULL COMMENT '秘钥',
PRIMARY KEY (`nid`),
KEY `idx_gmt_create` (`gmt_create`),
KEY `idx_gmt_modified` (`gmt_modified`),
KEY `idx_did` (`data_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='多租户改造';
/******************************************/
/* 数据库全名 = nacos_config */
/* 表名称 = tenant_capacity */
/******************************************/
CREATE TABLE `tenant_capacity` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`tenant_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Tenant ID',
`quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
`usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
`max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
`max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数',
`max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
`max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',
`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='租户容量信息表';
CREATE TABLE `tenant_info` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`kp` varchar(128) NOT NULL COMMENT 'kp',
`tenant_id` varchar(128) default '' COMMENT 'tenant_id',
`tenant_name` varchar(128) default '' COMMENT 'tenant_name',
`tenant_desc` varchar(256) DEFAULT NULL COMMENT 'tenant_desc',
`create_source` varchar(32) DEFAULT NULL COMMENT 'create_source',
`gmt_create` bigint(20) NOT NULL COMMENT '创建时间',
`gmt_modified` bigint(20) NOT NULL COMMENT '修改时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_tenant_info_kptenantid` (`kp`,`tenant_id`),
KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='tenant_info';
CREATE TABLE `users` (
`username` varchar(50) NOT NULL PRIMARY KEY,
`password` varchar(500) NOT NULL,
`enabled` boolean NOT NULL
);
CREATE TABLE `roles` (
`username` varchar(50) NOT NULL,
`role` varchar(50) NOT NULL,
UNIQUE INDEX `idx_user_role` (`username` ASC, `role` ASC) USING BTREE
);
CREATE TABLE `permissions` (
`role` varchar(50) NOT NULL,
`resource` varchar(255) NOT NULL,
`action` varchar(8) NOT NULL,
UNIQUE INDEX `uk_role_permission` (`role`,`resource`,`action`) USING BTREE
);
INSERT INTO users (username, password, enabled) VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', TRUE);
INSERT INTO roles (username, role) VALUES ('nacos', 'ROLE_ADMIN');
4、Docker Image Mysql环境变量设置
| 变量名 | 变量值 | 说明 | |---------------------|--------------|--------------| | MYSQL_ROOT_PASSWORD | 123qwe## | mysql root密码 | | MYSQL_DATABASE | nacos_config | mysql数据库名 | | MYSQL_USER | nacos | mysql用户名 | | MYSQL_PASSWORD | 123qwe## | mysql用户密码 | | MYSQL_HOST | % | 指定mysql地址 |
5、Docker 容器配置
6、生成自己的Nacos-mysql 镜像。
6.1构建日志
Deploying 'nacos-mysql Dockerfile: yc-nacos-mysql/dockerfile'…
Building image…
Preparing build context archive…
[==================================================>]5/5 files
Done
Sending build context to Docker daemon…
[==================================================>] 20.40kB
Done
Step 1/20 : FROM oraclelinux:7-slim
---> 506c06ed74d4
Step 2/20 : RUN set -eux; groupadd --system --gid 999 mysql; useradd --system --uid 999 --gid 999 --home-dir /var/lib/mysql --no-create-home mysql
---> Using cache
---> 149cb7eee42f
Step 3/20 : ENV GOSU_VERSION 1.16
---> Using cache
---> d5327d11c477
Step 4/20 : RUN set -eux; arch="$(uname -m)"; case "$arch" in aarch64) gosuArch='arm64' ;; x86_64) gosuArch='amd64' ;; *) echo >&2 "error: unsupported architecture: '$arch'"; exit 1 ;; esac; curl -fL -o /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$gosuArch.asc"; curl -fL -o /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$gosuArch"; export GNUPGHOME="$(mktemp -d)"; gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4; gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu; rm -rf "$GNUPGHOME" /usr/local/bin/gosu.asc; chmod +x /usr/local/bin/gosu; gosu --version; gosu nobody true
---> Using cache
---> 7a10e99cd095
Step 5/20 : RUN set -eux; yum install -y --setopt=skip_missing_names_on_install=False oracle-epel-release-el7; yum install -y --setopt=skip_missing_names_on_install=False bzip2 gzip openssl xz zstd ; yum clean all
---> Using cache
---> 352cd65d9fdb
Step 6/20 : RUN set -eux; key='859BE8D7C586F538430B19C2467B942D3A79BD29'; export GNUPGHOME="$(mktemp -d)"; gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key"; gpg --batch --export --armor "$key" > /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql; rm -rf "$GNUPGHOME"
---> Using cache
---> 5fed7d6e6085
Step 7/20 : ENV MYSQL_MAJOR 5.7
---> Using cache
---> 4cd6aac4a517
Step 8/20 : ENV MYSQL_VERSION 5.7.44-1.el7
---> Using cache
---> d90fb55e1207
Step 9/20 : RUN set -eu; . /etc/os-release; { echo '[mysql5.7-server-minimal]'; echo 'name=MySQL 5.7 Server Minimal'; echo 'enabled=1'; echo "baseurl=https://repo.mysql.com/yum/mysql-5.7-community/docker/el/${VERSION_ID%%[.-]*}/\$basearch/"; echo 'gpgcheck=1'; echo 'gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql'; echo 'module_hotfixes=true'; } | tee /etc/yum.repos.d/mysql-community-minimal.repo
---> Using cache
---> 44966cebfd61
Step 10/20 : RUN set -eux; yum install -y --setopt=skip_missing_names_on_install=False "mysql-community-server-minimal-$MYSQL_VERSION"; yum clean all; grep -F 'socket=/var/lib/mysql/mysql.sock' /etc/my.cnf; sed -i 's!^socket=.*!socket=/var/run/mysqld/mysqld.sock!' /etc/my.cnf; grep -F 'socket=/var/run/mysqld/mysqld.sock' /etc/my.cnf; { echo '[client]'; echo 'socket=/var/run/mysqld/mysqld.sock'; } >> /etc/my.cnf; ! grep -F '!includedir' /etc/my.cnf; { echo; echo '!includedir /etc/mysql/conf.d/'; } >> /etc/my.cnf; mkdir -p /etc/mysql/conf.d; { echo '!includedir /etc/mysql/mysql.conf.d/'; } >> /etc/my.cnf; mkdir -p /etc/mysql/mysql.conf.d; find /etc/my.cnf /etc/mysql/ -name '*.cnf' -print0 | xargs -0 grep -lZE '^(bind-address|log)' | xargs -rt -0 sed -Ei 's/^(bind-address|log)/#&/'; mkdir -p /var/lib/mysql /var/run/mysqld; chown mysql:mysql /var/lib/mysql /var/run/mysqld; chmod 1777 /var/lib/mysql /var/run/mysqld; mkdir /docker-entrypoint-initdb.d; mysqld --version; mysql --version
---> Using cache
---> c37be0578163
Step 11/20 : RUN set -eu; . /etc/os-release; { echo '[mysql-tools-community]'; echo 'name=MySQL Tools Community'; echo "baseurl=https://repo.mysql.com/yum/mysql-tools-community/el/${VERSION_ID%%[.-]*}/\$basearch/"; echo 'enabled=1'; echo 'gpgcheck=1'; echo 'gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql'; echo 'module_hotfixes=true'; } | tee /etc/yum.repos.d/mysql-community-tools.repo
---> Using cache
---> ae4e17896b0f
Step 12/20 : ENV MYSQL_SHELL_VERSION 8.0.35-1.el7
---> Using cache
---> 18872e904b82
Step 13/20 : RUN set -eux; yum install -y --setopt=skip_missing_names_on_install=False "mysql-shell-$MYSQL_SHELL_VERSION"; yum clean all; mysqlsh --version
---> Using cache
---> b6e1f947709b
Step 14/20 : VOLUME /var/lib/mysql
---> Using cache
---> 65bbe7d888a0
Step 15/20 : COPY init.sql /docker-entrypoint-initdb.d/
---> Using cache
---> 8fad45952ad1
Step 16/20 : COPY docker-entrypoint.sh /usr/local/bin/
---> Using cache
---> 05b7fd188a49
Step 17/20 : RUN ln -s usr/local/bin/docker-entrypoint.sh /entrypoint.sh # backwards compat
---> Using cache
---> dc870e8a34f6
Step 18/20 : ENTRYPOINT ["docker-entrypoint.sh"]
---> Using cache
---> 2b3914887fbc
Step 19/20 : EXPOSE 3306 33060
---> Using cache
---> 47f937fa6071
Step 20/20 : CMD ["mysqld"]
---> Using cache
---> 57b9eff3e8c9
Successfully built 57b9eff3e8c9
Successfully tagged nacos-mysql:latest
Creating container…
Container Id: dd10d3c555977a800d684247bbf2fde7aedc1ca8fc466f12eb8623633a0a9c98
Container name: 'nacos-mysql'
Starting container 'nacos-mysql'
'nacos-mysql Dockerfile: yc-nacos-mysql/dockerfile' has been deployed successfully.
6.2容器启动日志
2023-12-06T05:45:59.858850844Z 2023-12-06 05:45:59+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.44-1.el7 started.
2023-12-06T05:46:00.013146971Z 2023-12-06 05:46:00+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
2023-12-06T05:46:00.019866125Z 2023-12-06 05:46:00+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.44-1.el7 started.
2023-12-06T05:46:00.126593631Z 2023-12-06 05:46:00+00:00 [Note] [Entrypoint]: Initializing database files
2023-12-06T05:46:00.135671104Z 2023-12-06T05:46:00.133897Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2023-12-06T05:46:00.260745583Z 2023-12-06T05:46:00.260279Z 0 [Warning] InnoDB: New log files created, LSN=45790
2023-12-06T05:46:00.294105943Z 2023-12-06T05:46:00.293695Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2023-12-06T05:46:00.356578609Z 2023-12-06T05:46:00.355176Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: bc31cd01-93fa-11ee-89cc-0242ac110002.
2023-12-06T05:46:00.362412649Z 2023-12-06T05:46:00.361790Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2023-12-06T05:46:00.419515051Z 2023-12-06T05:46:00.419178Z 0 [Warning] A deprecated TLS version TLSv1 is enabled. Please use TLSv1.2 or higher.
2023-12-06T05:46:00.419568578Z 2023-12-06T05:46:00.419217Z 0 [Warning] A deprecated TLS version TLSv1.1 is enabled. Please use TLSv1.2 or higher.
2023-12-06T05:46:00.419804886Z 2023-12-06T05:46:00.419534Z 0 [Warning] CA certificate ca.pem is self signed.
2023-12-06T05:46:00.451283525Z 2023-12-06T05:46:00.450838Z 1 [Warning] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.
2023-12-06T05:46:03.297442118Z 2023-12-06 05:46:03+00:00 [Note] [Entrypoint]: Database files initialized
2023-12-06T05:46:03.298176479Z 2023-12-06 05:46:03+00:00 [Note] [Entrypoint]: Starting temporary server
2023-12-06T05:46:03.299256255Z 2023-12-06 05:46:03+00:00 [Note] [Entrypoint]: Waiting for server startup
2023-12-06T05:46:03.462935561Z 2023-12-06T05:46:03.459918Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2023-12-06T05:46:03.462985482Z 2023-12-06T05:46:03.460960Z 0 [Note] mysqld (mysqld 5.7.44) starting as process 125 ...
2023-12-06T05:46:03.463528586Z 2023-12-06T05:46:03.463191Z 0 [Note] InnoDB: PUNCH HOLE support available
2023-12-06T05:46:03.463551208Z 2023-12-06T05:46:03.463271Z 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2023-12-06T05:46:03.463553575Z 2023-12-06T05:46:03.463323Z 0 [Note] InnoDB: Uses event mutexes
2023-12-06T05:46:03.463555104Z 2023-12-06T05:46:03.463328Z 0 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier
2023-12-06T05:46:03.463556403Z 2023-12-06T05:46:03.463330Z 0 [Note] InnoDB: Compressed tables use zlib 1.2.13
2023-12-06T05:46:03.463557670Z 2023-12-06T05:46:03.463333Z 0 [Note] InnoDB: Using Linux native AIO
2023-12-06T05:46:03.464065857Z 2023-12-06T05:46:03.463869Z 0 [Note] InnoDB: Number of pools: 1
2023-12-06T05:46:03.464794894Z 2023-12-06T05:46:03.464571Z 0 [Note] InnoDB: Using CPU crc32 instructions
2023-12-06T05:46:03.466197499Z 2023-12-06T05:46:03.465994Z 0 [Note] InnoDB: Initializing buffer pool, total size = 128M, instances = 1, chunk size = 128M
2023-12-06T05:46:03.470714277Z 2023-12-06T05:46:03.470473Z 0 [Note] InnoDB: Completed initialization of buffer pool
2023-12-06T05:46:03.472201823Z 2023-12-06T05:46:03.471995Z 0 [Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority().
2023-12-06T05:46:03.483721101Z 2023-12-06T05:46:03.483319Z 0 [Note] InnoDB: Highest supported file format is Barracuda.
2023-12-06T05:46:03.491312845Z 2023-12-06T05:46:03.490953Z 0 [Note] InnoDB: Creating shared tablespace for temporary tables
2023-12-06T05:46:03.491365104Z 2023-12-06T05:46:03.491031Z 0 [Note] InnoDB: Setting file './ibtmp1' size to 12 MB. Physically writing the file full; Please wait ...
2023-12-06T05:46:03.502096902Z 2023-12-06T05:46:03.501684Z 0 [Note] InnoDB: File './ibtmp1' size is now 12 MB.
2023-12-06T05:46:03.502374854Z 2023-12-06T05:46:03.502086Z 0 [Note] InnoDB: 96 redo rollback segment(s) found. 96 redo rollback segment(s) are active.
2023-12-06T05:46:03.502388281Z 2023-12-06T05:46:03.502106Z 0 [Note] InnoDB: 32 non-redo rollback segment(s) are active.
2023-12-06T05:46:03.503470624Z 2023-12-06T05:46:03.503297Z 0 [Note] InnoDB: 5.7.44 started; log sequence number 2768291
2023-12-06T05:46:03.504242888Z 2023-12-06T05:46:03.503949Z 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
2023-12-06T05:46:03.504285805Z 2023-12-06T05:46:03.504094Z 0 [Note] Plugin 'FEDERATED' is disabled.
2023-12-06T05:46:03.505556081Z 2023-12-06T05:46:03.505181Z 0 [Note] InnoDB: Buffer pool(s) load completed at 231206 5:46:03
2023-12-06T05:46:03.508863825Z 2023-12-06T05:46:03.508512Z 0 [Note] Found ca.pem, server-cert.pem and server-key.pem in data directory. Trying to enable SSL support using them.
2023-12-06T05:46:03.508892191Z 2023-12-06T05:46:03.508550Z 0 [Note] Skipping generation of SSL certificates as certificate files are present in data directory.
2023-12-06T05:46:03.508895897Z 2023-12-06T05:46:03.508553Z 0 [Warning] A deprecated TLS version TLSv1 is enabled. Please use TLSv1.2 or higher.
2023-12-06T05:46:03.508898452Z 2023-12-06T05:46:03.508555Z 0 [Warning] A deprecated TLS version TLSv1.1 is enabled. Please use TLSv1.2 or higher.
2023-12-06T05:46:03.509275328Z 2023-12-06T05:46:03.509045Z 0 [Warning] CA certificate ca.pem is self signed.
2023-12-06T05:46:03.509308392Z 2023-12-06T05:46:03.509110Z 0 [Note] Skipping generation of RSA key pair as key files are present in data directory.
2023-12-06T05:46:03.512940944Z 2023-12-06T05:46:03.512660Z 0 [Warning] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory.
2023-12-06T05:46:03.516970335Z 2023-12-06T05:46:03.516502Z 0 [Note] Event Scheduler: Loaded 0 events
2023-12-06T05:46:03.517159352Z 2023-12-06T05:46:03.516908Z 0 [Note] mysqld: ready for connections.
2023-12-06T05:46:03.517165340Z Version: '5.7.44' socket: '/var/run/mysqld/mysqld.sock' port: 0 MySQL Community Server (GPL)
2023-12-06T05:46:04.313414008Z 2023-12-06 05:46:04+00:00 [Note] [Entrypoint]: Temporary server started.
2023-12-06T05:46:04.327188808Z '/var/lib/mysql/mysql.sock' -> '/var/run/mysqld/mysqld.sock'
2023-12-06T05:46:04.334307518Z 2023-12-06T05:46:04.333900Z 3 [Note] InnoDB: Stopping purge
2023-12-06T05:46:04.339950351Z 2023-12-06T05:46:04.339762Z 3 [Note] InnoDB: Resuming purge
2023-12-06T05:46:04.341347902Z 2023-12-06T05:46:04.341141Z 3 [Note] InnoDB: Stopping purge
2023-12-06T05:46:04.344824986Z 2023-12-06T05:46:04.344560Z 3 [Note] InnoDB: Resuming purge
2023-12-06T05:46:04.347857179Z 2023-12-06T05:46:04.347609Z 3 [Note] InnoDB: Stopping purge
2023-12-06T05:46:04.352620331Z 2023-12-06T05:46:04.352344Z 3 [Note] InnoDB: Resuming purge
2023-12-06T05:46:04.353773905Z 2023-12-06T05:46:04.353578Z 3 [Note] InnoDB: Stopping purge
2023-12-06T05:46:04.358259937Z 2023-12-06T05:46:04.358037Z 3 [Note] InnoDB: Resuming purge
2023-12-06T05:46:04.839703139Z Warning: Unable to load '/usr/share/zoneinfo/iso3166.tab' as time zone. Skipping it.
2023-12-06T05:46:04.839729029Z Warning: Unable to load '/usr/share/zoneinfo/leapseconds' as time zone. Skipping it.
2023-12-06T05:46:05.732274102Z Warning: Unable to load '/usr/share/zoneinfo/tzdata.zi' as time zone. Skipping it.
2023-12-06T05:46:05.732316028Z Warning: Unable to load '/usr/share/zoneinfo/zone.tab' as time zone. Skipping it.
2023-12-06T05:46:05.732318519Z Warning: Unable to load '/usr/share/zoneinfo/zone1970.tab' as time zone. Skipping it.
2023-12-06T05:46:05.784854385Z 2023-12-06 05:46:05+00:00 [Note] [Entrypoint]: Creating database nacos_config
2023-12-06T05:46:05.790153334Z 2023-12-06 05:46:05+00:00 [Note] [Entrypoint]: Creating user nacos
2023-12-06T05:46:05.796019216Z 2023-12-06 05:46:05+00:00 [Note] [Entrypoint]: Giving user nacos access to schema nacos_config
2023-12-06T05:46:05.800292086Z
2023-12-06T05:46:05.800816923Z 2023-12-06 05:46:05+00:00 [Note] [Entrypoint]: /usr/local/bin/docker-entrypoint.sh: running /docker-entrypoint-initdb.d/init.sql
2023-12-06T05:46:06.141703007Z
2023-12-06T05:46:06.141759931Z
2023-12-06T05:46:06.142746681Z 2023-12-06 05:46:06+00:00 [Note] [Entrypoint]: Stopping temporary server
2023-12-06T05:46:06.147604797Z 2023-12-06T05:46:06.147171Z 0 [Note] Giving 0 client threads a chance to die gracefully
2023-12-06T05:46:06.147625861Z 2023-12-06T05:46:06.147219Z 0 [Note] Shutting down slave threads
2023-12-06T05:46:06.147627525Z 2023-12-06T05:46:06.147225Z 0 [Note] Forcefully disconnecting 0 remaining clients
2023-12-06T05:46:06.147628812Z 2023-12-06T05:46:06.147291Z 0 [Note] Event Scheduler: Purging the queue. 0 events
2023-12-06T05:46:06.147639845Z 2023-12-06T05:46:06.147344Z 0 [Note] Binlog end
2023-12-06T05:46:06.148341755Z 2023-12-06T05:46:06.148124Z 0 [Note] Shutting down plugin 'ngram'
2023-12-06T05:46:06.148349018Z 2023-12-06T05:46:06.148145Z 0 [Note] Shutting down plugin 'partition'
2023-12-06T05:46:06.148350578Z 2023-12-06T05:46:06.148148Z 0 [Note] Shutting down plugin 'BLACKHOLE'
2023-12-06T05:46:06.148351830Z 2023-12-06T05:46:06.148150Z 0 [Note] Shutting down plugin 'ARCHIVE'
2023-12-06T05:46:06.148353114Z 2023-12-06T05:46:06.148176Z 0 [Note] Shutting down plugin 'PERFORMANCE_SCHEMA'
2023-12-06T05:46:06.148354355Z 2023-12-06T05:46:06.148194Z 0 [Note] Shutting down plugin 'MRG_MYISAM'
2023-12-06T05:46:06.148355563Z 2023-12-06T05:46:06.148206Z 0 [Note] Shutting down plugin 'MyISAM'
2023-12-06T05:46:06.148356767Z 2023-12-06T05:46:06.148212Z 0 [Note] Shutting down plugin 'INNODB_SYS_VIRTUAL'
2023-12-06T05:46:06.148358000Z 2023-12-06T05:46:06.148214Z 0 [Note] Shutting down plugin 'INNODB_SYS_DATAFILES'
2023-12-06T05:46:06.148359261Z 2023-12-06T05:46:06.148216Z 0 [Note] Shutting down plugin 'INNODB_SYS_TABLESPACES'
2023-12-06T05:46:06.148360503Z 2023-12-06T05:46:06.148216Z 0 [Note] Shutting down plugin 'INNODB_SYS_FOREIGN_COLS'
2023-12-06T05:46:06.148361722Z 2023-12-06T05:46:06.148217Z 0 [Note] Shutting down plugin 'INNODB_SYS_FOREIGN'
2023-12-06T05:46:06.148362944Z 2023-12-06T05:46:06.148229Z 0 [Note] Shutting down plugin 'INNODB_SYS_FIELDS'
2023-12-06T05:46:06.148364164Z 2023-12-06T05:46:06.148230Z 0 [Note] Shutting down plugin 'INNODB_SYS_COLUMNS'
2023-12-06T05:46:06.148365364Z 2023-12-06T05:46:06.148232Z 0 [Note] Shutting down plugin 'INNODB_SYS_INDEXES'
2023-12-06T05:46:06.148366568Z 2023-12-06T05:46:06.148233Z 0 [Note] Shutting down plugin 'INNODB_SYS_TABLESTATS'
2023-12-06T05:46:06.148367786Z 2023-12-06T05:46:06.148234Z 0 [Note] Shutting down plugin 'INNODB_SYS_TABLES'
2023-12-06T05:46:06.148368984Z 2023-12-06T05:46:06.148236Z 0 [Note] Shutting down plugin 'INNODB_FT_INDEX_TABLE'
2023-12-06T05:46:06.148370209Z 2023-12-06T05:46:06.148237Z 0 [Note] Shutting down plugin 'INNODB_FT_INDEX_CACHE'
2023-12-06T05:46:06.148371418Z 2023-12-06T05:46:06.148238Z 0 [Note] Shutting down plugin 'INNODB_FT_CONFIG'
2023-12-06T05:46:06.148372614Z 2023-12-06T05:46:06.148239Z 0 [Note] Shutting down plugin 'INNODB_FT_BEING_DELETED'
2023-12-06T05:46:06.148373865Z 2023-12-06T05:46:06.148239Z 0 [Note] Shutting down plugin 'INNODB_FT_DELETED'
2023-12-06T05:46:06.148375060Z 2023-12-06T05:46:06.148240Z 0 [Note] Shutting down plugin 'INNODB_FT_DEFAULT_STOPWORD'
2023-12-06T05:46:06.148376342Z 2023-12-06T05:46:06.148242Z 0 [Note] Shutting down plugin 'INNODB_METRICS'
2023-12-06T05:46:06.148377578Z 2023-12-06T05:46:06.148243Z 0 [Note] Shutting down plugin 'INNODB_TEMP_TABLE_INFO'
2023-12-06T05:46:06.148379075Z 2023-12-06T05:46:06.148245Z 0 [Note] Shutting down plugin 'INNODB_BUFFER_POOL_STATS'
2023-12-06T05:46:06.148384367Z 2023-12-06T05:46:06.148246Z 0 [Note] Shutting down plugin 'INNODB_BUFFER_PAGE_LRU'
2023-12-06T05:46:06.148385623Z 2023-12-06T05:46:06.148256Z 0 [Note] Shutting down plugin 'INNODB_BUFFER_PAGE'
2023-12-06T05:46:06.148386824Z 2023-12-06T05:46:06.148258Z 0 [Note] Shutting down plugin 'INNODB_CMP_PER_INDEX_RESET'
2023-12-06T05:46:06.148388026Z 2023-12-06T05:46:06.148259Z 0 [Note] Shutting down plugin 'INNODB_CMP_PER_INDEX'
2023-12-06T05:46:06.148398675Z 2023-12-06T05:46:06.148261Z 0 [Note] Shutting down plugin 'INNODB_CMPMEM_RESET'
2023-12-06T05:46:06.148400306Z 2023-12-06T05:46:06.148262Z 0 [Note] Shutting down plugin 'INNODB_CMPMEM'
2023-12-06T05:46:06.148401569Z 2023-12-06T05:46:06.148264Z 0 [Note] Shutting down plugin 'INNODB_CMP_RESET'
2023-12-06T05:46:06.148402942Z 2023-12-06T05:46:06.148265Z 0 [Note] Shutting down plugin 'INNODB_CMP'
2023-12-06T05:46:06.148404333Z 2023-12-06T05:46:06.148266Z 0 [Note] Shutting down plugin 'INNODB_LOCK_WAITS'
2023-12-06T05:46:06.148405692Z 2023-12-06T05:46:06.148267Z 0 [Note] Shutting down plugin 'INNODB_LOCKS'
2023-12-06T05:46:06.148406897Z 2023-12-06T05:46:06.148268Z 0 [Note] Shutting down plugin 'INNODB_TRX'
2023-12-06T05:46:06.148408134Z 2023-12-06T05:46:06.148271Z 0 [Note] Shutting down plugin 'InnoDB'
2023-12-06T05:46:06.148491909Z 2023-12-06T05:46:06.148332Z 0 [Note] InnoDB: FTS optimize thread exiting.
2023-12-06T05:46:06.148591762Z 2023-12-06T05:46:06.148494Z 0 [Note] InnoDB: Starting shutdown...
2023-12-06T05:46:06.249703464Z 2023-12-06T05:46:06.248839Z 0 [Note] InnoDB: Dumping buffer pool(s) to /var/lib/mysql/ib_buffer_pool
2023-12-06T05:46:06.249991716Z 2023-12-06T05:46:06.249604Z 0 [Note] InnoDB: Buffer pool(s) dump completed at 231206 5:46:06
2023-12-06T05:46:07.475307343Z 2023-12-06T05:46:07.474510Z 0 [Note] InnoDB: Shutdown completed; log sequence number 12476314
2023-12-06T05:46:07.478384761Z 2023-12-06T05:46:07.477242Z 0 [Note] InnoDB: Removed temporary tablespace data file: "ibtmp1"
2023-12-06T05:46:07.478424799Z 2023-12-06T05:46:07.477340Z 0 [Note] Shutting down plugin 'MEMORY'
2023-12-06T05:46:07.478431159Z 2023-12-06T05:46:07.477350Z 0 [Note] Shutting down plugin 'CSV'
2023-12-06T05:46:07.478436486Z 2023-12-06T05:46:07.477358Z 0 [Note] Shutting down plugin 'sha256_password'
2023-12-06T05:46:07.478440418Z 2023-12-06T05:46:07.477362Z 0 [Note] Shutting down plugin 'mysql_native_password'
2023-12-06T05:46:07.478444386Z 2023-12-06T05:46:07.477569Z 0 [Note] Shutting down plugin 'binlog'
2023-12-06T05:46:07.479056032Z 2023-12-06T05:46:07.478513Z 0 [Note] mysqld: Shutdown complete
2023-12-06T05:46:07.479098691Z
2023-12-06T05:46:08.149822396Z 2023-12-06 05:46:08+00:00 [Note] [Entrypoint]: Temporary server stopped
2023-12-06T05:46:08.149942269Z
2023-12-06T05:46:08.150975998Z 2023-12-06 05:46:08+00:00 [Note] [Entrypoint]: MySQL init process done. Ready for start up.
2023-12-06T05:46:08.151025512Z
2023-12-06T05:46:08.306771184Z 2023-12-06T05:46:08.304462Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2023-12-06T05:46:08.306795634Z 2023-12-06T05:46:08.305102Z 0 [Note] mysqld (mysqld 5.7.44) starting as process 1 ...
2023-12-06T05:46:08.307460424Z 2023-12-06T05:46:08.307064Z 0 [Note] InnoDB: PUNCH HOLE support available
2023-12-06T05:46:08.307494374Z 2023-12-06T05:46:08.307095Z 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2023-12-06T05:46:08.307496191Z 2023-12-06T05:46:08.307098Z 0 [Note] InnoDB: Uses event mutexes
2023-12-06T05:46:08.307497487Z 2023-12-06T05:46:08.307100Z 0 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier
2023-12-06T05:46:08.307498810Z 2023-12-06T05:46:08.307101Z 0 [Note] InnoDB: Compressed tables use zlib 1.2.13
2023-12-06T05:46:08.307500146Z 2023-12-06T05:46:08.307103Z 0 [Note] InnoDB: Using Linux native AIO
2023-12-06T05:46:08.307644310Z 2023-12-06T05:46:08.307452Z 0 [Note] InnoDB: Number of pools: 1
2023-12-06T05:46:08.308006677Z 2023-12-06T05:46:08.307771Z 0 [Note] InnoDB: Using CPU crc32 instructions
2023-12-06T05:46:08.309168963Z 2023-12-06T05:46:08.308977Z 0 [Note] InnoDB: Initializing buffer pool, total size = 128M, instances = 1, chunk size = 128M
2023-12-06T05:46:08.313089162Z 2023-12-06T05:46:08.312783Z 0 [Note] InnoDB: Completed initialization of buffer pool
2023-12-06T05:46:08.314296278Z 2023-12-06T05:46:08.314057Z 0 [Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority().
2023-12-06T05:46:08.326071975Z 2023-12-06T05:46:08.325497Z 0 [Note] InnoDB: Highest supported file format is Barracuda.
2023-12-06T05:46:08.334465415Z 2023-12-06T05:46:08.333945Z 0 [Note] InnoDB: Creating shared tablespace for temporary tables
2023-12-06T05:46:08.334504016Z 2023-12-06T05:46:08.334013Z 0 [Note] InnoDB: Setting file './ibtmp1' size to 12 MB. Physically writing the file full; Please wait ...
2023-12-06T05:46:08.343097479Z 2023-12-06T05:46:08.342809Z 0 [Note] InnoDB: File './ibtmp1' size is now 12 MB.
2023-12-06T05:46:08.343683775Z 2023-12-06T05:46:08.343449Z 0 [Note] InnoDB: 96 redo rollback segment(s) found. 96 redo rollback segment(s) are active.
2023-12-06T05:46:08.343707120Z 2023-12-06T05:46:08.343560Z 0 [Note] InnoDB: 32 non-redo rollback segment(s) are active.
2023-12-06T05:46:08.345640054Z 2023-12-06T05:46:08.345320Z 0 [Note] InnoDB: Waiting for purge to start
2023-12-06T05:46:08.396397571Z 2023-12-06T05:46:08.395760Z 0 [Note] InnoDB: 5.7.44 started; log sequence number 12476314
2023-12-06T05:46:08.397269613Z 2023-12-06T05:46:08.396535Z 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
2023-12-06T05:46:08.397307560Z 2023-12-06T05:46:08.396668Z 0 [Note] Plugin 'FEDERATED' is disabled.
2023-12-06T05:46:08.401581557Z 2023-12-06T05:46:08.400882Z 0 [Note] InnoDB: Buffer pool(s) load completed at 231206 5:46:08
2023-12-06T05:46:08.403199282Z 2023-12-06T05:46:08.402828Z 0 [Note] Found ca.pem, server-cert.pem and server-key.pem in data directory. Trying to enable SSL support using them.
2023-12-06T05:46:08.403233531Z 2023-12-06T05:46:08.402860Z 0 [Note] Skipping generation of SSL certificates as certificate files are present in data directory.
2023-12-06T05:46:08.403238522Z 2023-12-06T05:46:08.402864Z 0 [Warning] A deprecated TLS version TLSv1 is enabled. Please use TLSv1.2 or higher.
2023-12-06T05:46:08.403242024Z 2023-12-06T05:46:08.402866Z 0 [Warning] A deprecated TLS version TLSv1.1 is enabled. Please use TLSv1.2 or higher.
2023-12-06T05:46:08.403523965Z 2023-12-06T05:46:08.403229Z 0 [Warning] CA certificate ca.pem is self signed.
2023-12-06T05:46:08.403540814Z 2023-12-06T05:46:08.403267Z 0 [Note] Skipping generation of RSA key pair as key files are present in data directory.
2023-12-06T05:46:08.403623567Z 2023-12-06T05:46:08.403447Z 0 [Note] Server hostname (bind-address): '*'; port: 3306
2023-12-06T05:46:08.403642134Z 2023-12-06T05:46:08.403480Z 0 [Note] IPv6 is available.
2023-12-06T05:46:08.403643883Z 2023-12-06T05:46:08.403489Z 0 [Note] - '::' resolves to '::';
2023-12-06T05:46:08.403645181Z 2023-12-06T05:46:08.403500Z 0 [Note] Server socket created on IP: '::'.
2023-12-06T05:46:08.407799245Z 2023-12-06T05:46:08.407440Z 0 [Warning] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory.
2023-12-06T05:46:08.416167563Z 2023-12-06T05:46:08.415873Z 0 [Note] Event Scheduler: Loaded 0 events
2023-12-06T05:46:08.416560119Z 2023-12-06T05:46:08.416227Z 0 [Note] mysqld: ready for connections.
2023-12-06T05:46:08.416630935Z Version: '5.7.44' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server (GPL)