在服务器上部署MySQL服务

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 在云服务器上部署自己的MySQL服务(centOS7系统),并且配置MySQL主从复制

MYSQL数据库部署和安装

首先准备安装包

在MySQL官方网站下载所需要的版本安装包 本次部署的是mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz 将安装包放在Linux系统 /usr/local 目录下

MySQL官方网站 MySQL官网

卸载系统自带的mariaDB (如果有)

查询已安装的Mariadb,如果有安装,卸载之

rpm -qa | grep mariadb

image.png

yum -y remove mariadb-server-5.5.56-2.e17.x86_64
yum -y remove mariadb-5.5.56-2.e17.x86_64
yum -y remove mariadb-devel-5.5.56-2.e17.x86_64
yum -y remove mariadb-libs-5.5.56-2.e17.x86_64

解压MYSQL安装包

将上面准备好的MySQL安装包解压,并重命名为mysql

tar -zxvf mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.7.37-linux-glibc2.12-x86_64 mysql

创建MYSQL用户和用户组

首先使用 id mysql 命令查看是否存在mysql用户
如果存在,则使用命令 userdel mysql 将用户删除
然后创建mysql用户和用户组

groupadd mysql
useradd -g mysql mysql

于此同时新建 /user/local/mysql/data 目录,后续备用

修改MYSQL目录的归属用户

首先进入到mysql目录下
chown -R mysql:mysql ./

准备MySQL的配置文件

/etc下新建my.cnf文件
vi /etc/my.cnf
在vi编辑器中,按下i键进入编辑模式,写下如下简化配置:

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
socket=/var/lib/mysql/mysql.sock
[mysqld]
skip-name-resolve
#设置3306端⼝
port = 3306
socket=/var/lib/mysql/mysql.sock
# 设置mysql的安装⽬录
basedir=/usr/local/mysql
# 设置mysql数据库的数据的存放⽬录
datadir=/usr/local/mysql/data
# 允许最⼤连接数
max_connections=200
# 服务端使⽤的字符集默认为8⽐特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使⽤的默认存储引擎
default-storage-engine=INNODB
lower_case_table_names=1
max_allowed_packet=16M

同时使用如下命令创建/var/lib/mysql目录,并修改权限:

mkdir /var/lib/mysql
chmod 777 /var/lib/mysql

正式开始安装mysql

执行如下命令正式开始安装:

cd /usr/local/mysql
./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

安装如果出现问题

root@bigdata-159:/usr/local/mysql# ./bin/mysqld -- defaults-file=/etc/my.cnf --initialize --user=mysql
./bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

解决方法:

[root@example.com data]# yum install -y libaio //安装后在初始化就OK了

image.png

注意:把上面打印出来的密码复制保留,这是root用户的密码,后面首次登陆需要使用

复制启动脚本到资源目录

执行如下命令复制:

cp ./support-files/mysql.server /etc/init.d/mysqld

并修改/etc/init.d/mysqld,修改其basedir和datadir为实际对应目录

basedir=/usr/local/mysql
datadir=/usr/local/mysql/data

设置mysql系统服务并开启自启

首先增加mysqld服务控制脚本执行权限:

chmod +x /etc/init.d/mysqld

同时将mysqld服务加入到系统服务中

chkconfig --add mysqld

最后检查mysqld服务是否已经生效即可

chkconfig --list mysqld

出现下图的打印就说明mysqld服务已经生效了,在2,3,4,5 运行级别随系统启动而自启动,以后可以直接使用service 命令控制mysql的暂停
image.png

启动mysqld

直接执行:

service mysqld start

出现如下命令说明mysql启动成功
image.png

将mysql的bin目录加入path环境变量

这样方便以后可以在任意目录都可以使用mysql提供的命令
编辑.bash_profile
vi ~/.bash_profile文件,在文件末尾处追加如下的信息:
export PATH=$PATH:/usr/local/mysql/bin
最后执行如下命令使环境变量生效
source ~/.bash_profile

首次登录MySQL

以root账号登录mysql,使用上文安装完成提示的密码进行登入
mysql -u root -p 按下回车
image.png

接下来修改root账号密码

在mysql的命令行执行如下命令就可以了,密码换成自己想用的即可

mysql>alter user user() identified by "111111";
mysql>flush privileges;

设置远程主机登录

mysql> use mysql;
mysql> update user set user.Host='%' where user.User='root';
mysql> flush privileges;

最后利用NAVICAT等工具进行测试即可

image.png

