史上最细教程-一台服务器上搭建2个MySQL实例

史上最细教程-一台服务器上搭建2个MySQL实例

文章目录

  • 史上最细教程-一台服务器上搭建2个MySQL实例
    • 环境准备:
    • 操作步骤:
      • 1.安装MySQL
      • 2.配置搭建3306、3307实例
      • 3.初始化3306、3307实例、远程连接访问支持

环境准备:

服务器:阿里云CentOS7

MySQL数据库:mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz

这里已为您准备安装包(gitee): https://gitee.com/song-rice/devops-and-middleware-module-learning/blob/master/mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz

或者去官网下载:http://dev.mysql.com/get/Downloads


操作步骤:

1.安装MySQL

先看看是否已安装过,如果已安装过,先卸载干净;然后检查安装环境是否支持,重新安装;

# 查找已安装的MySQL软件包
rpm -qa|grep mysql 
rpm -qa|grep mariadb   # CentOS7下还需要查找是否存在mariadb包

# 如果输入上述两个命令后都输出存在有包,则需要执行删除命令
rpm -e --nodeps mysql-libs-xxx.el6.x86_64
rpm -e --nodeps mariadb-libs-xxx.x86_64

# 增加文件操作权限,安装MySQL后MySQL会用户在/tmp目录下新建tmp_db文件,需要给/tmp目录较大的权限操作
chmod -R 777 /tmp

# 检查系统中是否存在一些安装MySQL时需要的依赖库
rpm -qa|grep libaio
rpm -qa|grep net-tools

# 如果不存在则需要安装 
yum install libaio   # 或者 yum -y install libaio net-tools
# MySQL 5.7.19和更高版本对libnuma库具有依赖性 
yum install libnuma

都没有问题后,将MySQL安装包直接解压到指定位置即可。

# 创建mysql用户和用户组
groupadd mysql
useradd -r -g mysql -s /bin/false mysql  # 创建一个名为mysql的系统用户,该用户属于mysql组,但不能登录系统。这通常用于安装和配置MySQL数据库服务时使用。

# 解压安装包
cd /usr/local/  # 进入安装包所在位置 
tar xzvf /mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz   # 解压后出现mysql文件夹

# 解压后查看
cd /mysql
ls -l

(图示:我的安装包位置:/usr/local,我的解压位置:/usr/local/mysql)

image-20231122161737580


2.配置搭建3306、3307实例

到此,MySQL数据库装好了,下面就是创建对应3306、3307端口MySQL实例。

考虑下3306、3307不同实例数据文件放在哪?配置文件放在哪?这些都需要新建文件夹存放,

下面就是创建3306、3307不同实例的数据、配置等文件存放位置。

# 创建数据文件存放路径
mkdir -p /usr/local/mysql/{3306,3307}/data
# 修改文件权限属性
chown -R mysql:mysql /usr/local/mysql

# 创建实例3306、3307配置文件my.cnf,直接复制下面的配置进去即可

/3306/my.cnf 里面就是指定端口、服务目录路径、数据存放路径、日志存放路径、进程文件路径、编码(数据库和服务端的默认字符都是latin1,如果不修改容易出现乱码)等

[mysqld]

port=3306
user=mysql
basedir=/usr/local/mysql 
datadir=/usr/local/mysql/3306/data
lower_case_table_names=1
innodb_buffer_pool_size=128M
socket=/tmp/mysql_3306.sock
explicit_defaults_for_timestamp=true

symbolic-links=0

log-error=/usr/local/mysql/3306/log/mysqld.log
pid-file=/usr/local/mysql/3306/run/mysqld.pid

character_set_server=utf8mb4
init_connect='SET NAMES utf8mb4'

3307/my.cnf

[mysqld]

port=3307
user=mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/3307/data
lower_case_table_names=1
innodb_buffer_pool_size=128M
socket=/tmp/mysql_3307.sock
explicit_defaults_for_timestamp=true

symbolic-links=0

