mysql基础4——单机多实例部署

news2024/11/26 0:31:29

文章目录

  • 一、手动部署
  • 二、脚本部署

前提了解:

  • 适用于服务器不够,但需要把业务区分开的情况下,可以部署此方式。比如多个业务平台使用的数据库不同,不能只创建一个数据库,这时候就需要部署多实例。
  • 实际情况中能避免此方式就避免,因为没有高可用,出现问题所有业务数据都会出现问题,一般采用多机主从集群部署mysql。

一、手动部署

  • 官网二进制安装包下载地址

1.创建系统用户和组。

useradd -r -M -s /sbin/nologin mysql

2.解压安装包,并做软连接。

tar xf mysql-5.7.41-linux-glibc2.12-x86_64.tar
tar zxf mysql-5.7.41-linux-glibc2.12-x86_64.tar.gz -C /usr/local/

cd /usr/local/
ln -s mysql-5.7.41-linux-glibc2.12-x86_64/ mysql
chown -R mysql.mysql mysql*

3.配置环境变量。

echo 'export PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
source /etc/profile.d/mysql.sh

4.创建各实例数据存放目录。

mkdir -p /opt/data/{3306,3307,3308}
chown -R mysql.mysql /opt/data

5.初始化各实例,注意各实例输出的临时密码。

//初始化3306。
mysqld --initialize --user=mysql --datadir=/opt/data/3306

//初始化3307。
mysqld --initialize --user=mysql --datadir=/opt/data/3307

//初始化3308。
mysqld --initialize --user=mysql --datadir=/opt/data/3308

6.生成配置文件。

[root@localhost ~]# vim /etc/my.cnf
[mysqld_multi]
mysqld = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin

[mysqld3306]
datadir = /opt/data/3306
port = 3306
socket = /tmp/mysql3306.sock
pid-file = /opt/data/3306/mysql_3306.pid
log-error=/var/log/3306.log

[mysqld3307]
datadir = /opt/data/3307
port = 3307
socket = /tmp/mysql3307.sock
pid-file = /opt/data/3307/mysql_3307.pid
log-error=/var/log/3307.log

[mysqld3308]
datadir = /opt/data/3308
port = 3308
socket = /tmp/mysql3308.sock
pid-file = /opt/data/3308/mysql_3308.pid
log-error=/var/log/3308.log

7.安装perl,启动实例。

//安装perl,mysqld_multi依赖它。
yum -y install perl

//启动各实例。
mysqld_multi start 3306
mysqld_multi start 3307
mysqld_multi start 3308

8.修改各实例密码,只能指定套接字登录数据库。

//修改实例1数据库密码。
mysql -uroot -p'dqg!FlaDM0do' -S /tmp/mysql3306.sock
set password = password('citms');

//修改实2数据库密码。
mysql -uroot -p'ABJj.3hPWw7>' -S /tmp/mysql3307.sock
set password = password('citms');

//修改实例3数据库密码。
mysql -uroot -p'II4;A0ff1/Ib' -S /tmp/mysql3308.sock
set password = password('citms');

9.使用脚本启动服务。单实例可以使用mysqld脚本启动,但多实例不行。

[root@localhost ~]# vim /etc/init.d/my3306 
# chkconfig: 2345 35 65
# Description: akldjaldallk
export PATH=/usr/local/mysql/bin:$PATH
mysqld_multi=/usr/local/mysql/bin/mysqld_multi
case $1 in
    'start')
        $mysqld_multi start 3306
        ;;
    'stop')
        ps -ef|grep 3306|grep -v grep|awk '{print $2}'|xargs kill -9
        ;;
    'restart')
        $mysqld_multi reload 3306
        ;;
    'status')
        status=$($mysqld_multi report 3306|grep -c 'not')
        if [ $status -eq 0 ];then
            echo "mysqld3306 is running."
        else
            echo "mysqld3306 is not running."
        fi
        ;;
    *)
        echo "Usage: service $0 start|stop|restart|status"
        ;;
