linux安装mysql多实例

目录

一,多实例应用场景 

二,MySQL多实例独特性

1,独立进程

2,独立端口

3,独立配置文件

4,独立数据文件目录

三,下载安装mysql

1,下载地址

  2,下载命令

3,解压

四,配置启动mysql多个实例

1,创建多实例数据文件目录

2,创建多实例配置文件 

3,配置MySQL多实例文件权限 

4,初始化多实例数据库

5,启动多实例

6,把bin目录添加到path全局变量

四,检查

1,进程检查

2,端口检查

3,登录不同多实例

五,创建systemd服务实现开机自启动

1,创建启动,停止,重启脚本

2,创建systemd服务

3,重载 Systemd 管理器配置

4,设置开机启动

5,启动服务

6,检查服务状态

7,重新启动服务

8,停止服务

9,其他两个只需要修改

10,重启主机测试  sudo reboot

11,取消开机自启动


一,多实例应用场景 

1.业务不是特别繁忙,且项目多,并且希望业务隔离开。

2.业务不是特别繁忙,想省钱。

3.主从复制,读写分离集群环境,节省服务器数量...

4.大厂都会多实例,比如sina、百度、阿里。

5.使用的是物理服务器。

二,MySQL多实例独特性

1,独立进程

2,独立端口

3,独立配置文件

/data/3306/my.cnf

/data/3307/my.cnf

/data/3308/my.cnf 

4,独立数据文件目录

/data/3306/data

/data/3307/data

/data/3308/data

三,下载安装mysql

1,下载地址

https://downloads.mysql.com/archives/community/

  2,下载命令

sudo wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.36-linux-glibc2.28-x86_64.tar.xz

3,解压

sudo mkdir /opt/mysql8.0.36

sudo tar -xf mysql-8.0.36-linux-glibc2.28-x86_64.tar.xz
sudo mv mysql-8.0.36-linux-glibc2.28-x86_64 /opt/mysql8.0.36

四,配置启动mysql多个实例

1,创建多实例数据文件目录

sudo mkdir -p /data/{3306,3307,3308}/data

sudo chown -R mysql.mysql /data

2,创建多实例配置文件 

	# 3306实例 	
    sudo cat >/data/3306/my.cnf <<EOF 
	[mysqld] 
	user=mysql 
	basedir=/usr/local/mysql 
	datadir=/data/3306/data 
	port=3306 
	socket= /data/3306/mysql.sock 
	mysqlx=0 
	EOF 	
	# 3307实例 
    sudo cat >/data/3307/my.cnf <<EOF 
	[mysqld] 
	user=mysql 
	basedir=/usr/local/mysql 
	datadir=/data/3307/data 
	port=3307 
	socket= /data/3307/mysql.sock 
	mysqlx=0 
	EOF 
	# 3308实例 
	sudo cat >/data/3308/my.cnf <<EOF 
	[mysqld] 
	user=mysql 
	basedir=/usr/local/mysql 
	datadir=/data/3308/data  
	port=3308 
	socket=/data/3308/mysql.sock 
	mysqlx=0 

3,配置MySQL多实例文件权限 

sudo chown -R mysql.mysql /data/{3306,3307,3308}/data

4,初始化多实例数据库

sudo /opt/mysql8.0.36/bin/mysqld --initialize-insecure --user=mysql --basedir=/opt/mysql8.0.36 --datadir=/data/3306/data

sudo /opt/mysql8.0.36/bin/mysqld --initialize-insecure --user=mysql --basedir=/opt/mysql8.0.36 --datadir=/data/3307/data

sudo /opt/mysql8.0.36/bin/mysqld --initialize-insecure --user=mysql --basedir=/opt/mysql8.0.36 --datadir=/data/3308/data

5,启动多实例

sudo /opt/mysql8.0.36/bin/mysqld_safe --defaults-file=/data/3306/my.cnf & 
sudo /opt/mysql8.0.36/bin/mysqld_safe --defaults-file=/data/3307/my.cnf & 
sudo /opt/mysql8.0.36/bin/mysqld_safe --defaults-file=/data/3308/my.cnf & 

