这两天总结了一下MySQL多实例服务的搭建,分别是编译安装mysql,按照网上老男孩老师教的方法,通过脚本实现。还有一个是二进制mysql安装,简单几步方可实现。

这篇博客首先介绍一下通过mysql二进制包搭建多实例服务。


什么是多实例?

mysql多实例就是一台机器开启不同的数据端口,运行不同的服务进程,它们共用一套mysql安装程序,使用不同的 my.cnf 文件,启动|停止程序。


系统环境如下

wKiom1h3Lz6RtotEAAAcHh24Igo610.png


安装前先创建一个目录,养成好习惯,将安装包放到规定的目录中

mkdir -p /home/yuci/tools

p_w_picpath

创建mysql用户

useradd -s /sbin/nologin -M mysql

id mysql

p_w_picpath

由于是二进制的安装包,解压就能使用了

tar zxf mysql-5.5.33-linux2.6-x86_64.tar.gz

p_w_picpath

在 / 下创建 application 目录,用于存放解压后的 mysql 程序

mkdir /application    

p_w_picpath

将软件包移动到/application目录中,保留他的版本号,方便后人。哈哈

mv mysql-5.5.33-linux2.6-x86_64/ /application/mysql-5.5.33

p_w_picpath

因为有版本号,所以做一个软连接取出版本号

ln -s /application/mysql-5.5.33/ /application/mysql

p_w_picpath

分别创建多实例的数据库文件的存放目录

mkdir /application/mysql/data/3306

mkdir /application/mysql/data/3307

Image(5)

初始化两个数据库

/application/mysql/scripts/mysql_install_db --basedir=/application/mysql --datadir=/application/mysql/data/3306 --user=mysql

/application/mysql/scripts/mysql_install_db --basedir=/application/mysql --datadir=/application/mysql/data/3307 --user=mysql

拷贝 mysql 的配置文件my.cnf

cp /application/mysql/support-files/my-small.cnf /application/mysql/data/3306/my.cnf

cp /application/mysql/support-files/my-small.cnf /application/mysql/data/3307/my.cnf

分别修改mysql 3306,3307的配置文件

vim /application/mysql/data/3306/my.cnf

[client]

#password       = your_password

port            = 3306

socket          = /tmp/mysql3306.sock

[mysqld]

port            = 3306

socket          = /tmp/mysql3306.sock

datadir=/application/mysql/data/3306

vim /application/mysql/data/3307/my.cnf

[client]

#password       = your_password

port            = 3307

socket          = /tmp/mysql3307.sock

[mysqld]

port            = 3307

socket          = /tmp/mysql3307.sock

datadir=/application/mysql/data/3307

将 /application/mysql 目录的属主属组全部修改为 mysql

chown -R mysql:mysql /application/mysql

给他们各自拷贝一个启动脚本并赋予权限

cp /application/mysql/support-files/mysql.server /etc/init.d/mysql3306

cp /application/mysql/support-files/mysql.server /etc/init.d/mysql3307

chmod 755 /etc/init.d/mysql3306

chmod 755 /etc/init.d/mysql3307

编辑 /etc/init.d/mysql3306   /etc/init.d/mysql3307 文件

vim /etc/init.d/mysql3306

basedir=/application/mysql

datadir=/application/mysql/data/3306

Image(6)

vim /etc/init.d/mysql3307

basedir=/application/mysql

datadir=/application/mysql/data/3307

Image(6)[1]

检查3306 3307端口是否正常开启

netstat -tlunp | grep 330

Image(7)

添加环境变量

ln -s /application/mysql/bin/* /usr/local/bin

为两个mysql数据库设定密码

mysqladmin -uroot password 123456 -S /tmp/mysql3306.sock

mysqladmin -uroot password 123456 -S /tmp/mysql3307.sock 

登陆时需要用 -S 指定 .sock 文件的位置

mysql -uroot -p123456 -S /tmp/mysql3306.sock

mysql -uroot -p123456 -S /tmp/mysql3307.sock