当前位置: 首页 > news >正文

一台服务器部署两个独立的mysql实例

🍁博主简介
        🏅云计算领域优质创作者
        🏅2022年CSDN新星计划python赛道第一名

        🏅2022年CSDN原力计划优质作者
        🏅阿里云ACE认证高级工程师
        🏅阿里云开发者社区专家博主

💊交流社区:CSDN云计算交流社区欢迎您的加入!

目录

1 背景

2 安装MySQL

2 进行mysql安装

3 配置搭建3306、3307实例

4 设置mysql系统环境变量

5 分别初始化两个mysql数据库:

6 登录两个mysql

6 扩展

  👑👑👑结束语👑👑👑​


1 背景

公司进行压测和业务测试时候资源有限,两个环境都部署在一台服务器上,但是需要为了做业务测试不影响到压测测试,所有业务测试调用数据库要和压测的库分开。

这个时候就需要在这台服务器上部署两个mysql实例,然后分别有不同的配置文件,调用不同的数据文件。这样顶多需要考虑服务器的性能问题而已,两组测试互不干扰。

2 安装MySQL

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

# 先查找一下系统有没有mysql包,以免影响后续安装使用
[root@xiaopeng ~]# rpm -qa | grep mysql     #没有输出任何内容说明没有mysql包
[root@xiaopeng ~]# rpm -qa | grep mariadb   #我的系统输出了如下两个包,那么就需要清理掉
mariadb-libs-5.5.68-1.el7.x86_64
mariadb-5.5.68-1.el7.x86_64
[root@xiaopeng ~]# rpm -e  mariadb-libs-5.5.68-1.el7.x86_64 --nodeps
[root@xiaopeng ~]# rpm -e  mariadb-5.5.68-1.el7.x86_64 --nodeps
[root@xiaopeng ~]# rpm -qa | grep mariadb   #删除之后再查看就没有任何mariadb的包了
[root@xiaopeng ~]#
[root@xiaopeng ~]# chmod -R 755 /tmp        # 增加文件操作权限,安装MySQL后MySQL会用户在/tmp目录下新建tmp_db文件,需要给/tmp目录较大的权限操作
​
# 检查系统中是否存在一些安装MySQL时需要的依赖库
[root@xiaopeng ~]# rpm -qa|grep libaio      #我的系统检查发现有libaio依赖包
libaio-0.3.109-13.el7.x86_64
[root@xiaopeng ~]# rpm -qa|grep net-tools   #我的系统检查发现有net-tools依赖包(就是netstat命令)
net-tools-2.0-0.25.20131004git.el7.x86_64
# 如果不存在则执行yum -y install libaio net-tools安装即可 

2 进行mysql安装

# 首先创建mysql用户和用户组
[root@xiaopeng ~]# groupadd mysql       #创建一个组,组名叫mysql
[root@xiaopeng ~]# useradd -r -g mysql -s /bin/false mysql  # 创建一个名为mysql的系统用户,该用户属于mysql组,但不能登录系统。主要用来安装和配置MySQL数据库服务时使用。 
[root@xiaopeng ~]# cd /usr/local/       #进入安装目录
[root@xiaopeng local]# rz
# rz命令可以将windows的包上传到linux的当前目前
#如果没有这个命令的话执行yum -y install lrzsz就能安装上这个命令了

进行解压缩

[root@xiaopeng local]# tar -zxf mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz  #解压缩这个包
[root@xiaopeng local]# mv mysql-5.7.35-linux-glibc2.12-x86_64 mysql         #改名叫mysql

mysql服务安装完毕

3 配置搭建3306、3307实例

创建3306、3307不同实例的数据存放路径和配置等文件存放位置。