log-error=/usr/local/mysql/3307/log/mysqld.log
pid-file=/usr/local/mysql/3307/run/mysqld.pid

character_set_server=utf8mb4
init_connect='SET NAMES utf8mb4'

(图示:我的3306、3307实例数据、配置等文件存放位置)

image-20231122162039534

(图示:我的3306、3307目录)

image-20231122164911234

image-20231122164849802

now,3306、3307配置就完成了,现在开始初始化这两个数据库实例,设置mysql系统环境变量,最后启动指定实例,root账号密码登录即可。

# 初始化3306实例数据库  
# 指定配置文件、基础目录路径、数据存放路径
# 注意,初始化结束的最后一行记录了root的密码,记录下来
/usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/3306/my.cnf --initialize --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/3306/data
# 初始化3307实例数据库
# 注意,初始化结束的最后一行记录了root的密码,记录下来
/usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/3307/my.cnf --initialize --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/3307/data


# 设置系统环境变量
vim /etc/profile
# 在文件末尾添加下面信息  和java在window中配置系统环境一样
export PATH=/usr/local/mysql/bin:$PATH
#使环境变量生效
source /etc/profile


# 启动数据库
# 将路径下文件都授权给mysql
chown -R mysql:mysql /usr/local/mysql
# 启动数据库实例3306、3307
nohup /usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/3306/my.cnf --user=mysql &
nohup /usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/3307/my.cnf --user=mysql &


# 查看MySQL进程状态  可以看到mysql3个进程(root、mysql/3306、mysql/3307)
ps -ef|grep mysql
# 查看端口使用情况   可以看到3306、3307端口被占用
netstat -ntl


# 登录3306、3307 mysql服务器
mysql -uroot -h127.0.0.1 -p -P3306
Enter password: 输入上面记录的密码(这里输入时不会展示)

(图示:我的3306、3307进程查看)

image-20231122170855943

(图示:我的3306、3307端口查看)

image-20231122170938750

(图示:在服务器上登录3306数据库)

image-20231122171731309

到这里,服务器上安装就结束了!


3.初始化3306、3307实例、远程连接访问支持

然后执行下面这些初始化数据库配置:

修改root账号的初始密码:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'your_new_password';

修改字符集,数据库和服务端默认字符集查看为latin1,不修改会容易出现乱码:

# 查看字符集
show variables like 'character%';
# 修改数据库的字符集(其中mydb为数据库名)
alter database mydb character set 'utf8';
# 修改数据库表的字符集(其中mytbl为表名)
alter table mytbl convert to character set 'utf8';

提供远程访问配置:让远程连接工具如Navicate等能连接到服务器数据库

# 查看MySQL的用户信息  
# host:表示连接类型 user:表示用户名,同一用户通过不同方式链接的权限是不一样的  authentication_string:密码
# 	%:表示所有远程通过 TCP方式的连接 
#   localhost:本地方式通过命令行方式的连接 ,比如mysql -u xxx -p 123xxx 方式的连接。
select host, user, authentication_string from mysql.user;


# 看到都是localhost时,不能继续远程连接,所以要修改root用户连接方式为 % 
update user set host = '%' where user = 'root';
# 刷新权限
FLUSH PRIVILEGES; 
# 退出mysql
exit;

image-20231123085047657

检查服务器安全组、防火墙端口是否开放,如果端口不能通过,也不能远程访问:

# 查看防火墙状态
systemctl status firewalld
# 如果不是显示active状态,需要打开防火墙
systemctl start firewalld


# 查看所有已开放的临时端口(默认为空)
firewall-cmd --list-ports
# 添加临时开放端口(例如:比如我修改ssh远程连接端口是3306,则需要开放这个端口)
firewall-cmd --add-port=3306/tcp
# 添加永久开放的端口(例如:223端口)
firewall-cmd --add-port=3306/tcp --permanent


# 关闭临时端口
# firewall-cmd --remove-port=80/tcp
# 关闭永久端口
# firewll-cmd --remove-port=80/tcp --permanent


