CentOS 7 MySQL5.7 多实例(多端口)

 

本次多实例可以用TAR二进制包配置,也可以用RPM安装包,文档最后有官方文档。

我会尽量写成自动脚本,方便大家操作,只需要复制到LINUX 之后就可以自动操作完成。

 

准备工作

tar安装包:默认已经下载好mysql 安装包,名称为: mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz ,我的安装包位置:/root 。我服务器没有网络,只能通过sftp上传。

安装位置:mysql程序安装路径为:/usr/local/mysql  ,数据库路径为:/usr/local/mysql/data。路径可以修改,只要批量把脚本中的路径替换即可。

 

MYSQL安装

可参考文档  CentOS 7 MySQL5.7 TAR包解压 全自动化脚本

#创建mysql用户组
groupadd mysql
#创建一个用户名为mysql的用户并加入mysql用户组
useradd -g mysql mysql
 #制定password 为123456 passwd mysql

#我安装到/usr/local
tar -zxvf mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz 
mv mysql-5.7.21-linux-glibc2.12-x86_64   /usr/local/mysql
cd /usr/local

#更改所属的组和用户
chown -R mysql mysql/
chgrp -R mysql mysql/
cd mysql/
#数据库路径
mkdir data
chown -R mysql:mysql data

mv /etc/my.cnf /etc/my.cnf.back
#写入配置cat>> /etc/my.cnf<<EOF [mysql] # 设置mysql客户端默认字符集 default-character-set=utf8 [mysqld] skip-name-resolve #设置3306端口 port = 3306 # 设置mysql的安装目录 basedir=/usr/local/mysql # 设置mysql数据库的数据的存放目录 datadir=/usr/local/mysql/data pid-file=/usr/local/mysql/data/mysql.pid # 允许最大连接数 max_connections=200 # 服务端使用的字符集默认为8比特编码的latin1字符集 character-set-server=utf8 # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB lower_case_table_names=1 max_allowed_packet=16M EOF#安装和初始化 # 注data目录中不能有文件bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/#安装服务 cp ./support-files/mysql.server /etc/init.d/mysqld chown 777 /etc/my.cnf chmod +x /etc/init.d/mysqld # 启动服务 /etc/init.d/mysqld start #设置开机启动 chkconfig --level 35 mysqld on chkconfig --list mysqld chmod +x /etc/rc.d/init.d/mysqld chkconfig --add mysqld chkconfig --list mysqld service mysqld status
#配置etc/profile/ 用于mysql登录 # 在unset i后添加export PATH=$PATH:/usr/local/mysql/bin sed -i '/unset i/a export PATH=$PATH:/usr/local/mysql/bin' /etc/profile source /etc/profile

#登录
mysql -uroot -p

#到此mysql安装完成

 

多实例配置

 位置在:/data 路径中,创建3个目录分别为:3307 ,3308,3309。这三个实例的端口号也是 3307 ,3308,3309

#准备多个目录
mkdir -p /data/330{7,8,9}/data

#创建配置文件
cat>> /data/3307/my.cnf<<EOF
[mysqld]
basedir=/usr/local/mysql
datadir=/data/3307/data
pid-file=/data/3307/data/mysql.pid
log_error=/data/3307/data/mysql.log
socket=/data/3307/mysql.sock
log_bin=/data/3307/mysql-bin
user=mysql
port=3307
server_id=3307
EOF

#复制配置文件
cp /data/3307/my.cnf /data/3308
cp /data/3307/my.cnf /data/3309

#修改地址
sed -i 's#3307#3308#g' /data/3308/my.cnf
sed -i 's#3307#3309#g' /data/3309/my.cnf

#初始化数据库
mysqld --initialize-insecure  --user=mysql --datadir=/data/3307/data  --basedir=/usr/local/mysql
mysqld --initialize-insecure  --user=mysql --datadir=/data/3308/data  --basedir=/usr/local/mysql
mysqld --initialize-insecure  --user=mysql --datadir=/data/3309/data  --basedir=/usr/local/mysql

#授权
chown -R mysql.mysql /data/*

cd /usr/lib/systemd/system/

at>>mysqld3307.service<<EOF

[Unit]
Description=MySQL3307 Service
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target

[Install]
WantedBy=multi-user.target

[Service]
User=mysql
Group=mysql
Type=forking
PIDFile=/data/3307/data/mysql.pid

# Disable service start and stop timeout logic of systemd for mysqld service.
TimeoutSec=0

# Execute pre and post scripts as root
PermissionsStartOnly=true

# Needed to create system tables
#ExecStartPre=/usr/bin/mysqld_pre_systemd

# Start main service
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/data/3307/my.cnf --daemonize --pid-file=/data/3307/data/mysql.pid $MYSQLD_OPTS

# Use this to switch malloc implementation
EnvironmentFile=-/etc/sysconfig/mysql

# Sets open_files_limit
LimitNOFILE = 5000

Restart=on-failure

RestartPreventExitStatus=1

EOF

#复制配置文件 cp mysqld3307.service mysqld3308.service cp mysqld3307.service mysqld3309.service #修改地址 sed
-i 's#3307#3308#g' mysqld3308.service sed -i 's#3307#3309#g' mysqld3309.service #重新加载服务配置文件 systemctl daemon-reload #启动服务 systemctl start mysqld3307.service systemctl start mysqld3308.service systemctl start mysqld3309.service #开机启动 systemctl enable mysqld3307.service systemctl enable mysqld3308.service systemctl enable mysqld3309.service 验证多实例 netstat -lnp|grep 330 mysql -S /data/3307/mysql.sock -e "select @@server_id" mysql -S /data/3308/mysql.sock -e "select @@server_id" mysql -S /data/3309/mysql.sock -e "select @@server_id" netstat -lnp|grep 330 #查看服务是否启动 ps -ef | grep mysql #查看MySQL进程 ps -axo cmd | grep mysql #查看MySQL进程

 

 官方上档:https://dev.mysql.com/doc/refman/5.7/en/using-systemd.html

 

 

posted @ 2020-08-14 14:32  ypeuee  阅读(378)  评论(0编辑  收藏  举报