千家信息网

初识MariaDB之2——MariaDB多实例安装

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,一、背景介绍MariaDB多实例就是在一台机器上开启多个不同的服务端口,运行多个MySQL服务进程,通过不同的socket监听不同的服务端口来提供各自的、互不干涉的服务,各个实例可以根据不同的配置文件
千家信息网最后更新 2026年11月01日初识MariaDB之2——MariaDB多实例安装

一、背景介绍

MariaDB多实例就是在一台机器上开启多个不同的服务端口,运行多个MySQL服务进程,通过不同的socket监听不同的服务端口来提供各自的、互不干涉的服务,各个实例可以根据不同的配置文件设置相互隔离

二、操作步骤

1.安装MariaDB(略)

2.初始化数据库(以3306为例)

/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/multidata/3306 --user=mysql

3.修改配置文件(以3306为例)

当有多台MariaDB服务器时server-id不能一样

4.启动服务(以3306为例)

/usr/local/mysql/bin/mysqld_safe --defaults-file=/multidata/3306/my.cnf 2>&1 > /dev/null &

如果忘记密码,启动方式为:

/usr/local/mysql/bin/mysqld_safe --defaults-file=/multidata/3307/my.cnf --skip-grant-tables 2>&1 > /dev/null &

此时要注意--defaults-file选项要放在--skip-grant-tables之前

5.登陆数据库(以3306为例)

/usr/local/mysql/bin/mysql -S /multidata/3306/mysql.sock

如果忘记密码,skip启动后以空密码登陆:

mysql -uroot -p -S /multidata/3307/mysql.sock

6.设置数据库root账户密码(以3306为例)

/usr/local/mysql/bin/mysqladmin -uroot password '123456' -S /multidata/3306/mysql.sock

如果是修改密码,命令为:

/usr/local/mysql/bin/mysqladmin -uroot -p123456 password 'new' -S /multidata/3306/mysql.sock

7.关闭服务(以3306为例)

mysqladmin -uroot -p123456 -S /multidata/3306/mysql.sock shutdown

三、编写启动脚本

为方便使用时启动和关闭,可以自己编写一个脚本并给与执行权限取代原有的mysqld执行文件,脚本内容如下:

#!/bin/bash

. /etc/init.d/functions

PORT=$2

USER=root

PASSWD=123456

MYSQLBIN='/usr/local/mysql/bin'

SOCKETFILE="/multidata/${PORT}/mysql.sock"

PIDFILE="/multidata/${PORT}/mysql.pid"

MYCNF="/multidata/${PORT}/my.cnf"

[[ $# -eq 2 ]] || {

echo "Usage: $0 {start|stop|restart|reload} {PORT}"

exit 1

}

mysql_start() {

[[ -e "$SOCKETFILE" ]] && {

action "MySQL port: $PORT IS already running" /bin/false

exit 0

} || {

action "Starting MySQL... please wait" /bin/true

$MYSQLBIN/mysqld_safe --defaults-file=$MYCNF &> /dev/null &

}

[[ "$?" == "0" ]] && {

action "MySQL has been Started" /bin/true

} || {

action "MySQL Started" /bin/false

}

}

mysql_stop() {

[[ ! -e "$SOCKETFILE" ]] && {

action "MySQL port:$PORT was already down" /bin/false

} || {

$MYSQLBIN/mysqladmin -u $USER -p$PASSWD -S $SOCKETFILE shutdown &>/dev/null

}

[[ "$?" == 0 ]] && {

action "MySQL port:$PORT has been Stopped" /bin/true

}

}

case "$1" in

'start')

mysql_start

;;

'stop')

mysql_stop

;;

'restart'|'reload')

mysql_stop

sleep 3

mysql_start

;;

*)

echo "Usage: $0 {start|stop|restart|reload} {PORT}"

esac

注意:该脚本中带数据库root账户的密码(2台服务器密码一样),所以在生产环境中建议将权限改为700以减小安全隐患

补充说明1:多个实例共用同一个my.cnf配置文件

在生产环境中建议将多个实例的配置文件分开,这样忘记密码时候便于指定配置文件通过skip-grant-tables选项找回。作为多实例的另一种方法,也可以使用同一个配置文件集中管理,以下在之前基础上创建3308,3309实例进行说明,步骤如下:

1.创建3308,3309的数据目录

mkdir -pv /unidata/{3308,3309}

chown -R mysql.mysql /unidata

cp mysqld_multi.server /etc/init.d/mysqld

cp my-huge.cnf /etc/my.cnf

2.初始化数据(以3308为例)

/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/unidata/3308 --user=mysql

3.修改/etc/my.cnf配置文件

[mysqld_multi]

mysqld=/usr/local/mysql/bin/mysqld_safe

mysqladmin=/usr/local/mysql/bin/mysqladmin

log = /unidata/mysql_multi.log

user = root

#password =

如果该地方不是root用户,下面则需要在数据库为该用户添加shutdown权限,否则mysqld_multi将无法关闭实例

[mysqld3308]

socket=/unidata/3308/mysql.sock

port=3308

server-id=1

pid-file=/unidata/3308/mysql.pid

datadir=/unidata/3308

user=mysql #必须要指定1个用户,否则实例无法启动

[mysqld3309]

socket=/unidata/3309/mysql.sock

port=3309

server-id=2

pid-file=/unidata/3309/mysql.pid

datadir=/unidata/3309

user=mysql

注意:多个实例除了mysqld号不同外,每个实例内的pid、port、socket和server-id也不能相同

4.检测服务能否正常启动和关闭

cp /usr/local/mysql/bin/mysqld_multi /etc/init.d/mysqld_multi

/etc/init.d/mysqld_multi start 3308,3309

/etc/init.d/mysqld_multi report

/etc/init.d/mysqld_multi stop 3308,3309

补充说明2:查看数据库字符集

MariaDB在编译安装时可以指定默认字符集,查看数据库字符集命令:

show create database mysql \G


实例 数据 服务 密码 文件 数据库 配置 不同 多个 脚本 字符 字符集 权限 用户 命令 建议 服务器 步骤 环境 端口 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 咖啡 华服互联网科技靠谱吗 美国互联网科技巨头监管 互联网科技的 百单互联网科技有限公司 菲比寻常互联网科技 兼蜜互联网科技 互联网 科技服务平台 互联网科技热点资讯 湖南诚度互联网科技有限公司 贵州叶脉互联网科技有限公司所属行业 互联网科技项目计划书材料类 湖北码尼互联网科技有限公司电话 广州新华互联网科技学校电竞方面 济南有互联网科技公司吗 互联网方面的科技前沿 互联网科技资金流入 2021世界互联网领先科技成果发布 科技互联网行业投资研究 银川新华互联网科技学校是国营吗 南京欣网互联网络科技有限公司 互联网巨头反垄断金融科技 互联网科技革命 朗涯互联网科技 掌上梦互联网科技 华脉科技工业互联网产品 上海宁丞科技互联网 广州富喜互联网络科技 珠海东科互联网科技有限公司 互联网科技创新创业项目
0