# 配置结束后需要输入重载命令并重启防火墙以生效配置
firewall-cmd --reload
systemctl restart firewalld


# 检查阿里云安全组放行的端口

(图示:防火墙状态查看)

image-20231123090019258

(图示:防火墙放行端口查看)

(图示:阿里云服务器安全组查看)

image-20231123090621882


最后,navicete 连接mysql 3306\3307两个数据库:

image-20231123091020053

image-20231123091042371

到此,所有恭喜你,完成了服务器上搭建2个数据库!!!

在这里插入图片描述

搭建此环境为了操作ShardingJDBC主从复制等操作,后续出详细教程,各位看官敬请关注!


参考文章:

在一台Linux服务器上安装多个MySQL实例(二)–使用单独的MySQL配置文件 - gegeman - 博客园 (cnblogs.com)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Redis主从,缓存击穿,雪崩,哨兵等问题

Redis的性能管理: Redis的数据缓存在内存当中 INFO memory used_memory:853808 Redis中数据占用的内存 used_memory_rss:3715072 Redis向操作系统申请的内容 used_memory_peak:853808 Redis使用的内存的峰值 系统巡检:硬件巡检,数据库…

图像分类原理

一、什么是图像分类(Image Classification) 图像分类任务是计算机视觉中的核心任务,其目标是根据图像信息中所反映的不同特征,把不同类别的图像区分开来。 二、图像分类任务的特点 对于人来说,完成上述的图像分类任务简直轻而易举&#xf…

YOLOV5标注训练自己的数据全流程教程

概述 yolo在目标检测领域是非常有代表性的模型,它速度快识别效果也很精准,是实时检测模型中应用最广泛的。yolo的原理和代码是很容易获得的,且有各式各样的教程,但是模型怎么使用的教程相对比较少。本文讲解如何使用yolov5模型训…

java.lang.IllegalStateException: Can not add resource

安卓解决 java.lang.IllegalStateException: Can not add resource 放两个链接 解决Can not add resource (com.android.aaptcompiler.ParsedResourcea980fbb) to table_言并肃的博客-CSDN博客 android attr何时会冲突_android attr冲突-CSDN博客 然后去新增的依赖找资源…

详解——菱形继承及菱形虚拟继承

目录 一,菱形继承 1.1单继承 1.2多继承 1.3菱形继承 1.4菱形继承的问题 1.5虚拟继承解决数据冗余和二义性的原理 二.继承的总结和反思 一,菱形继承 C三大特性——继承-CSDN博客 1.1单继承 单继承:一个子类只有一个直接父类时称这个继…

合伙人注册即得/创业平台扶持!

问心一语持续体验中~ 与公司签订线下(线上)纸质合伙人代理合同,具备法律效力。 一级直推、非一级直推注册即得奖励。(消耗完毕被邀请用户赠送的AI免费使用条数) 即:邀请1人注册即得并消耗!只需注册无需充值&#xff…

2023年度openGauss标杆应用实践案例征集

标杆应用实践案例征集 2023 openGauss 数据库作为企业IT系统的核心组成部分,是数字基础设施建设的关键,是实现数据安全稳定的保障。openGauss顺应开源发展趋势,强化核心技术突破,着力打造自主根社区,携手产业伙伴共同…

单片机语音芯片开发要解决的问题

在单片机语音芯片开发过程中,可能会遇到多种问题,这些问题可能来自于技术层面,也可能来自于芯片本身的设计和应用层面。下面让我们具体从芯片的功耗、语音识别的准度、芯片的尺寸和芯片的可靠性四个方面开展讨论。 1.芯片的功耗问题 首先&a…

干货分享 | 一分钟带你了解TSMaster小程序编辑代码智能提示功能

本文给大家带来TSMaster小程序编辑的新功能,其中主要包含:代码编辑智能提示功能、可用外部代码编辑器编辑小程序代码并同步。 本文关键字:C小程序、Python小程序、代码智能提示、外部代码编辑器、Visual Studio 目录/Catalog ● TSMaster的…

