启动多个mysql实例

Posted outsrkem

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了启动多个mysql实例相关的知识,希望对你有一定的参考价值。

如果使用./support-files/mysql.server 文件启动,则默认读取/etc/my.cnf 配置文件,这种方式有时候启动不了

报错 :The server quit without updating PID file

所以我们使用启动命令mysqld_safe启动,多个实例只是重复下面的过程,更换目录和端口即可,当然也有一个mysql软件启动多个实例的方法。

解压mysql二进制包

useradd -r -s /sbin/nologin mysql
tar
xvf mysql-5.6.27-linux-glibc2.5-x86_64.tar.gz -C /opt/mysql &&  chown mysql.mysql -R /opt/mysql

初始化数据库

该过程必须到安装目录以相对路径去执行初始化命令。

cd /opt/mysql && scripts/mysql_install_db --user=mysql --datadir=/opt/mysql/data

创建配置文件

初始化完成后,默认会在./mysql/目录下创建my.cnf的文件

-rw-r--r--  1 root  root     492 5月  19 12:55 my.cnf

清空该文件,写入如下配置 vim ./my.cnf,可以根据自己需求修改配置

[mysqld]
basedir = /opt/mysql
datadir = /opt/mysql/data
log-error = /opt/mysql/data/error.log
pid-file = /opt/mysql/data/mysql.pid
socket = /opt/mysql/data/mysql.sock
port = 3306
user = mysql


bind-address = 0.0.0.0
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
default-storage-engine=INNODB
lower_case_table_names=1
collation-server = utf8_general_ci
character-set-server = utf8
wait_timeout=1200
interactive_timeout=1200

[mysql]
default_character_set=utf8

启动数据库

为了启动方便,创建一个简单的启动脚本,首先说明一点,mysql启动时要在mysql目录下启动才会成功,否则会启动失败

#!/bin/bash
mysql_dir=/opt/mysql
cd ${mysql_dir}
/bin/sh ${mysql_dir}/bin/mysqld_safe --defaults-file=${mysql_dir}/my.cnf &>/dev/null &

将其添加到开机自启

echo /opt/mysql/start.sh >> /etc/rc.local
chmod +x /etc/rc.d/rc.local 

补充命令

因为启动多个mysql,所以我们指定了PID文件和套接字文件的位置,所以登录时要指定套接字或者ip+端口方式登录

mysql -S /opt/mysql/data/mysql.sock -uroot -p
mysql -h 127.0.0.1 -P 3306 -uroot -p

关闭数据库,可以使用kill 直接将其杀死(守护进程和mysql进程都要杀死),但不推荐这种方式,建议使用mysqladmin命令

/bin/mysqladmin -S /opt/mysql/data/mysql.sock  -uroot -p shutdown

查看mysql状态

/bin/mysqladmin -S /opt/mysql/data/mysql.sock  -uroot -p ping

 

以上是关于启动多个mysql实例的主要内容,如果未能解决你的问题,请参考以下文章

Mysql 多实例

MySQL多实例简介

postgresql和mysql的区别

Android 片段问题的多个实例

PostgreSQL与MySQL比较

如何一个接一个地打开同一片段但具有不同数据的多个实例?