mysql的多实例有两种方式可以实现,两种方式各有利弊。
第一种是使用多个配置文件启动不同的进程来实现多实例,这种方式的优势逻辑简单,配置简单,缺点是管理起来不太方便。
第二种是通过官方自带的mysqld_multi使用单独的配置文件来实现多实例,这种方式定制每个实例的配置不太方面,优点是管理起来很方便,集中管理
第一种使用多个配置文件启动多个进行
1.安装编译好数据库
2.进行数据库初始化
/usr/local/mysql_3306/bin/mysql_install_db --basedir=/usr/local/mysql_3306 --datadir=/data/dbdata_3306 --user=mysql
/usr/local/mysql_3307/bin/mysql_install_db --basedir=/usr/local/mysql_3307 --datadir=/data/dbdata_3307 --user=mysql
/usr/local/mysql_3308/bin/mysql_install_db --basedir=/usr/local/mysql_3308 --datadir=/data/dbdata_3308 --user=mysql
3.分别创建各自的配置文件(需要指定各自的数据目录,端口,socket文件)
vim /data/dbdata_3306/my.cnf
vim /data/dbdata_3307/my.cnf
vim /data/dbdata_3308/my.cnf
4.通过配置问题启动各个实例
/bin/sh /usr/local/mysql_3306/bin/mysqld_safe --defaults-file=/data/dbdata_3306/my.cnf &
/bin/sh /usr/local/mysql_3307/bin/mysqld_safe --defaults-file=/data/dbdata_3307/my.cnf &
/bin/sh /usr/local/mysql_3308/bin/mysqld_safe --defaults-file=/data/dbdata_3308/my.cnf &
关闭不同的实例
a.kill -9 进程ID
b./bin/sh /usr/local/mysql_3306/bin/mysqladmin -u ${mysql_username} -p${mysql_password} -S /data/dbdata_${mysql_port}/mysql.sock shutdown
问题:
1.mysql初始化报错
Neither host 'ip-10-146-22-118' nor 'localhost' could be looked up with
/usr/bin/resolveip
修改 /etc/hostname文件中的内容ip-10-146-22-118给修改为127.0.0.1就行了
2.Fatal error: Can't change to run as user 'mysql'. Please check that the user exists!
mysql 用户已经存在,老是提示这个错误,通过修改my.cnf文件 指定user=root 解决问题
第二种方式通过官方自带的mysql_multi进行配置
1.安装和初始化数据库与第一种方式一样
2.编辑配置文件(三个实例的配置文件放在一起)
vi /etc/my.cnf
[mysqld_multi]
mysqld = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
user = admin
password = password
[mysqld1] //定义实例3306
socket /data/dbdata_3306/mysql.sock
port = 3306
pid-file = /data/dbdata_3306/3306.pid
datadir = /data/dbdata_3306
..........
[mysqld2] //定义实例3307
socket /data/dbdata_3307/mysql.sock
port = 3307
pid-file = /data/dbdata_3307/3307.pid
datadir = /data/dbdata_3307
..........
[mysqld3] //定义实例3308
socket /data/dbdata_3308/mysql.sock
port = 3308
pid-file = /data/dbdata_3308/3308.pid
datadir = /data/dbdata_3308
..........
3.启动各个实例
/usr/local/mysql/bin/mysqld_multi start 1
/usr/local/mysql/bin/mysqld_multi start 2
/usr/local/mysql/bin/mysqld_multi start 3
或者
/usr/local/mysql/bin/mysqld_multi start 1-3