如何在 docker mariadb 中启用联合引擎

How to enable federated engine in docker mariadb

我需要入口点中的 federated engine 以在容器中预填充数据库。为了启用 federated engine,我编写了一个 bash 脚本来手动将联合命令插入到 my.cnf,但出现以下错误

2021-07-20 16:14:22+00:00 [Note] [Entrypoint]: /usr/local/bin/docker-entrypoint.sh: running /docker-entrypoint-initdb.d/_enable_federated.sh sed: couldn't open temporary file /etc/mysql/sedHjVLxp: Permission denied

_enable_federated.sh

#!/bin/bash

sed -i '/\[mysqld\]/a federated' /etc/mysql/my.cnf

请问启用federated engine

的正确方法是什么

安装联合存储引擎的最简单方法是运行带有命令行参数的容器 --plugin-load-add=ha_federatedx

或者对于基于配置文件的方法,使用(参考:documenation 中的“使用自定义 MariaDB 配置文件”):

$ cat config/federated.cnf

[mariadbd]
plugin-load-add=ha_federated

$ podman run -v=./config/:/etc/mysql/conf.d/ -e MARIADB_ALLOW_ROOT_EMPTY_PASSWORD=1  mariadb:10.5

最后的方法是在/docker-entrypoint-initdb.d/中使用一个federated.sql脚本:

INSTALL SONAME 'ha_federatedx';