基于yum源实现多实例

本实验实现三个实例,分别使用端口3306,3307,3308

1.yum安装mariadb-server

#yum install mariadb-server

2.创建各个实例存放的目录

#mkdir  /data/mysql/{3306,3307,3308}/{etc,data,socket,log,bin,pid} -pv

3.修改目录及子目录的权限

#chown -R mysql.mysql  /data/mysql 

4.利用脚本生成默认数据库及数据文件

#/usr/bin/mysql_install_db --datadir=/data/mysql/3306/data --user=mysql
#/usr/bin/mysql_install_db --datadir=/data/mysql/3307/data --user=mysql
#/usr/bin/mysql_install_db --datadir=/data/mysql/3308/data --user=mysql

5.准备配置文件

以3306为例,3307和3308按照3306的配置文件加以修改即可。

#vim /data/mysql/3306/etc/my.cnf
[mysqld]
port=3306
datadir=/data/mysql/3306/data
socket=/data/mysql/3306/socket/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd

[mysqld_safe]
log-error=/data/mysql/3306/log/mariadb.log
pid-file=/data/mysql/3306/pid/mariadb.pid

#
# include all files from the config directory
#
#!includedir /etc/my.cnf.d

6.准备启动程序脚本

我事先准备好了一个简单的脚本文件mysqld(文末附脚本内容)

#cp mysqld /data/mysql/3306/bin/

针对各个实例稍加修改(以3306为例)
文件中修改的内容:

#!/bin/bash

port=3306
mysql_user="root"
mysql_pwd=""
cmd_path="/usr/bin"
mysql_basedir="/data/mysql"
mysql_sock="${mysql_basedir}/${port}/socket/mysql.sock"

修改完以后,对程序脚本添加执行权限:

#chmod +x /data/mysql/3306/bin/mysqld
#chmod +x /data/mysql/3307/bin/mysqld
#chmod +x /data/mysql/3308/bin/mysqld 

完成之后就可以运行启动程序脚本启动实例了(以3306为例)

#/data/mysql/3306/bin/mysqld start

启动之后可以查看端口开放情况以验证是否成功。
mysql———基于yum源实现多实例-LMLPHP

mysql———基于yum源实现多实例-LMLPHP 

 启动成功吗,便可以通过socket,打开三个不同的实例了。(以3306为例)

#mysql -S /data/mysql/3306/socket/mysql.sock 

mysql———基于yum源实现多实例-LMLPHP

 

7.修改数据库口令

#mysqladmin -uroot -S /data/mysql/3306/socket/mysql.sock password "centos"

之后再次修改mysqld脚本
mysql———基于yum源实现多实例-LMLPHP

 

附:mysqld脚本文件内容

#!/bin/bash

port=3306
mysql_user="root"
mysql_pwd="centos"
cmd_path="/usr/bin"
mysql_basedir="/data/mysql"
mysql_sock="${mysql_basedir}/${port}/socket/mysql.sock"

function_start_mysql()
{
    if [ ! -e "$mysql_sock" ];then
      printf "Starting MySQL...\n"
      ${cmd_path}/mysqld_safe --defaults-file=${mysql_basedir}/${port}/etc/my.cnf  &> /dev/null  &
    else
      printf "MySQL is running...\n"
      exit
    fi
}


function_stop_mysql()
{
    if [ ! -e "$mysql_sock" ];then
       printf "MySQL is stopped...\n"
       exit
    else
       printf "Stoping MySQL...\n"
       ${cmd_path}/mysqladmin -u ${mysql_user} -p${mysql_pwd} -S ${mysql_sock} shutdown
   fi
}


function_restart_mysql()
{
    printf "Restarting MySQL...\n"
    function_stop_mysql
    sleep 2
    function_start_mysql
}

case $1 in
start)
    function_start_mysql
;;
stop)
    function_stop_mysql
;;
restart)
    function_restart_mysql
;;
*)
    printf "Usage: ${mysql_basedir}/${port}/bin/mysqld {start|stop|restart}\n"
esac

 

10-06 18:46