# 分别创建数据文件存放路径
[root@xiaopeng local]# mkdir -p mysql/3306/data
[root@xiaopeng local]# mkdir -p mysql/3307/data
​
# 分别创建日志存放路径
[root@xiaopeng local]# mkdir -p mysql/3306/log
[root@xiaopeng local]# mkdir -p mysql/3307/log
​
# 分别创建两个mysql的配置文件
[root@xiaopeng local]# vim mysql/3306/my.cnf
[mysqld]
port=3306               #实例1的服务端口为3306
user=mysql              #用户名mysql
basedir=/usr/local/mysql        #mysql服务安装路径
datadir=/usr/local/mysql/3306/data  #实例1的数据存放路径
lower_case_table_names=1
innodb_buffer_pool_size=128M
socket=/tmp/mysql_3306.sock     #sock文件最后放在此目录下,否则连接mysql的时候还需要--socket=路径来指定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'
​
[root@xiaopeng local]# vim mysql/3307/my.cnf
[mysqld]
port=3307                               #实例1的服务端口为3307
user=mysql                              #用户名mysql
basedir=/usr/local/mysql                #mysql服务安装路径
datadir=/usr/local/mysql/3307/data      #实例1的数据存放路径
lower_case_table_names=1
innodb_buffer_pool_size=128M
socket=/tmp/mysql_3307.sock             #sock文件最后放在此目录下,否则连接mysql的时候还需要--socket=路径来指定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'
​
# 修改整个目录及子文件的所有者所属组为mysql
[root@xiaopeng local]# chown -R mysql:mysql /usr/local/mysql
[root@xiaopeng local]# ll 
[root@xiaopeng local]# cd mysql
[root@xiaopeng mysql]# tree 3306                #想用tree命令查看一下目录结构,显示没有这个命令
-bash: tree: 未找到命令
[root@xiaopeng mysql]# yum -y install tree       #那就下载一个
[root@xiaopeng mysql]# tree 3306                #再查看一下就显示了,配置文件和数据存放目录都完全隔离了
3306
├── data
└── my.cnf
[root@xiaopeng mysql]# tree 3307
3307
├── data
└── my.cnf

4 设置mysql系统环境变量

# 设置系统环境变量
[root@xiaopeng mysql]# vim /etc/profile         # 在文件末尾添加下面信息
export PATH=/usr/local/mysql/bin:$PATH
​
[root@xiaopeng mysql]# source /etc/profile      #加载一下使环境变量生效

5 分别初始化两个mysql数据库:

# 初始化3306实例数据库  
# 指定配置文件的位置、安装目录、数据存放路径
# 注意,初始化结束的最后一行记录了root的密码,复制到记事本
[root@xiaopeng mysql]# /usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/3306/my.cnf --initialize --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/3306/data
​
[root@xiaopeng mysql]# /usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/3306/my.cnf --initialize --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/3307/data
​
# 启动数据库实例3306、3307并放入后台
[root@xiaopeng mysql]# nohup /usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/3306/my.cnf --user=mysql &
[root@xiaopeng mysql]# nohup /usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/3307/my.cnf --user=mysql &

6 登录两个mysql

[root@xiaopeng mysql]# mysql -uroot -p'7VSb@4FUd^28U2KL' -h127.0.0.1 -p -P3306      
#3VSb@4FUd^28U2KL为初始化结束后复制的密码
[root@xiaopeng mysql]# mysql -uroot -p'9dTJylD*4s2ARdtx' -h127.0.0.1 -p -P3307      
#9dTJylD*4s2ARdtx为初始化结束后复制的密码

6 扩展

1、如果要修改root密码,使用如下命令

# 先登录到mysql中,然后执行如下命令
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('新密码');
# 一定要注意括号引号分号等符号是英文格式的

2、如果sock文件放在了其他目录下

mysql -uroot -p'密码' -h 127.0.0.1 --socket=/usr/local/data/mysql/tmp/mysql.sock --port=3306
# --socket=后面跟上sock文件的绝对路径
​
# 备份3306中的xiaopenglinux数据库
mysqldump -uroot -p'密码'  xiaopenglinux  > /usr/local/data/mysql/mysqlBackups/xiaopenglinux.sql --socket=/usr/local/data/mysql/tmp/mysql.sock --port=3306
​
# 还原xiaopenglinux数据库到3307数据库中
mysql -uroot -p'密码' < xiaopenglinux.sql --socket=/usr/local/data/mysql/tmp/mysql.sock --port=3307

3、创建普通用户并赋予权限

