【史上最细教程】一台服务器上搭建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)

推荐文章:

【史上最细教程】MySQL服务器完成主从复制

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

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

相关文章

考过了PMP,面试的时候应该怎么办?

近期喜番在后台收到了很多同学们的私信,表示自己已经过了8月份的PMP考试,开始着手往项目管理岗位转型,但是对于项目管理岗位的面试却一筹莫展。放轻松,大家的需求喜番都了解了,喜番给大家总结了一些项目经理在面试的时…

护法革命:CIMIVO+SOTUY洗前发膜让发丝重获“芯”生

爱美之心人皆有之,经常烫染或者是在太阳下暴晒,都会对发丝造成一定的伤害,一旦发丝受损,就会导致发芯内部角蛋白流失、化学键连接断裂,进而出现各种发质问题。为此,日本知名化妆品集团NABOCUL旗下发芯修护引领品牌ENNEO创新研发两大核心成分:CIMIVO、SOTUY,能够从根源修护发芯内…

CLion安装与配置教程

目录 一、下载并安装CLion1、下载1、官网:2、注意: 2、安装1、下载完成后,直接点击安装包安装,即可。2、开始安装,然后下一步3、可以在此处自定义地址,然后下一步4、根据系统版本选择,然后下一步…

C#开发的OpenRA游戏之属性Selectable(9)

C#开发的OpenRA游戏之属性Selectable(9) 在游戏里,一个物品是否具有选中的能力,是通过添加属性Selectable来实现的。当一个物品不能被用户选取,那么就不要添加这个属性。 这个属性定义在下面这段描述里: ^Selectable: Selectable: SelectionDecorations: WithSpriteCon…

网络安全入门教程(非常详细)从零基础入门到精通

网络安全是一个庞大而不断发展的领域,它包含多个专业领域,如网络防御、网络攻击、数据加密等。介绍网络安全的基本概念、技术和工具,逐步深入,帮助您成为一名合格的网络安全从业人员。 一、网络安全基础知识 1.计算机基础知识 了解…

[点云分割] Clustering of Pointclouds into Supervoxels

介绍 “Clustering of Pointclouds into Supervoxels” 是一种点云数据聚类的方法,用于将点云数据分割成具有相似特征的超体素(supervoxel)。 超体素是一种在点云数据中表示连续区域的方法,类似于像素在图像中表示连续区域。超体…

vue + docxtemplater 导出 word 文档

一、痛点 word 导出 这种功能其实之前都是后端实现的,但最近有个项目没得后端。所以研究下前端导出。 ps: 前端还可以导出 pdf,但是其分页问题需要话精力去计算才可能实现,并且都不是很完善。可参考之前的文章:利用 h…

Peter算法小课堂—前缀和数组的应用

桶 相当于计数排序&#xff0c;看一个视频 桶排序 太戈编程1620题 算法解析 #include <bits/stdc.h> using namespace std; const int R11; int cnt[R];//cnt[t]代表第t天新增几人 int s[R];//s[]数组是cnt[]数组的前缀和数组 int n,t; int main(){cin>>n;for(…

意图交易:为用户思考,而不是让用户思考

意图叙事 在前不久&#xff0c;知名加密投资机构 Paradigm 的 CTO 、研究员 Georgios Konstantopoulos 曾在推特上对现有 ChainAsset 模式的糟糕且割裂的体验进行了吐槽&#xff0c;这也道出了很多链上用户的痛点。同时他也认为现有加密基建设施需要为用户思考&#xff0c;而不…

Nginx:简介、安装与部署

一、Nginx简介 Nginx是一个很好的高性能Web和反向大力服务器&#xff0c;它具有很多非常优越的特性&#xff1a;在高连接并发的情况下&#xff0c;Nginx是Apahe服务器的不错的替代品&#xff1a;Nginx在美国是虚拟主机生意选择的软件平台之一。能够支持50000个并发连接数的响应…

若依vue-修改标题和图标