【网络】数据链路层协议

数据链路层协议 一、链路层解决的问题二、以太网协议1、局域网技术2、令牌环网(了解)3、以太网通信原理4、 MAC地址5、以太网帧格式6、碰撞避免7、最大传输单元MTU 二、ARP协议1、ARP数据的格式2、ARP协议的工作流程3、ARP缓存表4、ARP协议中的一些问题7…

Python基础【二】--基本语句【2023.11.22】

1.条件语句 在进行逻辑判断时,我们需要用到条件语句,Python 提供了 if、elif、else 来进行逻辑判断。格式如下所示: if 判断条件1:执行语句1... elif 判断条件2:执行语句2... elif 判断条件3:执行语句3... else:执行语句4...ainput("请输…

软件包管理器yum和git

目录 一、Linux软件包管理器yum 1、Linux下的软件安装方法 2、了解yum 1、实际例子引入 2、yum 3、查找软件包 4、安装软件包 5、卸载软件 二、git 一、Linux软件包管理器yum 1、Linux下的软件安装方法 1、在Linux下安装软件,一个通常的办法是下载到程序的源…

让SOLIDWORKS Composer动画在PPT中随意转换

SOLIDWORKS Composer作为一款易学易用的技术图解软件,非常适合用来给客户展示自己的产品。这里我们教大家如何将Composer文件插入大PPT中,并任意切换文件,用以给客户展示不用的方案和产品。 1.首先大家要安装SOLIDWORKS Composer Player 这个…

【c语言】重温一下动态内存,int数组过大会造成栈错误

项目场景: 项目场景:互助群同学在刷题的过程中,遇到的一个题目,需要申请一个很大数组,于是这个同学就写了int[1000000],其实这样写也没有错,可是运行后却显示栈错误。于是就找到我来请教,我想就…

ConcurrentHashMap的数据结构+以及各个版本之间的区别

ConcurrentHashMap 1.7与1.8的区别 1、锁结构不同 2、put的流程不同 3、size的计算方式不同(1.8使用的使用basecell[]计算,有点类似于LongAdder,1.7使用三级通缉判断是否一样,不一样通过分段式加锁再求和) 4、数据结构不同,1.6 Re…

【HMS Core】应用内支付问题总结

【问题描述1】 集成应用内支付,怎么让微信或者支付宝的选项位于华为支付之前。 【解决方案】 目前不能调整顺序的。 【问题描述2】 用户手机上的价格,是按照什么货币单位显示的? 【解决方案】 手机客户端根据当前华为帐号所属的服务地&a…

Dropout 作用

一、 前言 Dropout出现的原因 训练深度神经网络的时候,总是会遇到两大问题:(1)容易过拟合(2)网络费时 在机器学习的模型中,如果模型的参数太多,而训练样本又太少,训练出…

自学成为android framework高手需要准备哪些装备-千里马车载车机系统开发学习

背景 hi,粉丝朋友们: 大家好!经常有很多学员买课同学都会问到需要准备哪些装备,我也回答了很多学员了,今天就搞一篇文章来统一说明一下,告诉一下大家如果你想从一个framework新手变成一个framework开发的高…

在SOLIDWORKS中如何提升保存PDF版本文件的清晰度

随着Solidworks年复一年的不断更新,不仅仅是整个软件的性能上的提升,其在输出文件的功能上也同样在精益求精。 但对于老版本的使用者和希望能让输出文件清晰度更进一步的使用者而言,可能目前我们所能达到的普通文件输出清晰度远远无法达到他们…

java jdk 版本切换

java jdk 版本切换 1.JAVA8_HOME ,JAVA17_HOME为切换的两个版,JAVA_HOME来选择 2.path中java_home配置项置顶,必须在蓝色选择中框上方,它是电脑自带的配置,位置太靠上会把我们自己的配置给覆盖掉 3.java -version 查看切换结果