esac

//脚本添加执行权限。
chmod +x /etc/init.d/my3306

在这里插入图片描述

二、脚本部署

1.编写脚本。

[root@localhost ~]# cat install.sh 
#!/bin/bash
installdir=/usr/local
packname=mysql-5.7.41-linux-glibc2.12-x86_64.tar    ##需要修改。
unpck=$installdir/$(echo $packname| awk -F'.tar' '{print $1}')
port=3306
datadir=/data
PATH=$installdir/mysql/bin:$PATH

yum -y -q install perl  ncurses-compat-libs &>/dev/null
read -p "请输入,你要创建几个实例就输入数字几:"  num
read -p "请输入,你要为数据库设置什么密码:"   num1
id mysql &>/dev/null || /usr/sbin/useradd -r -M -s /sbin/nologin mysql

[ ! -d $installdir ] && mkdir -p $installdir
if [ !  -d  $unpck ];then
     echo "正在解压$packname至$installdir下"
     tar xf /opt/bck/$packname                 ##根据实际情况修改。
     tar xf /opt/bck/${packname}.tar -C $installdir            ##根据实际情况修改。
fi

ln -s $unpck  $installdir/mysql &>/dev/null
chown -R mysql.mysql $installdir/mysql*
echo "export PATH=$installdir/mysql/bin:\$PATH" > /etc/profile.d/mysql.sh


if [ $num -gt 1 ];then
cat > /etc/my.cnf <<EOF
[mysqld_multi]
mysqld = $installdir/mysql/bin/mysqld_safe
mysqladmin = $installdir/mysql/bin/mysqladmin
EOF
fi

for i in $(seq $num);do
    if [ $i -ne 1 ]; then
         let port++
    fi
         mkdir -p $datadir/$port &>/dev/null
         chown -R mysql.mysql $datadir
        wcinit=$(ls $datadir/$port|wc -l)
        if [ $wcinit -eq 0 ];then
            echo "正在初始化$port实例"
            $installdir/mysql/bin/mysqld --initialize-insecure --datadir=$datadir/$port --user=mysql --explicit_defaults_for_timestamp &> /dev/null
        fi
    if [ $num -eq 1 ];then
cat > /etc/my.cnf <<EOF
[mysqld]
basedir = $installdir/mysql
datadir = $datadir/$port
socket = /tmp/mysql.sock
port = 3306
pid-file = $datadir/$port/mysql.pid
user = mysql
skip-name-resolve
EOF

       \cp -a  $installdir/mysql/support-files/mysql.server /etc/init.d/mysqld
        sed -ri "s#^(basedir=).*#\1$installdir/mysql#g"      /etc/init.d/mysqld
        sed -ri "s#^(datadir=).*#\1$datadir#g"                   /etc/init.d/mysqld
        service mysqld start
        $installdir/mysql/bin/mysql -uroot -e "set password = password('$num1');"
    else
cat >> /etc/my.cnf <<EOF
[mysqld$port]
datadir = $datadir/$port
port = $port
socket = /tmp/mysql$port.sock
pid-file = $datadir/$port/mysql_$port.pid
log-error=/var/log/$port.log
EOF

        $installdir/mysql/bin/mysqld_multi start $port
        sleep 3
        $installdir/mysql/bin/mysql -uroot -S /tmp/mysql$port.sock -e "set password = password('$num1');"
    fi
done

//添加执行权限。
chmod +x install.sh

2.执行脚本,使用套接字登录数据库。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/702518.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

BOSHIDA 检测DC电源模块的稳定性能的几个步骤

BOSHIDA 检测DC电源模块的稳定性能的几个步骤 检测DC电源模块的稳定性能需要进行以下几个步骤&#xff1a; 1. 确认测试设备&#xff1a;需要准备一台多功能电源和一台数字万用表&#xff0c;可以根据需要选用不同型号和规格的测试设备。 2.设置电源参数&#xff1a;根据DC电…

