mysql部署过程

1.上传rpm包到服务器
2.安装rpm包
#清除旧版本myqsllib包
yum remove mysql-libs -y
rpm -ivh *
#如果提示依赖错误,需要提前安装依赖包

如何报以下错误:

error:
Failed dependencies:
libnuma.so.1()(64bit) is needed by mysql-community-server-8.0.13-1.el7.x86_64 libnuma.so.1(libnuma_1.1)(64bit) is needed by mysql-community-server-8.0.13-1.el7.x86_64 libnuma.so.1(libnuma_1.2)(64bit) is needed by mysql-community-server-8.0.13-1.el7.x86_64

解决办法:

yum install numactl -y

出现问题:

error:
Failed dependencies:
pkgconfig(openssl) is needed by mysql-community-devel-8.0.13-1.el7.x86_64

解决办法:

yum install openssl-devel.x86_64 openssl.x86_64 -y

出现问题:

error:
Failed dependencies:
perl(Data::Dumper) is needed by mysql-community-test-8.0.13-1.el7.x86_64

解决办法:

yum -y install autoconf -y

出现问题:

error:
Failed dependencies:
perl(JSON) is needed by mysql-community-test-8.0.13-1.el7.x86_64
perl(Test::More) is needed by mysql-community-test-8.0.23-1.el7.x86_64

解决办法:

#yum install perl.x86_64 perl-devel.x86_64 -y
yum install perl-JSON.noarch -y
yum install perl-Test-Pod.noarch -y
3.初始化数据库
#创建mysql数据目录
mkdir /data/mysql
chown -R mysql:mysql /data/mysql
#修改配置文件
vim /etc/my.cnf

port=3306
datadir=/data/mysql
socket=/var/lib/mysql/mysql.sock

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
#设置不区分大小写,注意此项必须在初始化时操作,初始化完成之后,新增此配置无效
lower_case_table_names=1

#设置mysql默认编码为utf8mb4,也可不添加,mysql8.0默认编码就是utf8mb4
@default-character-set=utf8mb4

#开启binlog日志binlog日志存放目录,注意更改属主数组为mysql
log-bin=/data/mysqlbackup/binlog/mysql-bin

#binlog日志格式
binlog_format=mixed

#server的id,主从同步用,确定主节点
#server-id = 1

#binlog日志的有限时间,按秒计算
binlog_expire_logs_seconds = 604800 

初始化操作

#初始化 可以跳过,建议跳过
#mysqld --initialize --console
4.启动msyql服务
systemctl start mysqld
#设置mysql开机自启动
systemctl enable mysqld
5. 在/var/log/mysqld.log下查看临时密码
cat /var/log/mysqld.log
6.用临时密码登录到数据库
mysql -u root -p #+ 回车键
#输入临时密码(输入时不会显示出来,输入完直接回车)
7.执行下列mysql命令 修改密码(新密码(必须包含:数字大小写字母特殊字符))
alter USER 'root'@'localhost' IDENTIFIED BY '1qaz2wsx?Z';
8.依次执行下列mysql命令 授权远程连接

查看所有用户是否可以远程连接,依次执行下列命令:

show databases;
use mysql;
select host, user, authentication_string, plugin from user;

#修改root用户host值,使root用户可以远程登录
update user set host = "%" where user='root';
flush privileges;

依旧出错的话,修改密码认证模式

alter USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '1qaz2wsx?Z';
flush privileges;

备注:

mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password。

解决问题方法有两种:

方法1.升级navicat驱动;

方法2.把mysql用户登录密码加密规则还原成mysql_native_password.。

此处使用的是方法2。

9.mysql8.0开启binlog日志

1.通过上述操作,已经开启mysql的binlog日志,注意mysql8.0默认是开启binlog日志的,默认存储在mysql的data目录下,如需更改请配置mysql的my.cnf文件

mysql查看binlog相关sql语句

show binary logs;                            
# 查看binlog现有详情

show variables like '%log%';            
# 查看log变量的相关配置

set global expire_logs_days = 3;    
# 设置binlog的保存时间,此为5.7版本

set global binlog_expire_logs_seconds = 604800 ;
# 设置binlog的保存时间为7天,按秒计算

show variables like 'binlog_format';
# 查看binlog的格式

show master status;
# 查看最新的binlog状态

show binlog events;
# 查看binlog日志文件的内容

show variables like 'max_binlog_size';
# 查看binlog日志文件的大小,默认为1GB

