基于Centos7的多实例安装MySQL
源码安装MySQL
1、先获取软件包
官网下载较慢,可以使用一下网站
地址:http://mirrors.163.com/mysql/Downloads/MySQL-5.7/mysql-boost-5.7.37.tar.gz
[root@centos-node3 ~]# wget -c http://mirrors.163.com/mysql/Downloads/MySQL-5.7/mysql-boost-5.7.37.tar.gz
2、安装开发工具和开发包
yum install make gcc gcc-c++ cmake bison-devel ncurses-devel -y
yum install libaio libaio-devel openssl-devel -y
yum install perl-Data-Dumper -y
yum install net-tools -y
3、编译安装MySQL
a. 解压:
[root@centos-node3 ~]# tar xf mysql-boost-5.7.37.tar.gz -C /usr/local/src/
b. 使用cmake编译MySQL
cmake指定编译选项的方式不同于make,其实现方式对比如下:
./configure 变成了 cmake .
./configure --help 等价于 cmake . -LH or ccmake .
注意:如果想清理此前的编译所生成的文件重新编译,则需要使用如下两条命令:
make clean;rm CMakeCache.txt
进入到解压后的目录下:
[root@centos-node3 ~]# cd /usr/local/src/mysql-5.7.37/
创建用户和组:
[root@centos-node3 mysql-5.7.37]# groupadd -r -g 303 mysql
[root@centos-node3 mysql-5.7.37]# useradd -r -g mysql -u 303 -s /bin/false mysql
cmake编译MySQL
[root@centos-node3 mysql-5.7.37]# cmake -DWITH_BOOST=/usr/local/src/mysql-5.7.37/boost \
> -DWITH_SSH=system \
> -DWITH_ZLIB=system \
> -DSYSCONFDIR=/etc \
> -DMYSQL_DATADIR=/usr/local/mysql/data
需要等一会儿,看是否会报错,不同的报错有不同的处理方式,可以去检查自己的虚拟机上,相对应的依赖程序有没有安装上,在这里我的是成功了。
make编译安装:
[root@centos-node3 mysql-5.7.37]# make
这里需要很长时间,需要安装的很多
make install编译安装:
[root@centos-node3 mysql-5.7.37]# make install
没有报错就安装完成了:
编译配置文件,可以在原有的基础上修改。
[root@centos-node3 ~]# vim /etc/my.cnf
红色方框为修改后的:
创建文件,并修改权限,设置开机自启动
[root@centos-node3 ~]# cp /usr/local/src/mysql-5.7.37/support-files/mysql.server /etc/init.d/mysqld
[root@centos-node3 ~]# ll /etc/init.d/mysqld
-rw-r--r--. 1 root root 10576 Mar 28 22:56 /etc/init.d/mysqld
[root@centos-node3 ~]# chmod +x /etc/init.d/mysqld
[root@centos-node3 ~]# chkconfig --add mysqld
[root@centos-node3 ~]# chkconfig mysqld on
配置环境:
[root@centos-node3 ~]# echo "export PATH=$PATH:/usr/local/mysql/bin" > /etc/profile.d/mysql.sh
[root@centos-node3 ~]# source /etc/profile.d/mysql.sh
初始化:
[root@centos-node3 ~]# mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql/
开启:
[root@centos-node3 ~]# systemctl start mysqld
多实例安装
安装路径相同:basedir /usr/local/mysql
1> 各个实例端口不同 3306—3308
2> 数据文件目录不同 /data/3306 /data/3307 /data/3308
1、创建用户和组:
[root@node4 ~]# groupadd -r -g 303 mysql
[root@node4 ~]# useradd -r -g mysql -u 303 -s /bin/false mysql
2、获取安装包(可以看我上一篇文章的地址获取)
在这里因为我的另一台机器上已经获取过了,所以我把它拷贝到现在这台机器上,比下载速度快很多:
[root@node4 ~]# scp 192.168.21.133:/root/mysql-5.7.33-linux-glibc2.12-x86_64.tar.gz .
把那台机器上的那个文件拷贝到当前机器的当前位置。
3、解压并创建软链接:
[root@node4 ~]# tar xf mysql-5.7.33-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
[root@node4 ~]# ln -sv /usr/local/mysql-5.7.33-linux-glibc2.12-x86_64/ /usr/local/mysql
‘/usr/local/mysql’ -> ‘/usr/local/mysql-5.7.33-linux-glibc2.12-x86_64/’
4、准备数据目录
[root@node4 ~]# mkdir -p /data/330{6..8}/data
方法一:每个MySQL多实例都有一个配置文件
(1)第一个端口的配置文件
[root@node4 ~]# vim /data/3306/my.cnf
复制该文件到另外两个配置文件中,并进行修改
[root@node4 ~]# cp /data/3306/my.cnf /data/3307/my.cnf
[root@node4 ~]# cp /data/3306/my.cnf /data/3308/my.cnf
只用把配置文件中相对应的数字修改为该端口号就可以。
(2)修改MySQL多实例的文件权限
[root@node4 ~]# chown -R mysql.mysql /data/330{6..8}
(3)配置MySQL的环境变量
[root@node4 ~]# echo 'export PATH=$PATH:/usr/local/mysql/bin' > /etc/profile.d/mysql.sh
[root@node4 ~]# source /etc/profile.d/mysql.sh
(4)初始化多实例:
[root@node4 ~]# mysqld --initialize --datadir=/data/3306/data --basedir=/usr/local/mysql --user=mysql
密码:0>!u!I3i>;yM
初始化完成之后要记录一下密码,也就是红色方框内的
同理进行3307 和 3308的初始化:
[root@node4 ~]# mysqld --initialize --datadir=/data/3307/data --basedir=/usr/local/mysql --user=mysql
密码:ZC4tki*yKa9O
[root@node4 ~]# mysqld --initialize --datadir=/data/3308/data --basedir=/usr/local/mysql --user=mysql
密码:)J6p>ET52T/J
(5)启动MySQL多实例:
注意:在启动之前,先创建相应的文件,并修改权限,来规避报错的问题
先结束掉所有进程:(多敲几次关闭,然后再检查一下)
[root@node4 ~]# ps -ef | grep mysqld
[root@node4 ~]# killall mysqld
mysqld: no process found
[root@node4 ~]# ps -ef | grep mysqld
root 2655 2010 0 01:51 pts/2 00:00:00 grep --color=auto mysqld
然后创建文件,修改权限。
[root@node4 ~]# touch /data/3306/mysql_3306.err /data/3307/mysql_3307.err /data/3308/mysql_3308.err
[root@node4 ~]# chown mysql.mysql /data/3306/mysql_3306.err /data/3307/mysql_3307.err /data/3308/mysql_3308.err
启动多实例:
[root@node4 ~]# mysqld_safe --defaults-file=/data/3306/my.cnf &
[root@node4 ~]# mysqld_safe --defaults-file=/data/3307/my.cnf &
[root@node4 ~]# mysqld_safe --defaults-file=/data/3308/my.cnf &
检查是否启动成功:
[root@node4 ~]# netstat -lnpt | grep :330
(6)登录MySQL:
[root@node4 ~]# mysql -uroot -p -S /data/3306/mysql.sock
这里输入上面我们记录下来的初始密码
同理登录3307和3308:
[root@node4 ~]# mysql -uroot -p -S /data/3307/mysql.sock
[root@node4 ~]# mysql -uroot -p -S /data/3308/mysql.sock
(7)修改密码:
[root@node4 ~]# mysqladmin -uroot -p'0>!u!I3i>;yM' password 'MySQL@123' -S /data/3306/mysql.sock
同理修改3307和3308:
[root@node4 ~]# mysqladmin -uroot -p'ZC4tki*yKa9O' password 'MySQL@123' -S /data/3307/mysql.sock
[root@node4 ~]# mysqladmin -uroot -p')J6p>ET52T/J' password 'MySQL@123' -S /data/3308/mysql.sock
(8)关闭MySQL:
[root@node4 ~]# mysqladmin -uroot -p'MySQL@123' -S /data/3306/mysql.sock shutdown
第二行命令是查看是否关闭成功
方法二:推荐使用官方mysqld_multi
使用方法二之前先把方法一中的MySQL全都关闭了
(1)创建多实例的文件 /etc/my.cnf
查看帮助:
[root@node4 ~]# mysqld_multi --example
先修改,将其内容1–17行全部删除,只保留最后一行
[root@node4 ~]# vim /etc/my.cnf
查看修改后的文件:
修改配置文件:
[root@node4 ~]# vim /etc/my.cnf
接下来的(2)(3)(4)步骤同方法一:
(5)启动多实例:
[root@node4 ~]# mysqld_multi start 3307
但是在这里我第二个方法出现报错了,没有启动成功,后续成功会发下一篇。