在服务器上部署MySQL服务

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 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

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

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
弹性计算 监控 负载均衡
|
2月前
|
Prometheus Kubernetes 监控
k8s部署针对外部服务器的prometheus服务
通过上述步骤,您不仅成功地在Kubernetes集群内部署了Prometheus,还实现了对集群外服务器的有效监控。理解并实施网络配置是关键,确保监控数据的准确无误传输。随着监控需求的增长,您还可以进一步探索Prometheus生态中的其他组件,如Alertmanager、Grafana等,以构建完整的监控与报警体系。
131 60
|
2月前
|
Prometheus Kubernetes 监控
k8s部署针对外部服务器的prometheus服务
通过上述步骤,您不仅成功地在Kubernetes集群内部署了Prometheus,还实现了对集群外服务器的有效监控。理解并实施网络配置是关键,确保监控数据的准确无误传输。随着监控需求的增长,您还可以进一步探索Prometheus生态中的其他组件,如Alertmanager、Grafana等,以构建完整的监控与报警体系。
258 62
|
1月前
|
弹性计算 人工智能 数据安全/隐私保护
【手把手教你】如何免费畅快使用阿里云ECS搭建私有Overleaf论文写作服务
本文详细介绍如何利用阿里云ECS免费搭建私有Overleaf论文写作服务,包括ECS服务器的部署、Overleaf服务的安装、TexLive包的更新、XeLaTeX修复、中文字体支持及账号管理等步骤。通过这些操作,你可以实现免费且高效的多人协作论文写作,避免付费版本的高昂费用。适合需要频繁合作撰写论文的团队使用。
81 1
【手把手教你】如何免费畅快使用阿里云ECS搭建私有Overleaf论文写作服务
|
1月前
|
Linux 数据库
Linux服务如何实现服务器重启后的服务延迟自启动?
【10月更文挑战第25天】Linux服务如何实现服务器重启后的服务延迟自启动?
199 3
|
2月前
|
SQL 分布式计算 关系型数据库
Hadoop-21 Sqoop 数据迁移工具 简介与环境配置 云服务器 ETL工具 MySQL与Hive数据互相迁移 导入导出
Hadoop-21 Sqoop 数据迁移工具 简介与环境配置 云服务器 ETL工具 MySQL与Hive数据互相迁移 导入导出
68 3
|
2月前
|
SQL 存储 数据管理
Hadoop-15-Hive 元数据管理与存储 Metadata 内嵌模式 本地模式 远程模式 集群规划配置 启动服务 3节点云服务器实测
Hadoop-15-Hive 元数据管理与存储 Metadata 内嵌模式 本地模式 远程模式 集群规划配置 启动服务 3节点云服务器实测
61 2
|
2月前
|
关系型数据库 MySQL 数据库
使用Docker部署的MySQL数据库,数据表里的中文读取之后变成问号,如何处理?
【10月更文挑战第1天】使用Docker部署的MySQL数据库,数据表里的中文读取之后变成问号,如何处理?
68 3
|
2月前
|
关系型数据库 MySQL 数据库
使用Docker部署的MySQL数据库如何设置忽略表名大小写?
【10月更文挑战第1天】使用Docker部署的MySQL数据库如何设置忽略表名大小写?
219 1
|
2月前
|
网络安全 Docker 容器
【Bug修复】秒杀服务器异常,轻松恢复网站访问--从防火墙到Docker服务的全面解析
【Bug修复】秒杀服务器异常,轻松恢复网站访问--从防火墙到Docker服务的全面解析
29 0