MySQL多实例部署

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


你可能感兴趣的:(Mysql)