初始化脚本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
在 greatsql-init.sh 脚本中,下面这个判断逻辑是用于检查当前容器中的GreatSQL实例是否已完成初始化
if [ ! -d "$DATADIR/mysql" ]; then #判断datadir目录下是否有mysql这个"元数据库目录"
判断结果为 true 的话,表示当前容器已有GreatSQL数据库文件,可以直接启动
否则的话,则认为这是个全新容器,需要进行初始化
回到您的问题:那样如果用了数据卷,那以后每次重新安装条件检查都为true,就会重新启动初始化逻辑导致问题吧?(比如数据卷的数据被重置)
====
如果用了数据卷,只有第一次需要初始化,之后除非手动删除数据文件,否则不会重新初始化
您举例的"比如数据卷的数据被重置"属于手动删除数据文件的情况,那自然需要重新初始化
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.
Jnu2021 发表于 2024-11-20 21:30
我知道为什么条件判断通不过了,因为我是用官方的greatsql镜像启动后重新打包的,
这期间已经初始化过了 ...
日志格式乱套了,没法看,也可以先查看容器中 datadir 目录下的 error.log 日志文件详细内容
请提供你的Dockerfile和修改后的greatsql-init.sh脚本内容
页:
[1]