MySQL单机多实例配置实战

本文主要介绍在CentOS6.9下快速安装和部署MySQL多实例

基本流程:

1.Mysql多实例介绍

2.安装MySQL多实例

3.创建MySQL多实例的数据文件目录以及配置文件

4.创建MySQL多实例的启动文件

5.配置文件权限和软链接

6.初始化MySQL多实例的数据库文件

7.启动MySQL多实例数据库

8.配置和管理MySQL多实例数据库



流程一:Mysql多实例介绍


简单的说,Mysql多实例就是在一台服务器上同时开启多个不同的服务端口(如 : 3306/3307/3308)同时运行多个Mysql服务器,这些服务进程通过不同的socket来监听不同的服务端口来提供服务

这些Mysql多实例共用一套Mysql安装程序,使用不同的my.cnf配置文件,启动程序,和数据文件,在提供服务时,多实例Mysql在逻辑上来看是各自独立的,他们根据配置文件对应设定值,获得服务器相应的资源



流程二:安装MySQL多实例

1)安装MySQL所需的依赖包

yum install ncurses-devel libaio-devel -y

yum install cmake -y

2)获取MySQL二进制包以及安装

useradd -s /sbin/nologin  -M mysql

id mysql

wget http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.32-linux2.6-x86_64.tar.gz 解压并创建软连接(这是二进制安装包,仅需要解压就可以,不需要cmake/configure,make&&make install等过程)

tar xf mysql-5.5.32-linux2.6-x86_64.tar.gz

mkdir -p /application/

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

ln -s /application/mysql-5.5.32/ /application/mysql

cd /application/mysql

