GreatSQL社区

搜索

[待回复] 初始化脚本greatsql-init.sh的参数问题

75 3 2024-11-20 11:32
本帖最后由 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



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

  1.         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 全部删除,然后重新打包成镜像,应该就可以了吧?但现在直接启动不了了,也没明显的报错
下附启动页面的日志
[root@lavm-5e5kztdhpl Documents]# docker run -it --name greats greats:latest /bin/bashChecking directory: /var/lib/mysql/mysqlGreatsql init data done.Greatsql check var/lib/mysql: true[Note] 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 [GNU long option] [option] ...        /bin/bash [GNU long option] [option] 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 [GNU long option] [option] ...        /bin/bash [GNU long option] [option] 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脚本内容
Jnu2021

6

主题

0

博客

19

贡献

新手上路

Rank: 1

积分
31

合作电话:010-64087828

社区邮箱:greatsql@greatdb.com

社区公众号
社区小助手
QQ群
GMT+8, 2024-12-4 19:14 , Processed in 0.017696 second(s), 12 queries , Redis On.
快速回复 返回顶部 返回列表