Msyql多实例部署记录
说明:mysql存在两种多实例部署的方式,一种是直接共享mysql程序,但配置文件单独分割开使用mysqld_safe进行启动
另一种则是使用mysqld_multi进行多实例管理和启动
1.mysql二进制准备
#这里采用二进制的包也就是已经编译过的进行部署安装,其实基本上二进制也不需要进行什么多余操作
#下载mysql二进制包这里推荐清华源下载,什么源其实也都无所谓
cd /usr/local/src
wget https://mirrors.tuna.tsinghua.edu.cn/mysql/downloads/MySQL-5.7/mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz --no-check-certificate
#解压包,创建软链接,做软链接的目的是为了解耦合,方便程序日后卸载或是更新或是其它
tar -xf mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz
ln -s /usr/local/src/mysql-5.7.36-linux-glibc2.12-x86_64/ /usr/local/mysql
#创建运行mysql数据库的用户mysql,参数M为不创建家目录,-r指定为系统用户
useradd mysql -s /sbin/nologin -M -r
#更改主程序包所有者,使mysql用户能够使用和读写这些文件
chown mysql.mysql /usr/local/* -R
#准备数据目录,这些目录是自己创建,也可以指定其他位置,但是要注意权限
mkdir -p /data/mysql/{3306,3307}/data
chown mysql.mysql /data/ -R
#这里需要进行一下所目录的权限赋予,因为我曾经失败过,因为权限问题,所以在此进行全部777的权限设置
chmod 777 /data/ -R
#下载必要组件
yum -y install gcc gcc-c++ openssl-devel boost-devel pcre prel perl ncurses-devel libaio-devel libaio
2.初始化数据库
#首先介绍几个参数
#--initialize 初始化参数
#datadir 指定数据生产目录
#basedir 指定mysql程序目录
#--user 指定运行用户
/usr/local/mysql/bin/mysqld --initialize --datadir=/data/mysql/3306/data/ --user=mysql
/usr/local/mysql/bin/mysqld --initialize --datadir=/data/mysql/3307/data/ --user=mysql
#下为一般输出,最后一行的密码需要进行记录,此初始化如上述命令需要进行两次且保证无报错
2022-10-25T14:10:09.764864Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2022-10-25T14:10:09.992293Z 0 [Warning] InnoDB: New log files created, LSN=45790
2022-10-25T14:10:10.048704Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2022-10-25T14:10:10.107936Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: bc538479-546e-11ed-a0ce-0800271247d0.
2022-10-25T14:10:10.109549Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2022-10-25T14:10:10.544595Z 0 [Warning] A deprecated TLS version TLSv1 is enabled. Please use TLSv1.2 or higher.
2022-10-25T14:10:10.544611Z 0 [Warning] A deprecated TLS version TLSv1.1 is enabled. Please use TLSv1.2 or higher.
2022-10-25T14:10:10.545121Z 0 [Warning] CA certificate ca.pem is self signed.
2022-10-25T14:10:10.702927Z 1 [Note] A temporary password is generated for root@localhost: .Hgd8zr7w-ik
#也可以直接将密码记录到文件中,初始化两个库是会有两个库的密码所以文件名要能让自己分辨出来
echo '.Hgd8zr7w-ik' >> /usr/local/mysql/passwd_3306.txt
3.准备配置文件
#默认mysql会去找/etc/my.cnf,所以需要自行准备配置文件进行替换,并且5.7版本mysql已经不在像之前版本准备一个配置文件模板在程序包里,反正我是没有找到
cp /etc/my.cnf /root/
mv /etc/my.cnf /etc/my.cnf.bak
vi /etc/my.cnf
#删除或注释所有配置,紧接着加入一下配置
[mysqld_multi] #此为mysqld_multi标签
mysql_safe=/usr/local/mysql/bin/mysqld_safe
mysqladmin=/usr/local/mysql/bin/mysqldadmin
[mysqld3306] #此为3306标签
port = 3306
socket = /data/mysql/3306/data/mysqld_3306.sock
log_error = /data/mysql/3306/data/3306.log
pid_file = /data/mysql/3306/data/3306.pid
datadir = /data/mysql/3306/data/
[mysqld3307] #此为3307标签
port = 3307
socket = /data/mysql/3307/data/mysqld_3307.sock
log_error = /data/mysql/3307/data/3307.log
pid_file = /data/mysql/3307/data/3307.pid
datadir = /data/mysql/3307/data/
4.使用multi启动多实例
#直接将bin目录路径添加到path中,偷懒小妙招
echo export PATH=$PATH:/usr/local/mysql/bin/ >> /etc/profile
source /etc/profile
#使用mysqld_multi启动
mysqld_multi start 3306
mysqld_multi start 3307
#使用以下命令查看是否已经启动,正常启动以下命令应该输出一下结果
mysqld_multi report
MySQL server from group: mysqld3306 is running
MySQL server from group: mysqld3307 is running
#启动后要进入修改密码才能正常使用,本文章只用于记录自己学习动手搭建的心得,如果想学习额外的知识,请查找其他文章,我的文章可能很基础
#这里要说明一下,在5.6版本后mysqld已经不支持mysld_multi关闭数据库,所以想要进行停止需要使用mysqladmin命令停止
mysqladmin -S /data/mysql/3306/data/mysqld_3306.sock -uroot -p shutdown
#假如想要适配的话,参考以下文章或许会有帮助
https://blog.csdn.net/weixin_33601966/article/details/113459858