1、Linux CentOS一般作为服务器使用,因此,MySQL服务器应该随机自启动。查看开机自启动的服务使用chkconfig命令,如下:

chkconfig --list

或是只查看MySQL服务

chkconfig --list mysqld

img

可以看到mysql的2~5为on,说明mysql服务会随机器启动而自动启动。

2、配置MySQL的开机自动启动

chkconfig --add mysql
chkconfig mysqld on

3、命令启动/关闭MySQL实例
service mysqld start/stop
/etc/init.d/mysqld start/stop

4、命令关闭MySQL
mysqladmin -p -u root shutdown

5、检查mysql是否真正的启动
方法一:查询端口

netstat -tulpn

MySQL监控的是TCP的3306端口,图中命令操作结果的最后一行即是MySQL服务在运行中。
方法二:查询进程

ps -ef | grep mysqld

如果有mysqld_safe和mysqld两个进程,说明MySQL服务当前在启动状态。

通过 rpm 安装包的方式按照


1 上传 rpm 安装包到Linux 系统

2 解压安装包到 /usr/local/mysql 目录

3 按照如下步骤按照

如果出现如下错误

错误:依赖检测失败:

    /usr/bin/perl 被 mysql-community-server-5.7.25-1.el7.x86_64 需要
    perl(Getopt::Long) 被 mysql-community-server-5.7.25-1.el7.x86_64 需要
    perl(strict) 被 mysql-community-server-5.7.25-1.el7.x86_64 需要

则安装 yum install -y perl-Module-Install.noarch

安装完成之后

启动 MySQL

systemctl status mysql 查看 MySQL 服务状态

systemctl start mysqld 启动 MySQL 服务

systemctl enable mysqld 开机启动 MySQL 服务

netstat -tunlp 查看启动的服务

netstat -tunlp | grep mysql

ps -ef | grep mysql 查看 MySQL 进程

登录 MySQL 数据库 ,查看临时密码

cat /var/log/mysqld.log 查看文件内容

cat /var/log/mysqld.log | grep password 查看文件内容中包含 password 的行信息

登录 MySQL,修改密码,开放访问权限

mysql -uroot -p 登录mysql (使用临时密码)

进入 MySQL 客户端后 /

修改密码

set global validate_password_length=4;                # 设置密码最低位数为4位
set global validate_password_policy=LOW;            # 设置密码安全等级低,便于修改简单密码
set password=password('1234');                        #将密码设置为 1234

# 开启访问权限
grant all on *.* to 'root' @'%' identified by '1234';
flush privileges;

最后使用 navicat 等工具测试连接即可

MySQL 主从复制 配置


提前准备好两台服务器,分别安装 MySQL 服务并启动成功

  • 主库 Master 192.168.141.133
  • 从库 Slave 192.168.141.135

配置 - 主库 Master

第一步:修改 MySQL 数据库配置文件 /etc/my.cnf

[mysqld]
log-bin=mysql-bin      #[必须] 启用二进制日志
server-id=133          #[必须] 服务器唯一 id

第二步:重启MySQL 服务

systemctl restart mysqld

第三步:登录MySQL 客户端,执行下面sql

GRANT REPLICATION SLAVE ON . to 'xiaoming'@'%' IDENTIFIED by 'Root@123456';

作用: 创建一个用户 xiaoming 密码为 Root@123456,并且给xiaoming 用户授予 replication slave 权限,常用于建立复制时所需要用到的用户权限,也就是slave 必须被 master 授权具有该权限的用户,才能通过该用户复制

第四步:登录 MySQL 数据库,执行下面的sql 记录下结果中 file 和 position 的值

show master status;

上面的sql 作用是查看 master 的状态,执行完此 sql 后就不要执行任何操作了

配置 - 从库 Slave

// 注意 : 如果该数据库是虚拟机克隆的机器上的数据库,那么需要修改 数据库的 uuid ,保证主从复制不出错误

  1. 首先查找到 mysql 的安装地址 show variables like 'datadir';
  2. 通过 MySQL 生成一个uuid 机型记录等会用于修改 select uuid();
  3. 进入 datadir 目录 修改 auto.cnf 文件 vi /var/lib/mysql/auto.cnf
  4. 最后重启MySQL 服务 systemctl restart mysqld

第一步: 修改MySQL数据库的配置文件 /etc/my.cnf

[mysqld]

server-id=135 #必须 服务器唯一 ID

第二步:重启 MySQL 服务

systemctl restart mysqld

