(0.2.7)Mysql安装——多实例安装
环境:
centos7 + mysql5.7.26
【1】查看依赖包
rpm -qa|grep libaio #查看libaio 依赖包
如果没出现上图,则运行下面语句,安装依赖包
yum -y install autoconf libaio bison ncurses-devel #如果没有出现上图,则安装(一般centos7有自带)
【2】查看默认数据库(根据版本不同)
centos7默认会装mariadb数据库,6则是默认装Mysql数据库。
rpm -qa|grep mariadb #centos7
rpm -qa|grep mysql #centos6
如果出现了上图,则运行下列语句,卸载自带的 mariadb。
rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64 #用这个方式以此删除所有的,如有依赖报错可能需要先删除另外一个
建议的删除方式:
yum -y remove mariadb*
【3】系统方面的一些准备工作
systemctl stop firewalld #关闭防火墙
systemctl disable firewalld #禁止防火墙开机启动
getenforce #查看selinux状态
vim /etc/selinux/config #设置开机关闭selinux
【4】构造mysql用户、群组、目录、权限
【4.1】构造用户与群组
groupadd mysql
useradd -g mysql -s /sbin/nologin mysql #创建Mysql用户,但不允许其远程实际登陆到系统
【4.2】构造目录
mkdir -p /data/mysql/{mysql_3306,mysql_3307} mkdir /data/mysql/mysql_3306/{data,log,tmp} mkdir /data/mysql/mysql_3307/{data,log,tmp}
【4.3】修改mysql相关目录权限给mysql用户
chown -R mysql:mysql /data chmod -R 755 /data
【5】复制解压二进制文件到
【5.1】上传到 /data/mysql 目录
cd /data/mysql
然后上传文件,或者wget下载文件。
结果如下图
【5.2】解压mysql二进制包,设置环境变量
tar -zxvf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
ln -s mysql-5.7.26-linux-glibc2.12-x86_64 mysql_basedir #原名称太长了,建个软连接
echo "export PATH=${PATH}:/data/mysql/mysql_basedir/bin">>/etc/profile #设置环境变量
source /etc/profile
【6】配置my.cnf文件
cd /data/mysql
vim my.cnf
[client] port=3306 socket=/tmp/mysql.sock [mysqld_multi] mysqld = /data/mysql/mysql_basedir/bin/mysqld_safe mysqladmin = /data/mysql/mysql_basedir/bin/mysqladmin log = /data/mysql/mysqld_multi.log [mysqld] user=mysql basedir = /data/mysql/mysql_basedir sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES [mysqld3306] datadir=/data/mysql/mysql_3306/data #多实例中必须不同 port=3306 #多实例中必须不同 server_id=3306 #多实例中如果复制必须要不同 socket=/tmp/mysql_3306.sock #多实例中必须不同 log-output=file slow_query_log = 1 long_query_time = 1 slow_query_log_file = /data/mysql/mysql_3306/log/slow.log log-error = /data/mysql/mysql_3306/log/error.log binlog_format = mixed log-bin = /data/mysql/mysql_3306/log/mysql3306_bin [mysqld3307] #下列4行参数,多实例中必须不同 datadir=/data/mysql/mysql_3307/data port=3307 server_id=3307 socket=/tmp/mysql_3307.sock log-output=file slow_query_log = 1 long_query_time = 1 slow_query_log_file = /data/mysql/mysql_3307/log/slow.log log-error = /data/mysql/mysql_3307/log/error.log binlog_format = mixed log-bin = /data/mysql/mysql_3307/log/mysql3307_bin
ln -s /data/mysql/my.cnf /etc/my.cnf chown -R mysql:mysql /data chmod -R 755 /data chown mysql:mysql /etc/my.cnf chmod -R 755 /etc/my.cnf
【7】初始化多实例
#初始化多实例
mysqld --defaults-file=/data/mysql/my.cnf --initialize --basedir=/data/mysql/mysql_basedir --user=mysql --datadir=/data/mysql/mysql_3306/data
mysqld --defaults-file=/data/mysql/my.cnf --initialize --basedir=/data/mysql/mysql_basedir --user=mysql --datadir=/data/mysql/mysql_3307/data
#2个目录均如下图,就是成功了
【8】mysqld_multi进行多实例管理
#mysqld_multi 基本常用操作
启动全部实例:/usr/local/mysql/bin/mysqld_multi start 查看全部实例状态:/usr/local/mysql/bin/mysqld_multi report 启动单个实例:/usr/local/mysql/bin/mysqld_multi start 3306 停止单个实例:/usr/local/mysql/bin/mysqld_multi stop 3306 查看单个实例状态:/usr/local/mysql/bin/mysqld_multi report 3306
停止全部实例:/usr/local/mysql/bin/mysqld_multi stop # 需要在my.cnf中,统一配置好 [client]然后把user=root 换行 password=123456 账户信息输入进去。否则会出现登录失败
#检查端口监听
netstat -an|grep mysql
#启动全部实例 [root@mysql ~]# /usr/local/mysql/bin/mysqld_multi start [root@mysql ~]# /usr/local/mysql/bin/mysqld_multi report Reporting MySQL servers MySQL server from group: mysqld3306 is running MySQL server from group: mysqld3307 is running
#连接mysql
mysql -uroot -p -P3306 -S /tmp/mysql_3306.sock
mysql -uroot -p -P3307 -S /tmp/mysql_3307.sock
#关闭实例
mysqladmin -uroot -p -S /tmp/mysql_3306.sock -P3306 shutdown
mysqladmin -uroot -p -S /tmp/mysql_3307.sock -P3307 shutdown