create user lark_test@'%' identified by '0dAJylD*a3C8Rdtx';
show grants for "username"@"localhost";
# username  用户名
# localhost 用户的本地权限
show grants for "username"@"%";
# %         代表用户的外部连接权限
​
#   ALL: 允许进行任何操作(拥有root权限)
#   USAGE: 只允许登录--无其他任何权限(一般新创建的用户是没有任何权限的)
grant all privileges on *.* to '用户'@'127.0.0.1' identified by '密码';
# 赋予新用户,从本地操作所有数据库,所有数据表的所有权限
grant all privileges on *.* to 'chai'@'%' identified by '666666';
# 赋予新用户,从外部操作所有数据库,所有数据表的所有权限(没有外部客户端的IP限制,但本地有限制)
​
flush privileges;
#刷新权限,使权限立即生效

  👑👑👑结束语👑👑👑

相关文章:

一台服务器部署两个独立的mysql实例

&#x1f341;博主简介&#xff1a; &#x1f3c5;云计算领域优质创作者 &#x1f3c5;2022年CSDN新星计划python赛道第一名 &#x1f3c5;2022年CSDN原力计划优质作者 &#x1f3c5;阿里云ACE认证高级工程师 &#x1f3c5;阿里云开发者社区专…...

SpringBoot(Lombok + Spring Initailizr + yaml)

1.Lombok 1.基本介绍 2.应用实例 1.pom.xml 引入Lombok&#xff0c;使用版本仲裁 <!--导入springboot父工程--><parent><artifactId>spring-boot-starter-parent</artifactId><groupId>org.springframework.boot</groupId><version&g…...

数据库基础知识超详细解析~‍(进阶/复习版)

文章目录 前言一、数据库的操作1.登入数据库2.创建数据库3.显示当前数据库4.使用数据库5.删除数据库 二、常用数据类型三、数据库的约束1约束类型2NULL约束3UNIQUE:唯一约束4DEFAULT&#xff1a;默认值约束5 PRIMARY KEY&#xff1a;主键约束6 FOREIGN KEY&#xff1a;外键约束…...

创建对象的方法有哪些

创建对象的方法主要取决于你使用的编程语言和上下文。下面我将列出一些主流编程语言中创建对象的方法&#xff1a; Python: 使用类定义和__init__方法&#xff1a; pythonclass MyClass: def __init__(self, name): self.name nameobj MyClass("Alice") 1.使用工厂…...

Oracle 10g字符编码

pl/sql developer查询数据时出现乱码&#xff0c;主要检查如下&#xff1a; 1、检查服务器编码 select * from v$nls_parameters;select * from nls_database_parameters;select userenv(language) from dual; 2、查看数据库可用字符集参数设置 select * from v$nls_valid_val…...

掌握抽象基础之20个必备原则,看完你还不会,你打我

抽象基础之20个必备原则 1. 面向对象编程&#xff08;OOP&#xff09;中抽象原则背后的基本思想是什么&#xff1f;2.抽象和封装的区别&#xff1f;3.提供一个现实生活中说明抽象的例子4.在编程语言中如何实现抽象&#xff1f;5.定义抽象类6.提供一个抽象类的真实世界场景7.解释…...

设计模式 -- 2:策略模式

目录 总结部分&#xff1a;策略模式的优点部分代码部分 总结部分&#xff1a; 策略模式和简单工厂模式很像 区别在于 简单工厂模式 需求的是由工程创造的类 去给客户直接答案 而策略模式在于 我有主体 一个主体 根据策略的不同来进行不同的计算 我的主体就负责收钱 然后调度相…...

【快速上手ProtoBuf】proto 3 语法详解

1 &#x1f351;字段规则&#x1f351; 消息的字段可以⽤下⾯⼏种规则来修饰&#xff1a; singular &#xff1a;消息中可以包含该字段零次或⼀次&#xff08;不超过⼀次&#xff09;。 proto3 语法中&#xff0c;字段默认使⽤该规则。repeated &#xff1a;消息中可以包含该…...

人工智能的幽默“失误”

人工智能迷惑行为大赏 随着ChatGPT热度的攀升&#xff0c;越来越多的公司也相继推出了自己的AI大模型&#xff0c;如文心一言、通义千问等。各大应用也开始内置AI玩法&#xff0c;如抖音的AI特效&#xff5e;在使用过程中往往会遇到一些问题&#xff0c;让你不得不怀疑&#x…...

js的异步请求?

