一篇搞定CentOS7有网和离线安装MySQL8和Redis以及数据备份

在这里插入图片描述

有网环境yum安装MySQL

如无网络则参考“无网络环境离线安装MySQL”一节。

下载mysql yum源

地址:https://dev.mysql.com/downloads/repo/yum/。选择对应版本下载。
如果是CentOS7,可以直接

wget https://repo.mysql.com//mysql80-community-release-el7-6.noarch.rpm

在这里插入图片描述

上传并安装mysql源

yum -y localinstall mysql80-community-release-el7-6.noarch.rpm

在线安装mysql

yum -y install mysql-community-server

如果报错
[Errno 14] curl#37 - "Couldn't open file /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022"

需要先运行下面的命令
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

再次执行MySQL的安装命令
yum install mysql-community-server

无网络环境离线安装MySQL

如已安装跳过这一节

下载mysql安装包

mysql安装包下载地址:https://dev.mysql.com/downloads/mysql/

选择好安装包下载,如果想选其他版本可以在Archives里找,RPM Bundle 包含了所有的 rpm 包。
在这里插入图片描述

下载依赖安装包

下载地址:https://rpmfind.net/linux/rpm2html/search.php

搜索相应的依赖包名称就可以了,这里需要net-tools:

在这里插入图片描述

下载好的依赖包上传并安装:

rpm -ivh net-tools-2.0-0.25.20131004git.el7.x86_64.rpm

卸载已安装的mysql相关包

[root@localhost ~]# rpm -qa | grep -i -E mysql\|mariadb | xargs -n1 sudo rpm -e --nodeps

上传安装包并解压

[root@localhost ~]# mkdir mysql
[root@localhost ~]# cd mysql
[root@localhost mysql]# tar -xvf mysql-8.0.29-1.el7.x86_64.rpm-bundle.tar

依次安装软件包

[root@localhost mysql]# rpm -ivh mysql-community-common-8.0.29-1.el7.x86_64.rpm
[root@localhost mysql]# rpm -ivh mysql-community-client-plugins-8.0.29-1.el7.x86_64.rpm
[root@localhost mysql]# rpm -ivh mysql-community-libs-*
[root@localhost mysql]# rpm -ivh mysql-community-client-8.0.29-1.el7.x86_64.rpm
[root@localhost mysql]# rpm -ivh mysql-community-icu-data-files-8.0.29-1.el7.x86_64.rpm
[root@localhost mysql]# rpm -ivh mysql-community-server-8.0.29-1.el7.x86_64.rpm

Mysql启动和配置

启动mysql服务

启动
[root@localhost mysql]# systemctl start mysqld
查看运行状态
[root@localhost mysql]# systemctl status mysqld

生成mysql强安全密码

mysql8的密码安全策略比较高,普通的密码可能验证不过(即使是网站工具生成的密码),这里提供一个python脚本生成符合要求的mysql密码(也可以给密码检查降级,不推荐,本教程也不提供方法):

[root@zijie ~]# cat mysql_random_passowrd.py
#!/usr/bin/python
#-*- coding:utf-8 -*-

import sys
import random

def get_random_password():
    chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
    pwd_str = ''.join(random.choice(chars) for i in range(18))
    passwd = pwd_str[0:18] + "*" + pwd_str[-1]
    return passwd

user = sys.argv[1]
host = sys.argv[2]
password = get_random_password()
print("create user '%s'@'%s' identified by '%s';"%(user,host,password))

[root@zijie ~]# python mysql_random_passowrd.py zijie %
create user 'zijie'@'%' identified by 'VhFg0LUMIYlT9vgN3q*q';

重设mysql密码

查看默认密码
[root@localhost mysql]# cat /var/log/mysqld.log | grep password
登录mysql
[root@localhost mysql]# mysql -u root -p'默认密码'
设置密码
mysql> alter USER 'root'@'localhost' IDENTIFIED BY '新的密码';

开放远程连接

mysql> use mysql;
mysql> update user set Host='%' where User='root';
mysql> flush privileges;
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root密码';

设置开机启动mysql

systemctl enable mysqld
systemctl daemon-reload

开放防火墙端口

开启端口3306
firewall-cmd --zone=public --add-port=3306/tcp --permanent
重启防火墙
firewall-cmd --reload
查看已经开放的端口
firewall-cmd --list-ports

有网环境yum安装redis

安装remi软件源

CentOS7 直接yum安装的redis不是最新版本,如果要安装最新的redis,需要安装Remi的软件源,官网地址:http://rpms.famillecollet.com/

yum install -y http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

安装redis

yum --enablerepo=remi install redis -y

启动redis

# 启动
systemctl start redis
# 查看运行状态
systemctl status redis

设置开机启动redis

systemctl enable redis

redis配置修改

vim /etc/redis.conf
# 开启远程访问
将bind 127.0.0.1 改成bind 0.0.0.0

#设置密码
配置文件中的requirepass配置配置redis密码,如 requirepass 123456

配置完后使用systemctl restart redis重启redis。

开放防火墙端口

开启端口6379
firewall-cmd --zone=public --add-port=6379/tcp --permanent
重启防火墙
firewall-cmd --reload
查看已经开放的端口
firewall-cmd --list-ports

无网络环境安装redis

无网络环境下推荐源码安装redis。

安装gcc,g++

如果已安装,忽略。

下载地址:https://rpmfind.net/linux/rpm2html/search.php

搜索gcc,System指定centos,可以查到:
在这里插入图片描述

搜索gcc-c++,System指定centos,可以查到:

在这里插入图片描述

下载rpm包并安装。

查看安装版本:

gcc -v
g++ -v

下载redis源码

