• ADADADADAD

    初识MariaDB之2——MariaDB多实例安装[ mysql数据库 ]

    mysql数据库 时间:2024-12-25 09:57:49

    作者:文/会员上传

    简介:

    一、背景介绍MariaDB多实例就是在一台机器上开启多个不同的服务端口,运行多个MySQL服务进程,通过不同的socket监听不同的服务端口来提供各自的、互不干涉的服务,各个实例可以根

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

    一、背景介绍

    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

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

    将本文的Word文档下载到电脑

    推荐度:

    下载
    热门标签: mysql多实例mariadb