show binary logs;
# 查看目前存在的binlog日志

reset master;                                 
# 重置所有的binlog,相当于删除所有的binlog,这个操作对主从集群影响非常大,因为主从赋值是基于binlog日志来实现的

PURGE {MASTER | BINARY} LOGS TO 'log_name'
PURGE {MASTER | BINARY} LOGS BEFORE 'date'
# 删除指定的日志或日期之前的日志索引中的所有二进制日志。MASTER和BINARY是同义词

PURGE MASTER LOGS TO 'binlog.000013'; 
#清除binlog.000013日志

PURGE MASTER LOGS BEFORE '2020-01-08 10:00:00';  
#清除2020-01-08 10:00:00前binlog日志

PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 3 DAY); 
# 清除3天前binlog日志BEFORE,变量的date自变量可以为'YYYY-MM-DD hh:mm:ss'格式。
10.mysql备份策略

为了应对数据库出现数据丢失问题,数据库的备份是一项不可或缺的事项,以下是mysql的备份策略

1)增量备份在周一到周六凌晨3点,会复制mysql-bin.00000到指定目录;
2)全量备份则使用mysqldump将数据库导出,每周日凌晨3点执行,并会删除上周留下的mysq-bin.00000
,然后对mysql的备份操作会保留在mysql_backup.log文件中;

1.编写mysql全量脚本:Mysql-FullyBak.sh

#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
export PATH
#数据库用户名
dbuser='root'
#数据库用密码
dbpasswd='1qaz2wsx?Z'
#需要备份的数据库,多个数据库用空格分开
dbname='contain_rebellion'
#备份时间
backtime=`date +%Y%m%d%H%M%S`
#日志备份路径
logpath='/data/mysql_backup'
#数据备份路径
datapath='/data/mysql_backup/data'
#日志记录头部
echo "备份时间为${backtime},备份数据库表 ${dbname} 开始" >> ${logpath}/mysql_backup.log
#正式备份数据库
for db in $dbname; do
source=`mysqldump --flush-logs -u ${dbuser} -p${dbpasswd} ${db}> ${datapath}/${dbname}-${backtime}.sql` 2>> ${logpath}/mysql_backup.log;
#备份成功以下操作
if [ "$?" == 0 ];then
cd $datapath
#为节约硬盘空间,将数据库压缩
#tar jcf ${table}${backtime}.tar.bz2 ${backtime}.sql > /dev/null
#删除原始文件,只留压缩后文件
#rm -f ${datapath}/${backtime}.sql
#删除七天前备份,也就是只保存7天内的备份
find $datapath -name "*.sql" -type f -mtime +7 -exec rm -rf {} \; > /dev/null 2>&1
echo "数据库 ${db} 备份成功!!" >> ${logpath}/mysql_backup.log
else
#备份失败则进行以下操作
echo "数据库 ${db} 备份失败!!" >> ${logpath}/mysql_backup.log
fi
done

2.编写增量备份脚本:Mysql-DailyBak.sh

#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
export PATH
#数据库用户名
dbuser='root'
#数据库用密码
dbpasswd='1qaz2wsx?Z'
#需要备份的数据库,多个数据库用空格分开
dbname='contain_rebellion'
#备份时间
backtime=`date +%Y%m%d%H%M%S`
#日志备份路径
logpath='/data/mysql_backup'
#数据备份路径
datapath='/data/mysql_backup/data'
#日志记录头部
echo "备份时间为${backtime},增量备份开始" >> ${logpath}/mysql_backup.log
#刷新数据库日志
mysqldadmin -u ${dbuser} -p${dbpasswd} flush-logs 2>> ${logpath}/mysql_backup.log

3.设置crontab任务,执行备份脚本。先执行的是增量备份脚本,然后执行的是全量备份脚本

[root@test-huanqiu ~]# crontab -e
#每个星期日凌晨3:00执行完全备份脚本
0 3 * * 0 /bin/bash -x /root/Mysql-FullyBak.sh >/dev/null 2>&1
#周一到周六凌晨3:00做增量备份
0 3 * * 1-6 /bin/bash -x /root/Mysql-DailyBak.sh >/dev/null 2>&1

如果数据量小的情况下,也可一天一做全量备份,具体crontab如下

#每日凌晨3:00执行完全备份脚本
0 3 * * * /bin/bash -x /root/Mysql-FullyBak.sh >/dev/null 2>&1
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值