ls -l support-files/*.cnf



流程三:创建MySQL多实例的数据文件目录以及配置文件

mkdir -p /data/{3306,3307}/data

cd /data/3306

[[email protected] 3306]# cat my.cnf 

[mysqld]

basedir=/application/mysql

datadir=/data/3306

socket=/data/3306/mysql.sock

log-error=/data/3306/mysqlerr.log

log_bin=/data/3306/mysql-bin

binlog_format=row

skip_name_resolve=1

server_id=3306

port=3306

cd /data/3307

[[email protected] 3307]# cat my.cnf 

[mysqld]

basedir=/application/mysql

datadir=/data/3307

socket=/data/3307/mysql.sock

log-error=/data/3307/mysqlerr.log

log_bin=/data/3307/mysql-bin

binlog_format=row

skip_name_resolve=1

server_id=3307

port=3307

#实际工作中我们都是拿早已配置好的模板来进行修改的,这里用醉简单的模板来做演示



流程四:创建MySQL多实例的启动文件

cd /data/3306

[[email protected] 3306]# cat mysqld

. /etc/init.d/functions

. /etc/profile

Start='/application/mysql/bin/mysqld_safe --defaults-file=/data/3306/my.cnf --pid-file=/data/3306/3306.pid'

Stop='mysqladmin -uroot -S /data/3306/mysql.sock shutdown'

Port=`ss -tunlp|grep 3306|wc -l`

function START(){

if [ $Port -ne 1 ];then

$Start >/dev/null 2>&1 &

sleep 3

if [ $? -eq 0 ];then

action 'MySQL 3306 Starting' /bin/true

fi

else

action 'MySQL 3306 Already Exists' /bin/true

fi

}

function STOP(){

if [ $Port -ne 0 ];then

$Stop

if [ $? -eq 0 ];then

action 'MySQL Stoping Successfuly' /bin/true

fi

else

action 'MySQL already Stoped' /bin/true

fi

}

function RESTART(){

STOP

sleep 1

START

}

case $1 in

start)

START

;;

stop)

STOP

;;

restart)

RESTART

;;

*)

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

;;

esac

cd /data/3307

[[email protected] 3307]# cat mysqld

. /etc/init.d/functions

. /etc/profile

Start='/application/mysql/bin/mysqld_safe --defaults-file=/data/3307/my.cnf --pid-file=/data/3307/3307.pid'

Stop='mysqladmin -uroot -S /data/3307/mysql.sock shutdown'

Port=`ss -tunlp|grep 3307|wc -l`

function START(){

if [ $Port -ne 1 ];then

$Start >/dev/null 2>&1 &

sleep 3

if [ $? -eq 0 ];then

action 'MySQL 3307 Starting' /bin/true

fi

else

action 'MySQL 3307 Already Exists' /bin/true

fi

}

function STOP(){

if [ $Port -ne 0 ];then

$Stop

if [ $? -eq 0 ];then

action 'MySQL Stoping Successfuly' /bin/true

fi

else

action 'MySQL already Stoped' /bin/true

fi

}

function RESTART(){

STOP

sleep 1

START

}

case $1 in

start)

START

;;

stop)

STOP

;;

restart)

RESTART

;;

*)

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

;;

esac




流程五:配置文件权限和软链接

[[email protected] 3307]# chown -R mysql.mysql /data/

[[email protected] 3307]# find /data/ -name mysqld|xargs ls -l

-rw-r--r--. 1 mysql mysql 794 May  3 11:55 /data/3306/mysqld

-rw-r--r--. 1 mysql mysql 794 May  3 11:55 /data/3307/mysqld

[[email protected] 3307]# find /data/ -name mysqld|xargs chmod 700

[[email protected] 3307]# ln -s  /application/mysql/bin/*  /usr/local/sbin/




流程六:初始化MySQL多实例的数据库文件

cd /application/mysql/scripts

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

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

初始化数据库后可以看到对应实例目录下会多了如下文件,省略部分

[[email protected] scripts]# tree /data/|head -10

/data/

├── 3306

│   ├── data

│   ├── my.cnf

│   ├── mysql

│   │   ├── columns_priv.frm

│   │   ├── columns_priv.MYD

│   │   ├── columns_priv.MYI

│   │   ├── db.frm

│   │   ├── db.MYD



流程七:启动MySQL多实例数据库

sed -i "s#/usr/local/mysql#/application/mysql#g"  /application/mysql/bin/mysqld_safe           #修改脚本执行路径

[[email protected] scripts]# /data/3306/mysqld start

MySQL 3306 Starting                                        [  OK  ]

[[email protected] scripts]# /data/3307/mysqld start

MySQL 3306 Starting                                        [  OK  ]

[[email protected] 3307]# netstat -tnlp | grep 330

tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      7983/mysqld

tcp        0      0 0.0.0.0:3307                0.0.0.0:*                   LISTEN      8271/mysqld




流程八:配置和管理MySQL多实例数据库

1)加入开机自启

[[email protected] 3306]# echo "#mysql  multi instances" >> /etc/rc.local

[[email protected] 3306]# echo "/data/3306/mysqld start" >> /etc/rc.local

[[email protected] 3306]# echo "/data/3307/mysqld start" >> /etc/rc.local

2)登录MySQL测试

[[email protected] 3306]# mysql -S /data/3306/mysql.sock         #mysql.sock用于区分登录不同的实例

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 1

Server version: 5.5.32-log MySQL Community Server (GPL)

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| data               |

| mysql              |

| performance_schema |

| test               |

+--------------------+

5 rows in set (0.01 sec)

mysql> select user();

+----------------+

| user()         |

+----------------+

| [email protected] |

+----------------+

1 row in set (0.00 sec)

3)MySQL多实例数据库的管理方法

无密码情况下登录数据库方法:

mysql -S /data/3306/mysql.sock

mysql -S /data/3307/mysql.sock

重启对应实例数据库的命令:

/data/3306/mysqld restart

4)MySQL安全配置

通过mysqladmin命令为MySQL不同实例的数据库设置独立的密码,命令如下:

[[email protected] 3306]# mysqladmin -u root -S /data/3306/mysql.sock password 'ywxi123'

[[email protected] 3306]# mysqladmin -u root -S /data/3307/mysql.sock password 'ywxi123'

[[email protected] 3306]# mysql -uroot -pywxi123 -S /data/3306/mysql.sock

[[email protected] 3306]# mysql -uroot -pywxi123 -S /data/3307/mysql.sock

5)再增加一个MySQL的实例

mkdir -p /data/3308/data

\cp /data/3306/mysqld /data/3308/

\cp /data/3306/my.cnf /data/3308/

sed -i 's/3306/3308/g' /data/3308/my.cnf

sed -i 's/3306/3308/g' /data/3308/mysqld

chmod 700 /data/3308/mysqld

cd /application/mysql/scripts/

./mysql_install_db  --basedir=/application/mysql --datadir=/data/3308 --user=mysql

chown -R mysql:mysql /data/3308/

egrep "server_id|log_bin" /data/3308/my.cnf

/data/3308/mysqld start

netstat -tnlp | grep 3308


原文地址:http://blog.51cto.com/13707680/2112502

时间: 2024-10-09 23:59:03

MySQL单机多实例配置实战的相关文章

Tomcat(tomcat虚拟主机,Tomcat日志,单机多实例配置实战,JVM设置和连接数设置)

一.配置Tomcat的虚拟主机 一.Tomcat虚拟主机基本配置. 在介绍nginx和apache的时候,我们都有提过虚拟主机,在tomcat中也有这么一说, [[email protected] ~]# vim /usr/local/tomcat/conf/server.xml 搜索/Host,其中<Host>和</Host>之间的配置为虚拟主机配置部分,name定义域名,appBase定义应用的目录,Java的应用通常是一个Jar的压缩包,将jar的压缩包放到appBase目录

MySQL单机多实例配置

1.安装说明 (1).将所有的安装文件.配置文件.数据目录全部放存/data/mysql目录中,便于今后实现快速迁移.整体备份和快速复制: (2).在一台服务器上运行四个MySQL实例,分别绑定在3306.3307.3308.3309端口上 (3).四个实例都开启binlog日志,数据目录分别存放在/data/mysql/data1./data/mysql/data2./data/mysql/data3./data/mysql/data4 (4).四个实例均采用InnoDB作为默认的存储引擎,字

mysql 单机多实例配置

如果你想在一台机器上进行主从配置实验,本篇可以帮助你实现愿望 [client] #password = your_password port = 3306 socket = /tmp/mysql.sock [mysqld] port = 3306 socket = /tmp/mysql.sock datadir = /data/mysqldata skip-external-locking key_buffer_size = 64M max_allowed_packet = 1M table_o

amoeba针对MySQL单机多实例配置文件注释

MySQL单机多实例的读写分离可以通过第三方软件来实现,其中一个叫简单的读写分离软件就是今天所带给大家的amoeba软件. 本次使用的amoeba软件为amoeba-mysql-binary-2.1.0-RC5.tar.gz 本软件是基于JAVA环境运行的,所以需要JAVA环境支持,具体环境配置不做详解. 本文主要解释两个主配置文件. 1.dbServer.xml 这个文件配置的是父配置(用来给默认子配置补充配置项) 真实mysql服务器的端口,数据库名称,mysql用户及密码 主服务器,从服务

[转载]Tomcat单机多实例配置

Tomcat单机多实例配置 当一个进程的线程超过500个的话,那么这个进程的运行效率会变得很低.因为一个进程产生过多的线程,CPU资源会浪费在线程间切换过程当中.但当服务器配置很高的情况下,如:32G内存,16核的CPU.这样一台高配的机器上只装一个Tomcat实例,会有点浪费.其实我们可以根据服务器的硬件配置,配置多个Tomcat实例,充分利用硬件的资源.你第一时间可能会想到,直接下载多份Tomcat安装包,直接解压,改下端口跑起来不就可以了? 这样也是可以的,但不好维护.假设你在一台机器上安

MySQL单机多实例安装并配置主从复制

单机多实例据说可以最大程度提高硬件使用,谁知道呢,但是以前的公司喜欢这样搞,我最近也在学习复制什么的,电脑搞不起两台虚拟机,刚好单机多实例可以解救我.下面就说说步骤. 承上文http://www.cnblogs.com/wingsless/p/4002806.html,我已经安装好了MySQL,不过这个是单实例的,要更改也可以,但是担心会出现问题,于是我将下面的东西删掉: 1 #rm -f /etc/init.dmysql 2 $rm -f /home/mysql/data 建立这么几个目录:

Redis的make,make test,make install、单机多实例配置,以及API程序写数据!

最近学习王家林老师的大数据蘑菇云行动,要实现将Spark Streaming分析的数据写入到Redis.今天正好开始入手.  一.Ubuntu16安装Redis3.2.1 遇到了不少的问题,其中,make倒是没问题,make test的时候,出现了: !!! WARNING The following tests failed: *** [err]: Slave should be able to synchronize with the master in tests/integration/

多配置文件部署mysql单机多实例

1.安装gcc-c++.ncurses依赖包 # yum install gcc-c++ ncurses-devel 2.安装cmake,用来编译mysql # tar -xvf cmake-3.2.0-.tar.gz # mv cmake-3.2.0 cmake # mv cmake /tmp/ # cd /tmp/cmake/ # ./bootstrap # make # make install # cmake --version 3.安装bison # tar -xvf bison-3.

MySQL单机多实例的配置笔记

网上的大部分都是mysqld_multi方式启动的多实例. 以前在老男孩老师的视频里看到的另一种方法,如下. 参考:http://www.ilanni.com/?p=8020 环境 CentOS6.7x86_64[2.6.32-573.el6.x86_64] mysql-5.6.30通用二进制安装包 创建mysql的独立配置文件目录 mkdir /data/{3306,3307} -pv 建立账户 groupadd mysql useradd -s /sbin/nologin -g mysql