Mysql版本升级

mysql从5.7.43升级到8.0.37

检查工具、安装包下载

下载网址:https://dev.mysql.com/downloads/

兼容性检查

1、解压 tar -xf mysql-shell-8.0.38-linux-glibc2.17-x86-64bit.tar.gz
2、进入解压文件的bin目录 ./mysqlsh -uroot -p -S /tmp/mysql.sock -e “util.checkForServerUpgrade()”

数据库备份

1、进入mysql安装目录 bin/mysqldump -h127.0.0.1 -uroot -p --all-databases --single-transaction >>/root/mysqlbakup/20240829mysql5.7.41/all.sql.bak.20240829
2、安装目录备份、数据目录备份、配置文件备份
数据库关闭:
show variables like ‘innodb_fast_shutdown’;
set global innodb_fast_shutdown=0;
shutdown;
数据目录备份:cp -r /home/application/mysql/data /home/application/mysql/data_bak_date +%F
安装目录备份:cp -r /home/application/mysql/app/ /home/application/mysql/app_bak_date +%F
配置文件备份:cp /etc/my.cnf /etc/my.cnf_date +%F

升级安装mysql

1、解压文件,改文件夹名称:
tar -xf ./mysql-8.0.39-linux-glibc2.17-x86_64.tar.xz
mv mysql-8.0.37-linux-glibc2.17-x86_64 mysql8.0.37

2、调整配置文件/etc/my.cnf

/**
[client]
port = 3306
socket = /tmp/mysql.sock

[mysqld]
server-id = 102
port = 3306
#mysql安装根目录
basedir = /usr/local/mysql
#mysql数据文件所在位置
datadir = /data/data
#数据库错误日志文件
log_error = /data/data/error.log
pid-file = /data/data/mysqld.pid

#默认认证插件
default_authentication_plugin=mysql_native_password
#默认数据恢复,默认0
innodb_force_recovery=0

#慢查询sql日志设置
slow_query_log = 1
slow_query_log_file = /data/data/slow.log
#慢查询执行的秒数,必须达到此值可被记录
long_query_time = 3

#CPU多核处理能力设置,读多,写少可以设成2:6的比例
innodb_write_io_threads = 4
innodb_read_io_threads = 8
#忽略同步过程错误
#slave-skip-errors = all
############################主从复制 设置########################################
#开启mysql binlog功能
log-bin=mysql-bin
#mysql binlog日志文件保存的过期时间,90天过期后自动删除
binlog_expire_logs_seconds = 7776000

#临时目录 比如load data infile会用到
tmpdir  = /tmp
#设置socke文件所在目录
socket  = /tmp/mysql.sock
#只能用IP地址检查客户端的登录,不用主机名
skip_name_resolve = 1
#数据库默认字符集,主流字符集支持一些特殊表情符号(特殊表情符占用4个字节)
character-set-server = utf8mb4
#数据库字符集对应一些排序等规则,注意要和character-set-server对应
collation-server = utf8mb4_general_ci 

 #是否对sql语句大小写敏感,1表示不敏感
lower_case_table_names = 1
# 最大连接数
max_connections=1000
# 连接失败的最大次数。防止有人从该主机试图攻击数据库系统
max_connect_errors=200

#SQL数据包发送的大小,如果有BLOB对象建议修改成1G
max_allowed_packet = 1G
 
#默认32kb, 设置512k
binlog_cache_size = 524288

innodb_buffer_pool_size = 24G
#建议先调整为2M,后期观察调整
sort_buffer_size = 2m
**/

3、调整软连接
删软连接:rm -r /usr/local/mysql
生成软连接:lln -s /usr/local/mysqldbms/mysql8.0.39 /usr/local/mysql

4、赋予文件夹权限
chown -R mysql:mysql mysql mysqldbms
5、启动并强制更新
/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --upgrade=FORCE

检查数据结构

脚本文件:checkdatabase.sh

DB_USER="root"  
DB_PASSWORD="123459"  
DB_NAME="park"  
HOST="127.0.0.1"  
OUTPUT_FILE="table_check_results.txt"    
mysql -u"$DB_USER" -p"$DB_PASSWORD" -h"$HOST" -e "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '$DB_NAME' AND TABLE_TYPE = 'BASE TABLE';" | while read table; do  
    {  
        echo "Checking table: $table"  
        mysql -u"$DB_USER" -p"$DB_PASSWORD" -h"$HOST" -e "USE $DB_NAME; CHECK TABLE \`$table\`;"  
    } >> "$OUTPUT_FILE"  # 使用>>将命令组的输出追加到文件中  
done  

启动关闭查看mysql

sudo systemctl start mysql

sudo systemctl enable mysql
sudo systemctl status mysql

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值