Jnu2021 发表于 2024-11-20 11:32:43

初始化脚本greatsql-init.sh的参数问题

本帖最后由 Jnu2021 于 2024-11-20 11:35 编辑

在不进行任何改动下,官方docker镜像里生成的mysql相关文件就在 /var/lib/mysql 文件夹下面,
如果DATADIR 环境变量不设置为 /var/lib/mysql, greatsql里的初始化数据库的条件检查就肯定会检查通过吧?


那样如果用了数据卷,那以后每次重新安装条件检查都为true,就会重新启动初始化逻辑导致问题吧?(比如数据卷的数据被重置)

下附greatsql-init.sh里的检查条件:
if [ ! -d "$DATADIR/mysql" ]; then



yejr 发表于 2024-11-20 13:33:10

在 greatsql-init.sh 脚本中,下面这个判断逻辑是用于检查当前容器中的GreatSQL实例是否已完成初始化

      if [ ! -d "$DATADIR/mysql" ]; then   #判断datadir目录下是否有mysql这个"元数据库目录"

判断结果为 true 的话,表示当前容器已有GreatSQL数据库文件,可以直接启动
否则的话,则认为这是个全新容器,需要进行初始化


回到您的问题:那样如果用了数据卷,那以后每次重新安装条件检查都为true,就会重新启动初始化逻辑导致问题吧?(比如数据卷的数据被重置)
====
如果用了数据卷,只有第一次需要初始化,之后除非手动删除数据文件,否则不会重新初始化
您举例的"比如数据卷的数据被重置"属于手动删除数据文件的情况,那自然需要重新初始化

Jnu2021 发表于 2024-11-20 21:30:37

yejr 发表于 2024-11-20 13:33
在 greatsql-init.sh 脚本中,下面这个判断逻辑是用于检查当前容器中的GreatSQL实例是否已完成初始化

判断 ...

我知道为什么条件判断通不过了,因为我是用官方的greatsql镜像启动后重新打包的,
这期间已经初始化过了,所以不会再次初始化。
但现在有有个问题,datadir    = /data/GreatSQL 是判断条件,
我把容器里的 /data/GreatSQL 全部删除,然后重新打包成镜像,应该就可以了吧?但现在直接启动不了了,也没明显的报错
下附启动页面的日志
# docker run -it --name greats greats:latest /bin/bashChecking directory: /var/lib/mysql/mysqlGreatsql init data done.Greatsql check var/lib/mysql: true You specify none of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORDGreatSQL create root@localhost with **EMPTY PASSWORD**Initializing database/bin/bash: --initialize-insecure: invalid optionUsage:/bin/bash ...      /bin/bash script-file ...GNU long options:      --debug      --debugger      --dump-po-strings      --dump-strings      --help      --init-file      --login      --noediting      --noprofile      --norc      --posix      --rcfile      --rpm-requires      --restricted      --verbose      --versionShell options:      -ilrsD or -c command or -O shopt_option         (invocation only)      -abefhkmnptuvxBCHP or -o optionDatabase initializedInitializing certificatesIgnoring -days; not generating a certificateGenerating a RSA private key................+++++.+++++writing new private key to 'ca-key.pem'-----Ignoring -days; not generating a certificateGenerating a RSA private key....................................................................................................+++++...................................................................+++++writing new private key to 'server-key.pem'-----Ignoring -days; not generating a certificateGenerating a RSA private key..........+++++..................+++++writing new private key to 'client-key.pem'-----Certificates initialized/bin/bash: --skip-networking: invalid optionUsage:/bin/bash ...      /bin/bash script-file ...GNU long options:      --debug      --debugger      --dump-po-strings      --dump-strings      --help      --init-file      --login      --noediting      --noprofile      --norc      --posix      --rcfile      --rpm-requires      --restricted      --verbose      --versionShell options:      -ilrsD or -c command or -O shopt_option         (invocation only)      -abefhkmnptuvxBCHP or -o optionMySQL init process in progress...MySQL init process in progress...MySQL init process in progress...MySQL init process failed.

yejr 发表于 2024-11-21 08:39:53

Jnu2021 发表于 2024-11-20 21:30
我知道为什么条件判断通不过了,因为我是用官方的greatsql镜像启动后重新打包的,
这期间已经初始化过了 ...
日志格式乱套了,没法看,也可以先查看容器中 datadir 目录下的 error.log 日志文件详细内容

请提供你的Dockerfile和修改后的greatsql-init.sh脚本内容
页: [1]
查看完整版本: 初始化脚本greatsql-init.sh的参数问题