此版式是通用的,无论是mysql6还是mysql7,还是mysql8
本次例子是mysql5.7
由于我是把别的数据全部数据备份,包阔数据的密码,所以导入后数据库密码也不对了
模拟数据
首先从生产环境备份数据,并在测试环境中安装mysql5.18,并把数据导入测试数据中。
数据包:
安装 mysql5.18
解压
tar -zxvf mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz -C /usr/local/
创建用户
useradd -s /sbin/nologin mysql
赋予权限
chown -R mysql.mysql /usr/local/mysql-5.7.18-linux-glibc2.5-x86_64/
链接mysql
ln -s mysql-5.7.18-linux-glibc2.5-x86_64/ mysql
上面那部是为了方便升级数据库
创建存储数据目录和mysql配置文件
mkdir -p /data/mysql/data
cat > /data/mysql/my.cnf <<EOF
[mysqld]
basedir=/usr/local/mysql
datadir=/data/mysql/data
socket=/tmp/mysql.sock
pid-file = /data/mysql/mysql.pid
log_error = /data/mysql/log/mysqld.log
user=mysql
server_id=187227
log_bin=/data/mysql/mysql-bin
# 不同步哪些数据库
relay-log = mysql-relay-bin
replicate-wild-ignore-table=mysql.%
replicate-wild-ignore-table=test.%
replicate-wild-ignore-table=information_schema.%
# 只同步哪些数据库,除此之外,其他不同步
replicate_wild_do_table=zkc.%
replicate_wild_do_table=world.%
slow_query_log=1
slow_query_log_file=/data/mysql/log/slow.log
long_query_time=0.1
log_queries_not_using_indexes
max_connections = 1000
log-slave-updates
port=3306
lower_case_table_names=0
EOF
给数据/data/mysql/赋予权限
chown -R mysql.mysql /data
初始化数据
/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/data
数据初始化完成
启动数据库
启动命令:
/usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysql/my.cnf --user=mysql 2>&1
第一次启动会失败
mkdir -p /data/mysql/log/
touch /data/mysql/log/mysqld.log
chown -R mysql.mysql /data
再次重新启动
配置基本快捷键
vim /etc/profile
export PATH=/usr/local/mysql/bin:$PATH
source /etc/profile
登录mysql
修改密码
alter user root@‘localhost’ identified by “root”
重新登录,不要密码是登录不了的
赋予root远程登录权限
grant all on . to root@’%’ identified by ‘root’;
导入数据备份脚本
mysql -uroot -proot < /root/mysql_20210630.sql
备份
模拟环境已经准备就绪,备份数据库
编写备份数据库脚本
vim back_mysql.sh
#!/bin/bash
(time mysqldump -h192.168.10.138 -P3306 -uroot -proot --single-transaction -A > mysql_20210701.sql) > dump.log 2>&1 &
echo "sh back_mysql.sh" | at now
缺少包依赖
启动
重新备份
备份完毕,开始升级
升级
解压升级包
tar -zxvf mysql-5.7.33-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
升级前查看mysql当前版本
升级替换
rm -rf mysql
ln -s mysql-5.7.33-linux-glibc2.12-x86_64/ mysql
chown -R mysql.mysql mysql-5.7.33-linux-glibc2.12-x86_64/
rm -rf mysql-5.7.18-linux-glibc2.5-x86_64/
关闭原mysql服务
/usr/local/mysql/bin/mysqladmin -uroot -proot shutdown
服务已停止
/usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysql/my.cnf --user=mysql 2>&1 &
mysql启动成功,查看版本
数据库导入进去,脚本里面的数据库密码覆盖了现有的数据库密码
/usr/local/mysql/bin/mysql_upgrade -uroot -pA_dminjs#888
升级完毕