第三步:登录MySQL数据库,执行下面sql

CHANGE MASTER TO master_host='192.168.141.133',master_user='xiaoming',master_password='Root@123456',master_log_file='mysql-bin.000001',master_log_pos=441;

start slave;

如果有 slave在运行 ,则 stop slave 停止 slave

最后查看slave 的 状态;show slave status;

Slave_IO_State = Wating for master

Slave_IO_Running = Yes

Slave_SQL_Running = Yes

这三个状态为上述则说明安装成功

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
1月前
|
存储 缓存 监控
MySQL服务器配置优化:my.cnf参数调优指南
本文深入解析了MySQL核心配置参数及性能优化技巧,涵盖内存结构、调优原则、存储引擎优化、查询性能优化等内容,通过实战案例帮助读者构建高性能MySQL服务器配置,解决常见的性能瓶颈问题。
kde
|
10天前
|
存储 关系型数据库 MySQL
MySQL Docker 容器化部署全指南
MySQL是一款开源关系型数据库,广泛用于Web及企业应用。Docker容器化部署可解决环境不一致、依赖冲突问题,实现高效、隔离、轻量的MySQL服务运行,支持数据持久化与快速迁移,适用于开发、测试及生产环境。
kde
164 4
|
2月前
|
关系型数据库 MySQL 数据库
为什么 MySQL 不推荐用 Docker 部署?
本文探讨了MySQL是否适合容器化的问题,分析了Docker容器在数据安全、性能瓶颈、状态管理及资源隔离等方面的挑战,并指出目前主流分布式数据库如TDSQL和OceanBase仍倾向于部署在物理机或KVM上。
148 0
|
4月前
|
缓存 安全 网络协议
如何使用Bluetown Cloud服务器及其CDN服务来掩护VPS的真实IP地址。
最终,通过Bluetown Cloud的CDN服务,你的VPS不仅仅是隐藏在一层又一层的保护之下,同时也因为CDN的全球节点而享受到加速访问的优势,无所不在又不被发现,像是一位能在互联网世界中自由穿梭的幽灵特工。
92 14
|
4月前
|
应用服务中间件 网络安全 数据安全/隐私保护
网关服务器配置指南:实现自动DHCP地址分配、HTTP服务和SSH无密码登录。
哇哈哈,道具都准备好了,咱们的魔术秀就要开始了。现在,你的网关服务器已经魔法满满,自动分配IP,提供网页服务,SSH登录如入无人之境。而整个世界,只会知道效果,不会知道是你在幕后操控一切。这就是真正的数字世界魔法师,随手拈来,手到擒来。
228 14
|
4月前
|
物联网
云服务器搭建rttys服务
RTTYS是一款基于Web的串口调试工具,分为服务端(rttys)和客户端(rtty)。服务端负责连接串口设备并提供接口,客户端通过浏览器访问实现远程串口调试。它具有跨平台、易部署的特点,适用于物联网、嵌入式开发等场景,极大提升调试效率。
|
5月前
|
Java 关系型数据库 MySQL
在Linux平台上进行JDK、Tomcat、MySQL的安装并部署后端项目
现在,你可以通过访问http://Your_IP:Tomcat_Port/Your_Project访问你的项目了。如果一切顺利,你将看到那绚烂的胜利之光照耀在你的项目之上!
310 41
|
5月前
|
开发框架 Java 关系型数据库
在Linux系统中安装JDK、Tomcat、MySQL以及部署J2EE后端接口
校验时,浏览器输入:http://[your_server_IP]:8080/myapp。如果你看到你的应用的欢迎页面,恭喜你,一切都已就绪。
422 17
|
5月前
|
Java 关系型数据库 MySQL
在Linux操作系统上设置JDK、Tomcat、MySQL以及J2EE后端接口的部署步骤
让我们总结一下,给你的Linux操作系统装备上最强的军队,需要先后装备好JDK的弓箭,布置好Tomcat的阵地,再把MySQL的物资原料准备好,最后部署好J2EE攻城车,那就准备好进军吧,你的Linux军团,无人可挡!
132 18
|
5月前
|
开发框架 关系型数据库 Java
Linux操作系统中JDK、Tomcat、MySQL的完整安装流程以及J2EE后端接口的部署
然后Tomcat会自动将其解压成一个名为ROOT的文件夹。重启Tomcat,让新“植物”适应新环境。访问http://localhost:8080/yourproject看到你的项目页面,说明“植物”种植成功。
147 10

热门文章

最新文章

推荐镜像

更多