6,把bin目录添加到path全局变量

  1. 使用文本编辑器编辑 /etc/profile 文件

    sudo vim /etc/profile
    
  2. 在文件的末尾添加以下行:

    export PATH=/opt/mysql8.0.36/bin:$PATH
    
  3. 保存文件并退出编辑器。

  4. 为了使更改生效,可以重新登录或者执行以下命令:

    source /etc/profile

四,检查

1,进程检查

2,端口检查

3,登录不同多实例

mysql -S /data/3306/mysql.sock -u root #<==登录3306,默认无密码。
mysql -S /data/3307/mysql.sock -u root #<==登录3307,默认无密码。 
mysql -S /data/3308/mysql.sock -u root #<==登录3308,默认无密码。
	

五,创建systemd服务实现开机自启动

1,创建启动,停止,重启脚本

sudo vim /data/3306/mysql

#!/bin/sh
#init
port=3306 ##唯一区别就是这里。
mysql_user="root"
CmdPath="/opt/mysql8.0.36/bin"
mysql_sock="/data/${port}/mysql.sock"
mysqld_pid_file_path=/data/$port/$port.pid
start(){
    if [ ! -e "$mysql_sock" ];then
        printf "Starting MySQL...\n"
        /bin/sh ${CmdPath}/mysqld_safe --defaults-file=/data/${port}/my.cnf --pid-file=$mysqld_pid_file_path 2>&1 > /dev/null &
        sleep 3
    else
        printf "MySQL is running...\n"
        exit 1
    fi
}
stop(){
    if [ ! -e "$mysql_sock" ];then
        printf "MySQL is stopped...\n"
        exit 1
    else
        printf "Stoping MySQL...\n"
        mysqld_pid=`cat "$mysqld_pid_file_path"`
         if (kill -0 $mysqld_pid 2>/dev/null)
           then
             kill $mysqld_pid
             sleep 2
         fi
    fi
}

restart(){
    printf "Restarting MySQL...\n"
    stop
    sleep 2
    start
}

case "$1" in
    start)
        start
    ;;
    stop)
        stop
    ;;
    restart)
        restart
    ;;
    *)
        printf "Usage: /data/${port}/mysql {start|stop|restart}\n"
esac

2,创建systemd服务

 sudo vim /etc/systemd/system/mysql3306.service

[Unit]
Description=MySQL Server on port 3306
After=network.target

[Service]
Type=forking
User=root
ExecStart=/bin/sh /data/3306/mysql start
ExecStop=/bin/sh /data/3306/mysql stop
ExecReload=/bin/sh /data/3306/mysql restart
PIDFile=/data/3306/3306.pid
Restart=on-failure
RestartSec=30

[Install]
WantedBy=multi-user.target

3,重载 Systemd 管理器配置

sudo systemctl daemon-reload

4,设置开机启动

sudo systemctl enable mysql3306.service

5,启动服务

sudo systemctl start mysql3306.service

6,检查服务状态

sudo systemctl status mysql3306.service


7,重新启动服务

sudo systemctl restart mysql3306.service

8,停止服务

 sudo systemctl stop mysql3306.service


9,其他两个只需要修改

sudo vim /data/3307/mysql

sudo vim /data/3308/mysql


sudo vim /etc/systemd/system/mysql3307.service

[Unit]
Description=MySQL Server on port 3307
After=network.target

[Service]
Type=forking
User=root
ExecStart=/bin/sh /data/3307/mysql start
ExecStop=/bin/sh /data/3307/mysql stop
ExecReload=/bin/sh /data/3307/mysql restart
PIDFile=/data/3307/3307.pid
Restart=on-failure
RestartSec=30

[Install]
WantedBy=multi-user.target

sudo vim /etc/systemd/system/mysql3308.service

[Unit]
Description=MySQL Server on port 3308
After=network.target

[Service]
Type=forking
User=root
ExecStart=/bin/sh /data/3308/mysql start
ExecStop=/bin/sh /data/3308/mysql stop
ExecReload=/bin/sh /data/3308/mysql restart
PIDFile=/data/3308/3308.pid
Restart=on-failure
RestartSec=30

[Install]
WantedBy=multi-user.target

设置开机自启动:

sudo systemctl enable mysql3307.service
sudo systemctl enable mysql3308.service


10,重启主机测试  sudo reboot

11,取消开机自启动

sudo systemctl disable mysql3308.service

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值