DEM获取地形和计算点是否在矩形面积内的算法

1准备一个DEM地形&#xff0c;打开GlobalMap,如下选择 选择否&#xff0c;生成边界 将边界导出为shp文件&#xff0c;打开QGIS&#xff0c;安装get wkt插件&#xff0c;选择对应坐标系&#xff0c;获取wkt,如图 , 附判断点是否在此坐标范围内代码 /// <summary>/// 判断点…

echarts 柱形图 Y轴数据多,鼠标滚动显示数据,不缩放

坐标轴数据太多&#xff0c;只能滚动显示&#xff0c;滚动的时候&#xff0c;不想缩放&#xff0c;单纯平移就好。 滚动后第二屏的截图 没滚动的&#xff0c;第一屏的截图 option {title: {// text: World Population,},tooltip: {trigger: axis,axisPointer: {type: shadow,}…

15 年开源路,从大厂搬砖到创业挖坑

上个月回蚂蚁做了一场有关开源的分享&#xff0c;让我讲讲离开公司自己做开源创业后的感想。 正好借着端午节的时间&#xff0c;也更完整地回顾一下自己职业生涯 15 年来和开源结缘的经历。 邂逅 Cappuccino 08 年参加工作后&#xff0c;第一个投入精力的开源项目是 Objective…

安装Home Assistant

文章目录 前言1. 安装Home Assistant2. 配置Home Assistant3. 安装cpolar内网穿透3.1 windows系统3.2 Linux系统3.3 macOS系统 4. 映射Home Assistant端口5. 公网访问Home Assistant6. 固定公网地址6.1 保留一个固定二级子域名6.2 配置固定二级子域名 转载自远程穿透的文章&…

网络安全 | 密码基础知识介绍

概述 密码介绍 安全问题 保密性&#xff1a;对发送的消息进行获取完整性&#xff1a;对发送的消息进行篡改身份伪造&#xff1a;对发送的主体身份进行篡改&#xff0c;a发的消息&#xff0c;篡改为b发的行为抵赖&#xff1a;对发送的消息进行否认&#xff0c;丧失行为的可追…

VulnHub打靶记录——easy_cloudantivirus

靶机下载地址&#xff1a;https://www.vulnhub.com/entry/boredhackerblog-cloud-av,453/ 将靶机设置为NAT模式并启动。 主机发现&信息收集 nmap扫描本地网段 nmap -sn 192.168.50.1/24136是kali&#xff0c;137就是我们的目标靶机。 接着收集靶场信息&#xff1a; n…

【 Android11 WiFi开发 二 】WiFi连接、断开

前言 上篇文章介绍了WiFi列表的获取与展示和WiFi状态改变的广播监听&#xff0c;本篇将介绍介绍对WiFi的操作&#xff0c;连接、忘记&#xff0c;查看已连接的WiFi信息等。 相关文章 1、【 Android11 WiFi开发 一 】WiFi列表获取与展示 说明 老规矩&#xff0c;先把WiFi连接和…

卷积基础知识总结

卷积是卷积神经网络中的核心模块&#xff0c;卷积的目的是提取输入图像的特征&#xff0c;如下图所示&#xff0c;卷积可以提取图像中的边缘特征信息。卷积也称为过滤器&#xff0c;即Filter 1 卷积的计算方法 卷积运算本质上就是在滤波器和输入数据的局部区域间做点积 注意…

MyBatis介绍与安装下载

目录 MyBatis 介绍 MyBatis 主要特点 MyBatis 下载 创建 Maven 工程 IDEA 连接数据库 导入JAR文件到项目 MyBatis 介绍 MyBatis是一种开源的Java持久化框架&#xff0c;用于将SQL数据库访问和映射任务与Java对象之间的映射分离。它提供了一种简单的方式来对数据库进行操…

消息中间件的首选之一:探索RocketMQ的优势和特性

