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

这篇具有很好参考价值的文章主要介绍了【史上最细教程】一台服务器上搭建2个MySQL实例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

环境准备:

服务器:阿里云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)

mysql 创建二个实例,史上最细教程系列,服务器,mysql,数据库,java,运维,spring boot,中间件


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实例数据、配置等文件存放位置)

mysql 创建二个实例,史上最细教程系列,服务器,mysql,数据库,java,运维,spring boot,中间件

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

mysql 创建二个实例,史上最细教程系列,服务器,mysql,数据库,java,运维,spring boot,中间件

mysql 创建二个实例,史上最细教程系列,服务器,mysql,数据库,java,运维,spring boot,中间件

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服务器  TCP/IP方式
mysql -uroot -h127.0.0.1 -p -P3306
Enter password: 输入上面记录的密码(这里输入时不会展示,/usr/local/mysql/3308/log密码如果初始化时控制台没有打印出,就在这个日志文件中查看)

# socket方式连接  
# /tmp/mysql_3308.sock这个就是3306文件里面这一项配置socket=/tmp/mysql_3308.sock
mysql -uroot -p -S /tmp/mysql_3308.sock
Enter password: 输入上面记录的密码(这里输入时不会展示)

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

mysql 创建二个实例,史上最细教程系列,服务器,mysql,数据库,java,运维,spring boot,中间件

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

mysql 创建二个实例,史上最细教程系列,服务器,mysql,数据库,java,运维,spring boot,中间件

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

mysql 创建二个实例,史上最细教程系列,服务器,mysql,数据库,java,运维,spring boot,中间件

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


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 方式的连接。
# 查看数据库
show databases;
# 进入使用mysql数据库
use mysql;
# 查看用户信息
select host, user, authentication_string from mysql.user;
# 看到都是localhost时,不能继续远程连接,所以要修改root用户连接方式为 % 
update user set host = '%' where user = 'root';
# 刷新权限
FLUSH PRIVILEGES; 
# 退出mysql
exit;

mysql 创建二个实例,史上最细教程系列,服务器,mysql,数据库,java,运维,spring boot,中间件

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

# 查看防火墙状态
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


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

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

mysql 创建二个实例,史上最细教程系列,服务器,mysql,数据库,java,运维,spring boot,中间件

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

mysql 创建二个实例,史上最细教程系列,服务器,mysql,数据库,java,运维,spring boot,中间件

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

mysql 创建二个实例,史上最细教程系列,服务器,mysql,数据库,java,运维,spring boot,中间件


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

mysql 创建二个实例,史上最细教程系列,服务器,mysql,数据库,java,运维,spring boot,中间件

mysql 创建二个实例,史上最细教程系列,服务器,mysql,数据库,java,运维,spring boot,中间件

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

mysql 创建二个实例,史上最细教程系列,服务器,mysql,数据库,java,运维,spring boot,中间件

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


参考文章:

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

推荐文章:

【史上最细教程】MySQL服务器完成主从复制文章来源地址https://www.toymoban.com/news/detail-823173.html

到了这里,关于【史上最细教程】一台服务器上搭建2个MySQL实例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 为openlab搭建网站和架设一台NFS服务器

    给该公司创建三个子界面分别显示学生信息,教学资料和缴费网站,基于www.openlab.com/student网站访问学生信息,www.openlab.com/data网站访问教学资料,www.openlab.com/money网站访问缴费。 要求: (1)学生信息网站只有song和tian两人可以访问,其他用户不能访问。 (2)访问缴费网站

    2024年01月16日
    浏览(40)
  • 『从零开始』拥有一台服务器并搭建java开发环境

      各位小伙伴们大家好,欢迎来到这个小扎扎的博客,本篇博客中将会和大家分享如何购买甚至白嫖一台属于你自己的服务器(当然这台服务器会有时间限制),服务器到手之后就是服务器的设置以及常规java开发的环境搭建,以上内容在本篇博客中都会作详细讲解   首

    2024年01月19日
    浏览(46)
  • Nuxt3 全栈 项目服务器部署 全网最全最细保姆级教程 解决各种小坑 时光小灶

    服务器:Nginx 面板:宝塔面板 个人博客:https://timebk.cn/ 原文地址:原文 第一步肯定是打包咯,前提是项目已开发好了以及没有啥Bug了哈 打包好后,你会在项目根目录下发现多了个 .output 文件夹 打开这个文件夹,将里面的所有文件压缩成压缩包 压缩包格式推荐 .rar ,其它格

    2024年02月12日
    浏览(30)
  • 一台电脑同时安装多个tomcat服务器教程,window同时安装tomcat7、tomcat8、tomcat9三个服务器教程

    A. 解释为什么有时需要同时安装多个Tomcat服务器 应用程序隔离:当你需要在同一台设备上运行多个独立的应用程序时,每个应用程序可能需要使用不同的Tomcat配置和环境。通过同时安装多个Tomcat服务器,可以实现应用程序之间的隔离,确保它们互不干扰。这种隔离可以防止一

    2024年02月13日
    浏览(44)
  • 如何为一台无法上网的服务器联网装conda环境,最简单的教程了

    目录 如何为一台无法上网的Linux服务器安装anaconda环境以及所有需要的环境依赖 1、需要一台联网的电脑(和此服务器在同一个局域网) 2、anaconda官网下载Linux对应的版本Free Download | Anaconda (一般就是第一个) 3、使用ssh工具,推荐使用MobaXterm工具,功能很强大(本篇博文都以

    2024年02月03日
    浏览(29)
  • 【WSL/WSL2-Ubuntu】突破界限:不使用服务器在一台Windows搭建Nginx+FastDFS

    随着软件开发领域的快速发展,跨平台的开发环境变得日益重要。Windows Subsystem for Linux(WSL)和WSL 2为开发者提供了在Windows操作系统上体验Linux环境的便捷途径。本文将引导读者深入探索WSL/WSL 2,并教授如何在其中搭建Nginx和FastDFS,为开发和测试提供更加灵活、高效的工作环

    2024年02月20日
    浏览(39)
  • docker怎么将一台服务器的镜像移动到另外一台服务器

    连接服务器也可以使用ssh连接 提示没有目录的话就创建目录,创建目录命令: mkdir [目录名称]

    2024年02月15日
    浏览(49)
  • nginx 如何实现一台服务器挂了访问另外一台服务器

    如果您想通过 Nginx 实现在 example1.com 服务器挂掉的情况下自动切换到 example2.com 服务器,可以使用 Nginx 的代理模块和负载均衡功能。 以下是一个示例的 Nginx 配置,实现了当 example1.com 服务器不可用时,自动切换到 example2.com 服务器: 在上述示例中: upstream 块定义了服务器组

    2024年02月12日
    浏览(60)
  • clickhouse如何将一台服务器上的数据导入到另一台服务器

    使用remote函数: 其中remote分别对应的参数: 参数1:ip+port,即为源数据的服务器ip+端口; 参数2:源数据服务器的数据库名; 参数3:源数据的表名; 参数4:源clickhouse数据库的客户端访问账号; 参数5:源clickhouse数据库的客户端访问密码;

    2024年02月15日
    浏览(53)
  • 如何将服务器数据迁移到另一台服务器?

    将服务器数据迁移到另一台服务器通常涉及以下几个步骤: 1.备份数据: 在进行数据迁移之前,首先需要备份服务器上的数据。这包括网站文件、数据库、配置文件等。可以使用各种备份工具和方法,如rsync、scp、FTP、数据库备份工具等。 2.目标服务器准备: 准备目标服务器

    2024年04月09日
    浏览(53)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包