这里以centos7为例,mysql版本为5.6.10,由于是在一台机器上安装多个相同服务,所以最好使用二进制方式配置启动。下载一份mysql二进制包,解压3份,分别命名为mysql-1、mysql-2、mysql-3.
下载命令:
# wget https://downloads.mysql.com/archives/get/file/mysql-5.6.10-linux-glibc2.5-x86_64.tar.gz
首先在mysql-1目录下面修改启动配置文件my-default.cnf,这个文件在support-files目录下,主要修改一下几项:
basedir = /home/mysql-1
datadir = /home/mysql-1/data
port = 3306
server_id = 1
剩余两个实例改成自己的目录就行,端口号依次为3307、3308,server_id依次为2、3.当然这里只介绍最基础的配置,不包含高级配置(比如主从同步要开启log-bin、半同步要配置rpl和relay等等)。配置好以后就要开始初始化数据库了,在初始化数据库之前应该新建一个mysql用户和用户组,因为用root用户初始化数据库一切正常,但是用root启动就会报:can't find file './mysql/plugin.frm' ; 所以新建mysql用户组:
#添加用户组
groupadd mysql
#添加用户mysql 到用户组mysql
useradd -g mysql mysql
#授权当前目录权限给mysql
chown -R mysql:mysql ./
紧接着初始化数据库:
# ./scripts/mysql_install_db --user=mysql --defaults-file=/home/mysql-1/support-files/my-default.cnf --datadir=/home/mysql-1/data --basedir=/home/mysql-1
如果没有报错的话,就初始化成功了,初始化成功后会在当前目录下生成一个配置文件my.cnf,此处为mysql-1目录下,然后会提示你启动的时候如果你没有通过--defaults-file指定特定配置文件的话,会使用/etc/my.cnf,所以我们最好指定自己的,因为有三个实例在一台机子上,不能用同一个配置文件。启动第一个实例:
# ./bin/mysqld_safe --defaults-file=/home/mysql-1/my.cnf &
其他两个实例重复以上过程,在各自的目录下执行。如果你的centos7是最小化安装,那么当你初始化数据库时会报这个错:/usr/bin/perl: bad interpreter: No such file or directory;这是因为最小化安装没有安装perl环境,而mysql_install_db命令里面第一行就是寻找perl命令,找不到当然报错,刚开始没弄清楚在网上搜这个错误,都说是文件编码问题,我打开文件用:set ff 查看确实是unix格式,所以排除这个原因,后来明白是我根本没安装perl环境,那么就安装一下:
# yum install perl
安装好后再次执行初始化命令,有报这个错:Can't locate Data/Dumper.pm in ... ;这个是缺少perl插件,继续安装。
# yum install 'perl(Data::Dumper)'
# yum install perl-Module-Install.noarch //如果上面一行执行完后可以正常初始化数据库,可以不执行这一句。
最后一个问题是,当你想关掉mysql进程,使用ps -aux|grep mysql 找到mysql进程id,用kill -9杀掉。因为我上面用的是mysqld_safe命令启动的,是一种以守护进程的方式启动的,你关掉mysql应该先关掉mysqld_safe进程,不然kill -9后又重新启动了,只是进程id变了;所以要想关掉要kill两次。