YUM安装的MySQL(MariaDB)实现多实例运行

生产环境中,可能需要多个数据库同时在线。但一台服务器只运行一个数据库实例势必会引起资源的浪费,因此,本文介绍如何将yum安装的MySQL多开,实现多实例运行。(二进制与编译安装步骤与此类似)

0、首先要安装好MySQL

yum install mariadb-server

1、创建好多实例需要使用的文件夹,此处以将要开通的端口号命名

mkdir -pv /mysqldb/{3306,3307,3308}/{etc,socket,pid,log,data}

2、为数据库文件夹设置好权限

chown -R mysql.mysql /mysqldb/

3、在下列文件夹中生成数据库文件

mysql_install_db –datadir=/mysqldb/3306/data –user=mysql
mysql_install_db –datadir=/mysqldb/3307/data –user=mysql
mysql_install_db –datadir=/mysqldb/3308/data –user=mysql

4、将配置文件范本复制到对应文件夹下

cp /etc/my.cnf /mysqldb/3306/etc/
cp /etc/my.cnf /mysqldb/3307/etc/
cp /etc/my.cnf /mysqldb/3308/etc/

5、并分别对其进行修改

vim /mysqldb/3306/etc/my.cnf
vim /mysqldb/3307/etc/my.cnf
vim /mysqldb/3308/etc/my.cnf

修改如下部分:

如果使用vim编辑器,可在命令模式下输入:s%/3306/目标端口号,即可实现批量替换
port=3306 #←端口号需要根据各文件夹进行调整
datadir=/mysqldb/3306/data
socket=/mysqldb/3306/socket/mysql.sock
log-error=/mysqldb/3306/log/mariadb.log
pid-file=/mysqldb/3306/pid/mariadb.pid
#!includedir /etc/my.cnf.d  #这一行要注释掉,不然会造成干扰

6、将预先写好的服务脚本上传到系统(本文是家目录),然后分别拷贝到指定数据库的文件夹下

rz #启动脚本见附录
cp mysqld /mysqldb/3306/
cp mysqld /mysqldb/3307/
cp mysqld /mysqldb/3308/

7、并分别赋予(root)以执行权限

chmod 700 /mysqldb/3308/mysqld
chmod 700 /mysqldb/3307/mysqld
chmod 700 /mysqldb/3306/mysqld

8、修改启动脚本中对应的路径及端口号,修改方法同理,vim下查找替换可大幅提高效率

vim /mysqldb/3306/mysqld
vim /mysqldb/3307/mysqld
vim /mysqldb/3308/mysqld

修改:
port=3306
cmd_path=“/usr/bin”

9、需要停止现有正在运行的实例,避免干扰

systemctl stop mariadb #停止现有正在运行的实例

10、尝试启动三个实例

/mysqldb/3308/mysqld start
/mysqldb/3307/mysqld start
/mysqldb/3306/mysqld start

11、查看对应端口是否打开,确认服务是否正常运行

ss -utln
ss -utln | grep 3306
ss -utln | grep 3307
ss -utln | grep 3308

12、连接想要连接的数据库,开始使用吧

mysql -S /mysqldb/3308/socket/mysql.sock

 

————————————————————分割线————————————————————

13、附录:启动服务脚本(仅供参考):

#!/bin/bash

port=3306
mysql_user=”root”
mysql_pwd=””
cmd_path=”/usr/bin”
mysql_basedir=”/mysqldb”
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

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/100916

(2)
无名无名
上一篇 2018-06-12 15:59
下一篇 2018-06-12 19:32

相关推荐

  • LVS虚拟服务器相关实验

    本节内容主要是是lvs相关性实验,及lvs健康性检查工具Ldirectord

    2018-07-05
  • CENTOS开机流程

    开机流程 centos 5和6版本开机流程kernel==>rootfs(根文件系统)首先内核启动,然后加载根文件系统,然后启动init(第一个文件系统)它负责所有的程序的启动、管理、调用、删除等(这一切是运行在用户空间的)。 “`kernel:进程管理内存管理网络管理驱动程序文件系统安全功能 rootfs:glibc“` 库:…

    Linux笔记 2018-05-13
  • 阿X吃鸡录————第四站

    diff -u a b >ab 生成ab即为补丁,在a或者b文件丢失时 patch -b a/b ab 生成丢失的文件内容 etc/下创建nologin文件会使普通文件无法登陆(普通用户登陆会显示文件中的内容) [-t num ] 判断是否文件在终端被打开(文件描述符) read 对变量赋值 echo -e “ \c” read name 会不产生换行…

    Linux笔记 2018-08-06
  • 文本处理工具

    简要介绍各种文本查看,分析和统计的工具

    Linux笔记 2018-04-06
  • 简述iproute家族命令

    iptoute2家族 ip命令:ip – show / manipulate routing, devices, policy routing and tunnelsip [ OPTIONS ] OBJECT { COMMAND | help }OBJECT := { link | address | addrlabel | route | ru…

    Linux笔记 2018-06-15
  • Linux基本指令

    hostname  完整主机名cat +文件路径  可查看文件信息cat /etc/shells  显示所有shelluname -r    查看内核版本ls cpu   查看cpu信息free命令  查看内存 后面加-k是显示的内存以kb为单位,-m(MB),-g(GB),-h显示易读单位lsblk  查看硬盘dmesg  查看计算机启动的一些相关信息dm…

    2018-07-22