在 JavaScript 中&#xff0c;进行异步请求通常涉及到使用 XMLHttpRequest 对象或者更现代的 Fetch API 或 Axios 库。这些工具可以帮助我们向服务器发送请求并在后台获取数据&#xff0c;而不会阻塞页面的其他操作。 下面是一个简单的示例&#xff0c;演示如何使用原生的 XML…...

华润对象存储(OBS)工具类

目录 一、备注二、工具类三、对象存储放在内网&#xff0c;如何实现外网访问 一、备注 1、ObjectBasicInfo、ObjectDetailInfo、ResultBody这三个类可自行替换或者去掉 二、工具类 package com.xxx.util;import com.amazonaws.HttpMethod; import com.amazonaws.auth.AWSStat…...

强缓存和协商缓存的区别?

协商缓存和强缓存是 HTTP 缓存机制中的两种不同的策略&#xff0c;用于减少网络请求并提高网页加载速度。它们之间的主要区别在于缓存的验证方式和服务器返回的响应头。 强缓存&#xff1a; 强缓存是基于过期时间&#xff08;Expires&#xff09;和缓存标识&#xff08;Cache…...

ChatGPT提问技巧——对抗性提示

ChatGPT提问技巧——对抗性提示 对抗性提示是一种允许模型生成能够抵御某些类型的攻击或偏差的文本的技术。这种技术可用于训练更健壮、更能抵御某些类型的攻击或偏差的模型。 要在 ChatGPT 中使用对抗性提示&#xff0c;应为模型提供一个提示&#xff0c;该提示的设计应使模…...

openGauss使用BenchmarkSQL进行性能测试(上)

一、前言 本文提供openGauss使用BenchmarkSQL进行性能测试的方法和测试数据报告。 BenchmarkSQL&#xff0c;一个JDBC基准测试工具&#xff0c;内嵌了TPC-C测试脚本&#xff0c;支持很多数据库&#xff0c;如PostgreSQL、Oracle和Mysql等。 TPC-C是专门针对联机交易处理系统…...

Java的线程池机制

Java的线程池机制是用来管理和调度多个线程的工具。通过线程池&#xff0c;可以避免频繁地创建和销毁线程&#xff0c;提高线程的复用率&#xff0c;减少资源消耗。 Java中提供了几种不同类型的线程池&#xff1a; 1、FixedThreadPool&#xff08;固定大小线程池&#xff09;…...

EasyCode 插件的具体使用

前言 EasyCode 是基于IntelliJ IDEA Ultimate版开发的一个代码生成插件&#xff0c;主要通过自定义模板&#xff08;基于velocity&#xff09;来生成各种你想要的代码。通常用于生成Entity、Dao、Service、Controller。如果你动手能力强还可以用于生成HTML、JS、PHP等代码。理…...

Ypay源支付6.9无授权聚合免签系统可运营源码

YPay是一款专为个人站长设计的聚合免签系统&#xff0c;YPay基于高性能的ThinkPHP 6.1.2 Layui PearAdmin架构&#xff0c;提供了实时监控和管理的功能&#xff0c;让您随时随地掌握系统运营情况。 说明 Ypay源支付6.9无授权聚合免签系统可运营源码 已搭建测试无加密版本…...

SpringBoot+Vue项目报错(问题已解决)

1、错误日志 2、分析原因&#xff1a; JWT strings must contain exactly 2 period characters. Found: 0 JWT字符串必须包含2个句号字符。发现:0 分析&#xff1a;可以判断出大概可能是token格式出现了问题 3、参考 http://t.csdnimg.cn/hfEiY 4、检查后端代码是否出现问…...

DEAP 自定义交叉操作

在遗传算法中&#xff0c;使用DEAP库来实现自定义的交叉操作可以非常灵活。如果你想模拟多个染色体的情况&#xff0c;通过在染色体的特定区间进行交叉&#xff0c;你需要自定义一个交叉函数。以下是一个示例&#xff0c;展示如何实现一个自定义的交叉函数&#xff0c;该函数允…...

ByText