因为我们拉下来的代码,图标和logo是若依的,这和我们需要做出来的效果有差别 这个时候就需要去对应的文件内去修改标题和图标 (主要就是这两个地方的图标和标题) 修改菜单里面的logo以及文字 修改文字 位置: src/layout/component/Sidebar/Logo.vue 此处的title文字是定义在…

plantUML学习与实战

背景 在日常工作或者生活中&#xff0c;使用交互图来描述想法&#xff0c;往往相对于文字来说&#xff0c;可读性更高&#xff0c;同时一定程度上可以提高沟通效率&#xff0c;但是苦于&#xff0c;不想对一堆控件拖拖拉拉&#xff0c;本人就是一个很讨厌画图&#xff0c;但是…

谈思生物医疗直播 | 利用类器官模型研究肺的发育与稳态

类器官是一种三维细胞培养物&#xff0c;其在细胞类型&#xff0c;空间结构及生理功能上能够模拟对应器官&#xff0c;从而提供一个高度生理相关的系统。自2009年小肠类器官首次建立至今&#xff0c;类器官研究已经延伸到多个组织系统&#xff0c;并成为当下生命科学领域最热门…

改善钢棒直线度检测可靠性 在线直线度测量仪替代人工检测

根据GB/T908-2019标准规定&#xff0c;钢棒的尺寸包括直径或边长、长度、弯曲度等。因此钢棒在生产中进行尺寸检测&#xff0c;保证成品符合规格&#xff0c;是降低废品率的重要一环。 有些钢棒的弯曲很明显&#xff0c;肉眼可看&#xff0c;但更有很多不明显的需要借助工具检测…

亿级流量架构服务降级

什么是服务降级 如果看过我前面对服务限流的分析,理解服务降级就很容易了,对于一个景区,平时随便进出,但是一到春节或者十一国庆这种情况客流量激增,那么景区会限制同时进去的人数,这叫限流,那么什么是服务降级呢? 简单来说就是,将一些不太重要的景区项目砍掉,平时就那么三五…

[PTQ]均匀量化和非均匀量化

均匀量化和非均匀量化 基本概念 量化出发点&#xff1a;使用整型数据类型代替浮点数据&#xff0c;从而节省存储空间同时加快推理速度。量化基本形式 均匀量化&#xff1a;浮点线性映射到定点整型上&#xff0c;可以根据scale/offset完成量化/反量化操作。非均匀量化 PowersO…

CentOS 7 使用cJSON 库

什么是JSON JSON是一种轻量级的数据交换格式&#xff0c;可读性强、编写简单。键值对组合编写规则&#xff0c;键名使用双引号包裹&#xff0c;冒号&#xff1a;分隔符后面紧跟着数值&#xff0c;有两种常用的数据类型是对象和数组。 对象&#xff1a;使用花括号{}包裹起来的…

怎么用 AI 来智能审核 PDF合同?5步搞定!

大家都知道审合同是一个比较耗费精力的过程,有没有更好的办法来智能审核PDF合同呢,今天就教大家一招,用AI来智能审核PDF合同。 在开始之前呢,我们要找到一款带AI功能的工具,我试用过擎盾智能合同审查、幂律智能等工具,感觉都不太理想,经过一段时间的摸索,我找到了一款比较适合…

【Linux】关系运算符、shell判断脚本执行时是否有传参、判断文件/文件夹是否存在、判断字符串是否相等、判断上个命令执行是否正常、判断字符串是否为空

&#x1f984; 个人主页——&#x1f390;个人主页 &#x1f390;✨&#x1f341; &#x1fa81;&#x1f341;&#x1fa81;&#x1f341;&#x1fa81;&#x1f341;&#x1fa81;&#x1f341; 感谢点赞和关注 &#xff0c;每天进步一点点&#xff01;加油&#xff01;&…

无损压缩技巧:减小PDF文件尺寸的有效方法

我们在制作pdf文档的时候&#xff0c;会加入许多内容&#xff0c;文字、图片等等&#xff0c;素材添加的过多之后就会导致pdf文档特别大&#xff0c;在上传或者储存时&#xff0c;就会特别不方便&#xff0c;所以今天就告诉大家一个pdf压缩的方法&#xff0c;使用pdf在线压缩工…
最新文章