​​​​​​​ 1、简介 RocketMQ 是一款开源的分布式消息队列系统&#xff0c;由阿里巴巴集团开发并开源。它是为了满足大规模分布式系统中的消息通信和异步解耦需求而设计的&#xff0c;具有高吞吐量、低延迟、可靠性强等特点。下面将详细介绍 RocketMQ 的架构、组件和关键特…

【网络进阶】Posix API与网络协议栈(三)

文章目录 1. 网络攻击和POSIX API与网络协议栈的关系1.1 网络攻击的基本概念和它们对协议栈的影响1.2 分布式拒绝服务&#xff08;DDoS&#xff09;攻击和网络协议栈1.3 地址解析协议&#xff08;ARP&#xff09;欺骗和POSIX API 2. 网络协议栈的理解和划分2.1 OSI七层模型2.2 …

AI 边缘计算控制器GEAC91

1 产品概览 产品概览 GEAC91 AI边缘计算控制器是一款基于 NVIDIA Jetson AGX Xavier处理 器、面向智能边缘计算应用场景的解决方案。 GEAC91控制器具有 控制器具有 GMSL2、 千兆网口CAN总线、 RS232、RS422、 USB3.0、USB2.0、SD卡等丰富的外设接口 &#xff0c;支持常见激光雷…

记录--不定高度展开收起动画 css/js 实现

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 不定高度展开收起动画 最近在做需求的时候&#xff0c;遇见了元素高度展开收起的动画需求&#xff0c;一开始是想到了使用 transition: all .3s; 来做动画效果&#xff0c;在固定高度的情况下&#xf…

霍尔闭环电流传感器在电动观光旅游车上的应用

摘要&#xff1a;本文介绍了基于霍尔闭环原理&#xff0c;即磁平衡式原理的电流传感器在电动观光旅游车上的使用方法&#xff0c;替代传统的霍尔器件&#xff0c;较好的解决了电动车行业现有霍尔传感器的基本问题&#xff0c;在稳定性上更加优越。 关键词&#xff1a;霍尔闭环…

2022 年首届“钉钉杯”大学生大数据挑战赛B题:航班数据分析与预测——国奖论文代码分享

2023年的钉钉杯挑战赛马上要来了~这里给大家分享一下去年的国奖论文思路与代码 摘要&#xff1a; 随着民航事业的迅速发展 , 飞机出行已成为未来发展的一种必然趋势&#xff0c;然而近年来&#xff0c; 航班延误现象频频发生&#xff0c;成为困扰机场和航空公司的难题。对航班…

Idea项目application.properties配置文件默认GBK,如何设置默认为UTF-8编码

简述&#xff1a;java程序在项目中一般设置都是UTF-8编码格式&#xff0c;但是项目application.properties 文件默认是GBK,需要手工修改默认编码格式 步骤&#xff1a; file->setting->editor->file encodings下&#xff0c;勾选transparent native-to-ascll conver…

AR远程协助平台运用到建筑领域能带来哪些帮助?

随着科技的不断发展&#xff0c;远程协同培训已经成为了一种越来越受欢迎的学习方式。在建筑施工领域中&#xff0c;这种学习方式同样具有很大的应用价值。本文将探讨AR远程协助平台在建筑施工中的应用。 首先&#xff0c;AR远程协助平台可以提高建筑施工的效率和质量。传统的…

Java学习之Varargs机制

概述 Varargs&#xff0c;即variable number of arguments&#xff0c;variable arguments。中文一般译为&#xff0c;可变长度参数&#xff0c;或简称可变参数&#xff0c;参数具体来说是形参。 自JDK5引入&#xff0c;借助这一机制&#xff0c;可以定义能和多个实参相匹配的…

基于Java+SpringBoot+Vue的流浪动物救助平台设计与实现

博主介绍&#xff1a;✌擅长Java、微信小程序、Python、Android等&#xff0c;专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3fb; 不然下次找不到哟 Java项目精品实战案…