Centos本地部署MySQL5.7
目录
前言
本文主要基于Centos7服务器,采用本地化的方式部署MySQL5.7数据库,包含单节点部署和主从复制部署的详细过程。
一、前置准备
从官网下载Mysql5.7版本安装包,并上传到centos服务器
- MySQL官网:https://www.mysql.com/
自行从官网上下载Mysql安装包,可参考如下步骤,从官网上寻找安装包:
二、单节点部署步骤
1.前置检查
# 1. 查看并卸载系统自带的 Mariadb
rpm -qa|grep mariadb
rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
rpm -qa|grep mariadb
# 注:mariadb-libs-5.5.68-1.el7.x86_64需根据"rpm -qa|grep mariadb"命令查询出来的具体名称进行替换,即"rpm -e --nodeps xxx"命令为具体的卸载命令,可将已经安装好的mariadb进行卸载。
# 2. 检查系统是否安装过 MySQL
rpm -qa | grep mysql
# 如果系统中存在 MySQL ,查询所有 MySQL 对应的文件夹,使用"rm -r"命令全部删除:
# whereis mysql
# find / -name mysql
# 3. 检查并安装MySQL运行依赖组件
yum install -y libaio.so.1
yum install -y libaio
2.创建系统用户并解压
# 1. 创建 mysql 用户组和用户
cat /etc/group | grep mysql
cat /etc/passwd | grep mysql
# 注:如果执行上面的命令发现已经有了mysql用户,可跳过创建用户;否则执行下面的命令创建mysql用户
groupadd mysql
useradd -r -g mysql mysql
# 2. 解压下载的tar文件
mkdir /usr/local/mysql # MySQL的安装路径,可以自行调整
cd /packages # 进入存放mysql安装包的目录
tar -xvf mysql-5.7.44-linux-glibc2.12-x86_64.tar
tar -zxvf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.7.44-linux-glibc2.12-x86_64 /usr/local/mysql
mkdir /usr/local/mysql/data
# 3. 更改文件夹权限
chown -R mysql:mysql /usr/local/mysql/
chmod -R 755 /usr/local/mysql/
3.初始化MySQL
# 1. 初始化mysql并获取密码
cd /usr/local/mysql/bin
./mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql
# 注:执行完成后,记住初始密码:[Note] A temporary password is generated for root@localhost: 初始密码
# 2. 添加my.cnf 配置文件
vim /etc/my.cnf
# 按i键进入编辑模式
[mysqld]
datadir=/usr/local/mysql/data
port=3306
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
symbolic-links=0
max_connections=2000
innodb_file_per_table=1
lower_case_table_names=1
# 按esc键退出编辑,输入:wq保存退出
# 3. 编辑mysql.server 文件(如果安装到/usr/local/mysql目录下,则无需修改此文件)
# 如果没有安装下/usr/local/mysql目录下,那么需要修改成对应的安装目录。下面以安装到/mysql目录下为例,修改如下:
vim /mysql/support-files/mysql.server
# 按i键进入编辑模式
basedir=/mysql
datadir=/mysql/data
if test -z "$basedir"
then
basedir=/mysql
bindir=/mysql/bin
if test -z "$datadir"
then
datadir=/mysql/data
fi
sbindir=/mysql/bin
libexecdir=/mysql/bin
else
bindir="$basedir/bin"
if test -z "$datadir"
then
datadir="$basedir/data"
fi
sbindir="$basedir/bin"
libexecdir="$basedir/bin"
fi
# 按esc键退出编辑,输入:wq保存退出
4.启动MySQL
# 1. 配置并启动mysql服务
/usr/local/mysql/support-files/mysql.server start
ln -s /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
service mysql restart
# 2. 配置开机自启
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig --list
5. 访问MySQL
# 1.访问mysql并修改初始密码
mysql -u root -p
set password for root@localhost = password('新密码');
quit;
# 2.创建数据库并授权
# 创建数据库
CREATE DATABASE 数据库名 CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
# 创建用户并授权指定数据库的所有权限
CREATE USER '用户名'@'%' IDENTIFIED BY '密码';
GRANT ALL ON 数据库名.* TO '用户名'@'%';
flush privileges;
# 针对用户回收执行数据库的drop权限
REVOKE DROP ON 数据库名.* FROM '用户名'@'%';
flush privileges;
三、主从集群部署步骤
主从节点的部署步骤,与单节点部署基本相同,所以基本部署流程按照单节点部署的步骤进行即可,在部署过程中,注意以下几点,对应进行修改即可。
1. 在my.cnf配置文件中添加配置
在按照单节点部署的过程中,当进行初始化配置my.cnf配置文件时,主、从节点分别添加下面的配置信息。
# master主节点配置信息
# 在[mysqld]区域下添加配置信息:
# 配置主从模式,master节点配置:
server-id=1
log_bin=mysql-bin
log_bin_index=mysql-bin.index
binlog_ignore_db=mysql
# slave主节点配置信息
# 在[mysqld]区域下添加配置信息:
# 配置主从模式,slave节点配置:
server-id=2
log-bin=/usr/local/mysql/data/binlog/mysql-bin
relay-log=/usr/local/mysql/data/relay/slave-relay-bin
relay-log-index=/usr/local/mysql/data/relay/slave-relay-bin.index
2. 配置主从同步
在按照单节点部署方式部署完成后,便可以开始配置主从同步,以下命令分别在主库和从库中进行执行。
# master节点配置
# 进入主库
mysql -u root -p
# 创建slave节点用来备份的用户,"slave节点ip"可以使用%通配符
grant replication slave on *.* to 备份用户名@'slave节点ip' identified by '密码';
# 查看数据同步信息,从库连接主库进行同步信息时需要使用此命令查询出来的信息
show master status;
# slave节点配置:
# 进入从库
mysql -u root -p
#-- 连接master主服务器
#-- master_host对应主服务器的IP地址
#-- master_port对应主服务器的端口
#-- master_log_file对应show master status显示的File列:master-bin.000002
#-- master_log_pos对应show master status显示的Position列:154
change master to master_host='master节点ip',master_port=3306,master_user='备份用户名',master_password='密码',master_log_file='master-bin.000002',master_log_pos=154;
#-- 启动slave数据同步
start slave;
#-- 查看数据同步状态:Slave_IO_Running 和 Slave_SQL_Running 都为 YES,则表示同步成功
show slave status\G;
#-- 停止slave数据同步
#-- slave stop;
总结
本文仅仅简单介绍了在我们使用centos服务器上部署MySQL5.7服务的过程,部署其他版本的MySQL服务过程类似,如有需要,读者可以自行尝试,这里不做过多赘述。
此外,本文也介绍了搭建MySQL主从复制的简单过程,但MySQL主从集群本身并不包含读写分离的能力,如果项目上需要进行读写分离,提高应用的数据库读写性能,还需要依赖于其他第三方中间件等进行实现,后续将在单独的文章中总结,这里不做过多赘述。