getByText, queryByText, getAllByText, queryAllByText, findByText, findAllByText API​ getByText(// If youre using screen, then skip the container argument:container: HTMLElement,text: TextMatch,options?: {selector?: string *,exact?: boolean true,igno…...

子代理拆分任务:为什么要用上下文隔离保护 Agent 的思路清晰

子代理拆分任务&#xff1a;为什么要用上下文隔离保护 Agent 的思路清晰 很多人第一次看到子代理&#xff0c;注意力会先落在“一个 Agent 还能再叫出另一个 Agent”这件事上。这个现象当然有意思&#xff0c;但如果只停在这里&#xff0c;很容易错过 s04 真正想解决的问题。 …...

别再死记硬背了!用‘四体交叉’和‘双端口RAM’的实战题目,彻底搞懂计算机组成原理的存储器提速

从四体交叉到双端口RAM&#xff1a;用实战思维破解存储器提速难题 计算机组成原理中那些晦涩的存储器提速概念&#xff0c;是否总让你在题海中迷失方向&#xff1f;当"单体多字"、"多体并行"、"四体交叉"这些术语在教材里冰冷排列时&#xff0c;…...

开源工具Unlock Music:重获音频自由的完整指南

开源工具Unlock Music&#xff1a;重获音频自由的完整指南 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库&#xff1a; 1. https://github.com/unlock-music/unlock-music &#xff1b;2. https://git.unlock-music.dev/um/web 项目地址: https://gitc…...

Linux文件名修改方法大全

在Linux系统中&#xff0c;文件名修改是一个常见且重要的操作。文件名修改可以更好地管理文件和文件夹&#xff0c;使其更具可读性和有序性。通过更改文件名&#xff0c;可以清晰地表达文件的内容和用途&#xff0c;便于快速识别和定位文件。此外&#xff0c;对文件名进行调整还…...

别再复制粘贴了!深入理解STM32中IIR滤波器的差分方程与状态变量

从零构建STM32 IIR滤波器&#xff1a;差分方程、状态变量与C语言实现全解析 在嵌入式信号处理领域&#xff0c;IIR&#xff08;无限脉冲响应&#xff09;滤波器因其高效的计算特性和优异的频率选择性能&#xff0c;成为STM32等资源受限平台的理想选择。但许多开发者仅仅停留在&…...

告别复杂配置:一键启动MedGemma-X,开启智能阅片新体验

告别复杂配置&#xff1a;一键启动MedGemma-X&#xff0c;开启智能阅片新体验 1. 医疗影像AI的新范式&#xff1a;从标注工具到对话伙伴 1.1 传统影像分析系统的局限性 在放射科日常工作中&#xff0c;医生们常常面临这样的困境&#xff1a;面对一张胸部X光片&#xff0c;需…...

飞书机器人集成OpenClaw与百川2-13B-4bits量化版:对话触发任务实战

飞书机器人集成OpenClaw与百川2-13B-4bits量化版&#xff1a;对话触发任务实战 1. 为什么选择这个技术组合 去年冬天&#xff0c;我接手了一个小团队的内部效率优化项目。团队每天需要从海量行业报告中提取关键数据&#xff0c;整理成简报表。最初尝试用传统RPA工具&#xff…...

OpenClaw安全实践:gemma-3-12b-it本地化保障敏感数据边界

OpenClaw安全实践&#xff1a;gemma-3-12b-it本地化保障敏感数据边界 1. 为什么需要本地化部署&#xff1f; 去年处理季度财报时&#xff0c;我犯过一个至今心有余悸的错误。当时用某公有云API自动分析Excel中的财务数据&#xff0c;结果在调试时不小心把包含客户银行账号的测…...

dumper.js性能优化:大型对象检查的10个实用技巧

dumper.js性能优化&#xff1a;大型对象检查的10个实用技巧 【免费下载链接】dumper.js A better and pretty variable inspector for your Node.js applications 项目地址: https://gitcode.com/gh_mirrors/du/dumper.js dumper.js是一款为Node.js应用打造的变量检查工…...

GLM-OCR GPU算力优化实践:vLLM推理加速+令牌下采样,吞吐提升2.3倍

GLM-OCR GPU算力优化实践&#xff1a;vLLM推理加速令牌下采样&#xff0c;吞吐提升2.3倍 1. 项目背景与优化需求 GLM-OCR是一个基于GLM-V编码器-解码器架构构建的多模态OCR模型&#xff0c;专门为复杂文档理解而设计。这个模型集成了在大规模图文数据上预训练的CogViT视觉编码…...