首页 > 解决方案 > 如何在 docker mariadb 中启用联合引擎

问题描述

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

2021-07-20 16:14:22+00:00 [注意] [入口点]:/usr/local/bin/docker-entrypoint.sh:运行/docker-entrypoint-initdb.d/_enable_federated.sh sed:不能'不打开临时文件 /etc/mysql/sedHjVLxp: 权限被拒绝

_enable_federated.sh

#!/bin/bash

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

我可以知道启用的正确方法是什么federated engine

标签: mysqldockerdockerfilemariadb

解决方案


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

或者,对于基于配置文件的方法,请使用(参考:文档中的“使用自定义 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';

推荐阅读