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

这篇具有很好参考价值的文章主要介绍了mysql基础4——单机多实例部署。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前提了解:

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

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

二、脚本部署

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}.gz -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.执行脚本,使用套接字登录数据库。
mysql基础4——单机多实例部署文章来源地址https://www.toymoban.com/news/detail-510319.html

到了这里,关于mysql基础4——单机多实例部署的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • k8s单机部署mysql

    前面我们学习了k8s入门系列文章,了解了k8s的一些基础概念以及怎么使用。本篇文章将进行一个小小的实战,使用k8s来部署单机版的mysql数据库,基本涵盖到前面讲到的Namespace、Pod、Deployment、Service、PV、PVC、Secret等资源对象。 我们先画一张结构图来表示整个部署的逻辑流程,

    2024年02月09日
    浏览(42)
  • 【大数据基础平台】星环TDH社区开发版单机部署

    🦄 个人主页——🎐开着拖拉机回家_大数据运维-CSDN博客 🎐✨🍁 🪁🍁🪁🍁🪁🍁🪁🍁 🪁🍁🪁🍁🪁🍁🪁 🪁🍁🪁🍁🪁🍁🪁🍁🪁🍁🪁🍁 感谢点赞和关注 ,每天进步一点点!加油! 目录 🍁 博主 \\\"开着拖拉机回家\\\"带您 Go to New World.✨🍁 一、概述 二、安装TDH-

    2024年02月06日
    浏览(29)
  • 单机部署Kafka和开启SASL认证以及基础命令使用

    ​ 操作系统:linux kafka:kafka_2.13-3.3.2 zookeeper:apache-zookeeper-3.7.1-bin 1.下载zookeeper和kafka安装包 2.解压 3.修改zookeeper配置文件并启动 修改zoo.cfg文件,增加以下命令 创建zk_server_jaas.conf文件(开启kafka sasl认证使用),文件内容 此外,认证过程需要导入kafka的依赖类,在下载的kafka

    2024年01月18日
    浏览(56)
  • 【Ambari】HDP单机自动化安装(基础环境和MySQL脚本一键安装)

    🦄 个人主页 ——🎐开着拖拉机回家_Linux,大数据运维-CSDN博客 🎐✨🍁 🪁🍁🪁🍁🪁🍁🪁🍁 🪁🍁🪁🍁🪁🍁🪁 🪁🍁🪁🍁🪁🍁🪁🍁🪁🍁🪁🍁 感谢点赞和关注 ,每天进步一点点!加油! 目录 一、版本信息 1.1大数据组件版本 1.2Apache Components 1.3Databases支持版本

    2024年02月05日
    浏览(38)
  • 【MySQL】快速了解MySQL基础

    登录MySQL后我们可以使用命令 show databases ,来查看有哪些数据库。 如果我们想创建一个数据库可以使用 create database 数据库名 [charset utf8] 命令,而charset utf8 可以设置数据库字符编码为utf8,MySQL的utf8编码不是真正的utf8,没有包含某些复杂的中文字符。MySQL真正的utf8是使用ut

    2024年02月08日
    浏览(34)
  • 2.Mysql 多实例的部署和应用

    Mysql多实例的概念: MySql多实例就是在一台机器上开启多个不同的服务端口,运行多个MySql服务进程,通过不同的socket监听不同的服务端口来提供各自的服务。 这些Mysql多实例共用一套MySql安装程序,使用不同的my.cnf(也可以相同)配置文件、启动程序(也可以相同)和数据文

    2024年04月12日
    浏览(33)
  • 初识MySQL:了解MySQL特性、体系结构以及在Linux中部署MySQL

    目录 MySQL简介 MySQL特性 MySQL体系结构 SQL的四个层次: 连接层: SQL层: 插件式存储引擎: 物理文件层: 一条SQL语句的执行流程: MySQL在Linux中的安装、部署 首先需要下载mysql软件包:   MySQL是一个小型关系数据库管理系统,开发者为瑞典MySQL AB公司。在2008年1月16号被sun公司

    2024年02月12日
    浏览(59)
  • 【MySQL】一文带你了解MySQL的基础知识

    🎬 博客主页:博主链接 🎥 本文由 M malloc 原创,首发于 CSDN🙉 🎄 学习专栏推荐:LeetCode刷题集! 🏅 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 📆 未来很长,值得我们全力奔赴更美好的生活✨ ------------------❤️分割线❤️------------------------- —————————

    2024年02月08日
    浏览(51)
  • MySQL多实例部署:从概念到实操的全面指南

    目录 MySQL多实例管理 单实例 什么是多实例 多实例的好处 多实例的弊端 MySQL多实例用在哪些场景 资金紧张的公司 用户并发访问量不大的业务 大型网站也有用多实例 部署MySQL多实例 rpm和源码的优缺点 二进制方式安装mysql 准备二进制mysql运行所需的环境 准备多个实例的配置文

    2024年02月21日
    浏览(33)
  • 华为云云耀云服务器L实例评测 | 快速部署MySQL使用指南

    哈喽大家好,我是阿Q。就在前几天,去年买的华为云服务器刚刚过期,这几天正愁没有服务器可以使用。刚好看到咱们华为云开展的评测活动,可以免费领取一台一个月期限的【云耀云服务器L实例2核2G3M】的服务,真是喜从天降呀,果断参加活动领取一波福利。 要想使用该

    2024年02月22日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包