下载地址: http://download.redis.io/releases/

本教程选用的版本是:redis-6.2.7.tar.gz

源码编译安装redis

tar zxvf redis-6.2.7.tar.gz
cd redis-6.2.7
make MALLOC=libc
cd src && make install
# 启动redis
./redis-server

这样已经可以前台启动redis了

redis配置修改

mkdir /etc/redis
cd redis-6.2.7
cp redis.conf /etc/redis/6379.conf
# 修改redis启动为后台启动
vim /etc/redis/6379.conf
# 设置后台运行:将daemonize设置为yes

# 开启远程访问
将bind 127.0.0.1 改成了 bind 0.0.0.0

# 设置密码
配置文件中的requirepass配置配置redis密码,如 requirepass 123456

添加系统服务脚本

# 将启动文件拷贝到init.d中
cp /root/redis/redis-6.2.7/utils/redis_init_script /etc/init.d/redisd
# 修改启动脚本参数
vi /etc/init.d/redisd

添加chkconfig头配置,这个配置会让这个服务开机启动:

# chkconfig: 2345 10 90
# description: Start and Stop redisd

修改

EXEC=/root/redis/redis-6.2.7/src/redis-server
CLIEXEC=/root/redis/redis-6.2.7/src/redis-cli
PIDFILE=/root/redis/redis-6.2.7/redis_${REDISPORT}.pid

如图:
在这里插入图片描述

增加脚本执行权限

chmod +x /etc/init.d/redisd

增加系统服务

chkconfig --add redisd
chkconfig --list redisd

启动redis服务

service redisd start

查看redis启动状态

ps -aux | grep redis

看到有redis-server的进程则启动成功!

开放防火墙端口

开启端口6379
firewall-cmd --zone=public --add-port=6379/tcp --permanent
重启防火墙
firewall-cmd --reload
查看已经开放的端口
firewall-cmd --list-ports

mysql备份脚本

mysql_back.sh

#!/bin/sh

DUMP=/usr/bin/mysqldump    #mysqldump备份程序执行路径

OUT_DIR=/home/mysql_back    #备份文件存放路径

LINUX_USER=root           #系统用户名

DB_NAME=trade             #要备份的数据库名字

DB_USER=root            #数据库账号 注意:非root用户要用备份参数 --skip-lock-tables,否则可能会报错

DB_PASS=C9WYMgKHFzu8MDj1yIY*Y           #数据库密码

DAYS=7                 #DAYS=7代表删除7天前的备份,即只保留最近7天的备份

cd $OUT_DIR              #进入备份存放目录

DATE=`date +%Y_%m_%d_%H`     #获取当前系统时间

OUT_SQL="$DATE.sql"        #备份数据库的文件名

TAR_SQL="mysqldata_bak_$DATE.tar.gz"  #最终保存的数据库备份文件名

$DUMP -u$DB_USER -p$DB_PASS $DB_NAME --default-character-set=utf8 --opt -Q -R --skip-lock-tables> $OUT_SQL #备份

tar -czf $TAR_SQL ./$OUT_SQL  #压缩为.tar.gz格式

rm $OUT_SQL   #删除.sql格式的备份文件

chown  $LINUX_USER:$LINUX_USER $OUT_DIR/$TAR_SQL  #更改备份数据库文件的所有者

find $OUT_DIR -name "mysqldata_bak*" -type f -mtime +$DAYS -exec rm {} \;  #删除7天前的备份文件(注意:{} \;中间有空格)

redis备份脚本

redis_back.sh(源码安装版本)

#!/bin/sh

#redis RDB 数据文件备份脚本
 
#备份目录
root_dir=/root/redis/redis-6.2.7/src
dir=/home/redis_back
cur_date=`date +%Y%m%d`
 
rm -rf $dir/$cur_date
mkdir -p $dir/$cur_date
 
#执行一次redis数据库备份操作
$root_dir/redis-cli -h 127.0.0.1 -p 6379 -a OvgbsxcGV^sXZ3TW^mI*shb <<EOF
bgsave
quit
EOF
 
#将RDB文件拷贝到备份的目录下
cp $root_dir/dump.rdb $dir/$cur_date
 
#删除7天前的目录数据
del_date=`date -d -7day +%Y%m%d`
rm -rf $dir/$del_date

redis_back.sh(yum安装版本)

#!/bin/sh

#redis RDB 数据文件备份脚本
 
#备份目录
root_dir=/var/lib/redis
dir=/home/redis_back
cur_date=`date +%Y%m%d`
 
rm -rf $dir/$cur_date
mkdir -p $dir/$cur_date
 
#执行一次redis数据库备份操作
redis-cli -h 127.0.0.1 -p 6379 -a OvgbsxcGV^sXZ3TW^mI*shb <<EOF
bgsave
quit
EOF
 
#将RDB文件拷贝到备份的目录下
cp $root_dir/dump.rdb $dir/$cur_date
 
#删除7天前的目录数据
del_date=`date -d -7day +%Y%m%d`
rm -rf $dir/$del_date

备份脚本加入定时任务

修改文件属性,使其可执行

chmod +x /home/mysql_back/mysql_back.sh
chmod +x /home/redis_back/redis_back.sh

vim /etc/crontab #编辑文件,在下面添加(也可使用 crontab -e 然后添加)

45 03 * * * root  /home/mysql_back/mysql_back.sh    #表示每天03点45分执行备份
15 04 * * * root  /home/redis_back/redis_back.sh    #表示每天04点15分执行备份

重启crond

systemctl restart crond

备份脚本执行后,就可以在备份目录看到备份后的数据了,如果需要还原,则将对应的数据库备份文件导入数据库。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冰雪积木

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值