我想定制一些MariaDB服务器信任(wait_timeout等)。我遵循关于正式码头形象的说明并在我的主机dir config/mariadb中创建了两个.cnf文件,它通过以下卷安装在容器中:
volumes:
- /config/mariadb:/etc/mysql/conf.d:ro
- /config/mariadb:/etc/mysql/mariadb.conf.d:roroot@server:~# ls -l /config/mariadb
total 12
-rwxrwx--- 1 root root 263 Jun 8 13:43 mariadb-finetuning.cnf
-rwxrwx--- 1 root root 367 Jun 8 13:43 mariadb-inno.cnf以下是配置文件:
[mysqld]
# * InnoDB
#
# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
# Read the manual for more InnoDB related options. There are many!
# default_storage_engine = InnoDB
# innodb_buffer_pool_size = 256M
# innodb_log_buffer_size = 8M
# innodb_file_per_table = 1
# innodb_open_files = 400
# innodb_io_capacity = 400
innodb_flush_method = fsync[mysqld]
# * Fine Tuning
#
# max_connections = 100
# connect_timeout = 5
wait_timeout = 3600
# max_allowed_packet = 16M
# thread_cache_size = 128
# sort_buffer_size = 4M
# bulk_insert_buffer_size = 16M
# tmp_table_size = 32M
# max_heap_table_size = 32M不知怎么的,这些选择没有效果,我也不知道为什么:
show variables where variable_name = 'innodb_flush_method'
# Variable_name Value
# innodb_flush_method O_DIRECT有什么更好的方法来检查mariadb为什么不接收这些信息呢?
更新:
my.cnf是可行的,但我不想这样做。mysqld --print-defaults将打印出... --innodb_flush_method=fsync作为结果。在我看来,这可能是因为入口点脚本/docker-entrypoint.sh?发布于 2022-06-08 13:38:48
问题是文件权限。
运行数据库的linux用户必须读取配置文件。
可能有几种解决方案,在我的例子中,最简单的方法是应用774文件权限,这样每个用户都可以读取该文件:
root@server:~# ls -l /config/mariadb
total 12
-rwxrwxr-- 1 root root 263 Jun 8 13:43 mariadb-finetuning.cnf
-rwxrwxr-- 1 root root 367 Jun 8 13:43 mariadb-inno.cnf发布于 2022-06-08 13:36:37
如果您的MariaDB可以与您的设置一起运行,请执行“docker”以在您的MariaDB容器中运行bash,并检查您的卷挂载是否在预期位置显示了预期的文件。
然后还检查容器中MariaDB的配置或启动是否配置为读取这些文件。你可以通过提供空文件或者里面乱七八糟的文件来达到这个目的。
然后才开始查看文件的内容。一旦您到达这里,您似乎对容器数据库引擎有能力。
https://stackoverflow.com/questions/72545937
复制相似问题