在部署了一台mysql5.7的机器上部署mysql8.0.35

news2025/7/24 10:26:42

在已部署 MySQL 5.7 的机器上部署 MySQL 8.0.35 的完整指南

在同一台服务器上部署多个 MySQL 版本需要谨慎规划,避免端口冲突和数据混淆。以下是详细的部署步骤:

一、规划配置

  1. 端口分配

    • MySQL 5.7:使用默认端口 3306
    • MySQL 8.0.35:使用新端口 3308(或其他未使用端口)
  2. 数据目录

    • MySQL 5.7:保留原有数据目录(通常为 /var/lib/mysql
    • MySQL 8.0.35:创建新数据目录(如 /var/lib/mysql8
  3. 配置文件

    • MySQL 5.7:保留 /etc/my.cnf
    • MySQL 8.0.35:创建新配置文件(如 /etc/mysql8/my.cnf

二、安装 MySQL 8.0.35

https://cdn.mysql.com/archives/mysql-8.0/mysql-8.0.35-linux-glibc2.12-x86_64.tar.xzhttps://cdn.mysql.com/archives/mysql-8.0/mysql-8.0.35-linux-glibc2.12-x86_64.tar.xz

将mysql-8.0.35-linux-glibc2.12-x86_64.tar.xz包解压到/usr/local/mysql8/ 

tar -xvf mysql-8.0.35-linux-glibc2.12-x86_64.tar.xz -C /usr/local/mysql8/ --strip-components=1

 

1.修改配置文件 /etc/mysql8/my.cnf
[mysqld]
bind-address = 0.0.0.0
port = 3308

basedir = /usr/local/mysql8
datadir = /var/lib/mysql8
socket = /var/lib/mysql8/mysql.sock
log-error = /var/lib/mysql8/error.log
pid-file = /var/lib/mysql8/mysqld.pid

# 完整功能配置
lower_case_table_names=1
max_connections=500
max_allowed_packet=5000M
innodb_default_row_format = DYNAMIC
innodb_file_per_table = ON
innodb_page_size = 32K
sql_mode = "ONLY_FULL_GROUP_BY,ERROR_FOR_DIVISION_BY_ZERO,NO_ZERO_IN_DATE"
default_storage_engine = InnoDB
innodb_buffer_pool_size = 512M
innodb_log_file_size = 256M
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
2. 初始化数据库
/usr/local/mysql8/bin/mysqld --defaults-file=/etc/mysql8/my.cnf --initialize --user=mysql
3.查看临时密码
sudo grep 'temporary password' /var/lib/mysql8/error.log
4.新建启动脚本
vi /etc/init.d/mysql8
#!/bin/bash
# MySQL 8.0.35 init script
# chkconfig: 2345 64 36
# description: MySQL 8.0.35 Server

### BEGIN INIT INFO
# Provides:          mysql8
# Required-Start:    $network $local_fs $remote_fs
# Required-Stop:     $network $local_fs $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start and stop MySQL 8.0.35
# Description:       MySQL 8.0.35 Server
### END INIT INFO

basedir=/usr/local/mysql8
datadir=/var/lib/mysql8
conf=/etc/mysql8/my.cnf
pid_file="$datadir/mysqld.pid"
socket="$datadir/mysql.sock"
user=mysql
lock_file="/var/lock/subsys/mysql8"

start() {
    echo -n "Starting MySQL 8.0.35: "
    if [ -f "$pid_file" ]; then
        read pid < "$pid_file"
            return 0
        fi
    fi
    $basedir/bin/mysqld_safe --defaults-file="$conf" --user="$user" >/dev/null 2>&1 &
    sleep 3
    if [ -f "$pid_file" ]; then
        echo "OK"
        touch "$lock_file"
        return 0
    else
        echo "FAILED"
        return 1
    fi
}

stop() {
    echo -n "Stopping MySQL 8.0.35: "
    if [ ! -f "$pid_file" ]; then
        echo "not running"
        return 0
    fi
    read pid < "$pid_file"
    if [ ! -d "/proc/$pid" ]; then
        echo "not running"
        rm -f "$pid_file" "$lock_file"
        return 0
    fi
    $basedir/bin/mysqladmin --defaults-file="$conf" --user=root --socket="$socket" -p'password' shutdown

    sleep 3
    if [ -d "/proc/$pid" ]; then
        echo "FAILED"
        return 1
    else
        echo "OK"
        rm -f "$pid_file" "$lock_file"
        return 0
    fi
}

status() {
    if [ -f "$pid_file" ]; then
        read pid < "$pid_file"
        if [ -d "/proc/$pid" ]; then
            echo "MySQL 8.0.35 is running (PID: $pid)"
            return 0
        else
            echo "MySQL 8.0.35 is not running, but PID file exists"
            return 1
        fi
    else
        echo "MySQL 8.0.35 is not running"
        return 3
    fi
}

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        stop
        start
        ;;
    status)
        status
        ;;
    *)
        echo "Usage: $0 {start|stop|restart|status}"
        exit 1
esac

exit 0

三. 修改外部可访问

启动mysql8

/etc/init.d/mysql8 start

 使用临时密码登录

/usr/local/mysql8/bin/mysql  -h 127.0.0.1 -P 3308 -u root -p'passwod'

修改密码为1234 

ALTER USER 'root'@'localhost' IDENTIFIED BY '1234';

刷新

FLUSH PRIVILEGES;

查看发现只有本地可访问,修改可访问的主机为所有

update mysql.user set host = '%' where user ='root';

再次查看发现修改成功,同时刷新

FLUSH PRIVILEGES;

四. 客户端兼容

  • MySQL 8.0 默认使用 caching_sha2_password 认证插件,若旧客户端(如 MySQL 5.7 客户端)连接失败,需修改认证方式:
    ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password';

五.数据库迁移脚本

数据库表和数据导出脚本

vi /opt/export_script.sh
#!/bin/bash

# MySQL 5.7 配置(root账户 + 明文密码)
SRC_USER="root"
SRC_PASSWORD="password"
SRC_HOST="localhost"
SRC_PORT="3306"

# 导出配置
BACKUP_DIR="/data/backup/mysql"
THREADS=8
mkdir -p $BACKUP_DIR

# 导出所有表结构
# 导出所有表结构(排除系统库)
mysqldump -u$SRC_USER -p$SRC_PASSWORD -h$SRC_HOST -P$SRC_PORT \
  --no-data \
  --databases $(mysql -u$SRC_USER -p$SRC_PASSWORD -h$SRC_HOST -P$SRC_PORT -N -e "SHOW DATABASES WHERE \`Database\` NOT IN ('information_schema', 'performance_schema', 'mysql', 'sys','dz','dzys_db','gfclimate2021','grid','northwind','testdemoapp','yww_meta','ywwsystem')") \
  > $BACKUP_DIR/structure.sql
# 获取所有表名
TABLES=$(mysql -u$SRC_USER -p$SRC_PASSWORD -h$SRC_HOST -P$SRC_PORT -N -e "SELECT CONCAT(TABLE_SCHEMA, '.', TABLE_NAME) FROM information_schema.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_SCHEMA NOT IN ('information_schema', 'performance_schema', 'mysql', 'sys','dz','dzys_db','gfclimate2021','grid','northwind','testdemoapp','yww_meta','ywwsystem')")

# 创建FIFO队列控制并发
FIFO="/tmp/export_fifo.$$"
mkfifo $FIFO
exec 3<>$FIFO
rm $FIFO

# 初始化线程池
for ((i=1; i<=$THREADS; i++)); do
    echo >&3
done

# 并行导出每个表
for table in $TABLES; do
    read -u 3
    {
        db=$(echo $table | cut -d. -f1)
        tbl=$(echo $table | cut -d. -f2)
        echo "导出 $table..."
        mysqldump -u$SRC_USER -p$SRC_PASSWORD -h$SRC_HOST -P$SRC_PORT --no-create-info --single-transaction --quick $db $tbl | gzip > $BACKUP_DIR/${db}@${tbl}.sql.gz
        echo >&3
    } &
done

wait
exec 3>&-
echo "数据导出完成!"

 数据库表和数据导入脚本

vi /opt/import_script.sh
#!/bin/bash

# MySQL 8 配置(root账户 + 明文密码)
DST_USER="root"
DST_PASSWORD="password"
DST_HOST="127.0.0.1"
DST_PORT="3308"

# 导入配置
BACKUP_DIR="/data/backup/mysql"
THREADS=8

# 导入表结构(先禁用外键检查)
/usr/local/mysql8/bin/mysql -u$DST_USER -p$DST_PASSWORD -h$DST_HOST -P$DST_PORT -e "SET FOREIGN_KEY_CHECKS=0;"
/usr/local/mysql8/bin/mysql -u$DST_USER -p$DST_PASSWORD -h$DST_HOST -P$DST_PORT < $BACKUP_DIR/structure.sql
/usr/local/mysql8/bin/mysql -u$DST_USER -p$DST_PASSWORD -h$DST_HOST -P$DST_PORT -e "SET FOREIGN_KEY_CHECKS=1;"

# 获取所有备份文件
FILES=$(ls $BACKUP_DIR/*.sql.gz 2>/dev/null || true)

# 创建FIFO队列控制并发
FIFO="/tmp/import_fifo.$$"
mkfifo $FIFO
exec 3<>$FIFO
rm $FIFO

# 初始化线程池
for ((i=1; i<=$THREADS; i++)); do
    echo >&3
done

# 并行导入每个表
for file in $FILES; do
    [[ "$file" == *"structure.sql.gz" ]] && continue  # 跳过结构文件
    read -u 3
    {
        filename=$(basename $file)
        db=$(echo $filename | cut -d@ -f1)
        tbl=$(echo $filename | cut -d@ -f2 | cut -d. -f1)

        echo "导入 $db.$tbl..."
        gunzip -c $file | /usr/local/mysql8/bin/mysql -u$DST_USER -p$DST_PASSWORD -h$DST_HOST -P$DST_PORT $db

        echo >&3
    } &
done

wait
exec 3>&-
echo "数据导入完成!"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2397426.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

QT入门学习(一)---新建工程与、信号与槽

一: 新建QT项目 二:QT文件构成 2.1 first.pro 项目管理文件&#xff0c;下面来看代码解析 QT core guigreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c11TARGET main# The following define makes your compiler emit warnings if you use # any Qt feature …

UE5.4.4+Rider2024.3.7开发环境配置

文章目录 一、UE5安装 安装有两种方式一种的源码编译安装、一种是EPIC安装&#xff0c;推荐后者&#xff0c;只需要注册一个EPIC账号就可以一键安装。 二、C环境安装 1.下载VisualStudioSetup 下载链接如下下载 Visual Studio Tools - 免费安装 Windows、Mac、Linux 选择社…

Windows环境下PHP,在PowerShell控制台输出中文乱码

解决方法&#xff1a; 以管理员运行PowerShell , 输入&#xff1a; chcp 65001 重启控制台&#xff1b;然后就正常输出中文&#xff1b;

性能优化 - 理论篇:性能优化的七类技术手段

文章目录 Pre引言性能优化的七类技术手段性能优化策略一览表1. 复用优化2. 计算优化2.1 并行执行2.2 变同步为异步2.3 惰性加载 3. 结果集优化3.1 数据格式与协议选择3.2 字段精简与按需返回3.3 批量处理与分页3.4 索引与位图加速 4. 资源冲突优化4.1 锁的分类与特点4.2 无锁与…

华为IP(7)

端口隔离技术 产生的背景 1.以太交换网络中为了实现报文之间的二层隔离&#xff0c;用户通常将不同的端口加入不同的VLAN&#xff0c;实现二层广播域的隔离。 2.大型网络中&#xff0c;业务需求种类繁多&#xff0c;只通过VLAN实现二层隔离&#xff0c;会浪费有限的VLAN资源…

AIGC与影视制作:技术革命、产业重构与未来图景

文章目录 一、AIGC技术全景&#xff1a;从算法突破到产业赋能1. **技术底座&#xff1a;多模态大模型的进化路径**2. **核心算法&#xff1a;从生成对抗网络到扩散模型的迭代** 二、AIGC在影视制作全流程中的深度应用1. **剧本创作&#xff1a;从“灵感枯竭”到“创意井喷”**2…

Cursor 玩转 腾讯地图 MCP Server

腾讯地图WebService API 服务简介 腾讯地图WebService API 是基于HTTPS/HTTP协议构建的标准化地理数据服务接口。该接口支持跨平台调用&#xff0c;开发者可使用任意客户端、服务器端技术及编程语言&#xff0c;遵循API规范发起HTTPS请求&#xff0c;获取地理信息服务&#xf…

2025年中国电商618年中大促策略分析:存量博弈与生态重构

图片来源&#xff1a;Photo by Samuel Regan-Asante on Unsplash 中国电商行业正经历一场从「增量扩张」到「存量深耕」的深刻转型。 随着网络购物用户规模突破9.74亿、线上消费渗透率逼近30%的临界点&#xff0c;传统流量红利逐渐消退&#xff0c;行业竞争已从「切蛋糕」转向…

Deepseek给出的8255显示例程

#include <stdio.h> #include <conio.h> #include <dos.h>// 定义8255端口地址 (根据原理图译码确定) #define PORT_8255_A 0x8000 // PA端口地址 #define PORT_8255_B 0x8001 // PB端口地址 #define PORT_8255_C 0x8002 // PC端口地址 #define PORT_8255…

智汇云舟携最新无人机2D地图快速重建技术亮相广西国际矿业展览会

5月22至25日&#xff0c;广西国际矿业展览会&#xff08;以下简称 “矿业展”&#xff09;在南宁国际会展中心成功举办。智汇云舟与合作伙伴广西空驭数智信息技术有限公司携无人机 2D地图快速重建技术&#xff0c;以及视频孪生智慧矿山解决方案参会&#xff0c;为矿山行业数字化…

力扣每日一题——连接两棵树后最大目标节点数目 ||

目录 题目链接&#xff1a;3373. 连接两棵树后最大目标节点数目 II - 力扣&#xff08;LeetCode&#xff09; 题目描述 解法一&#xff1a;​​双树贡献分离法​​ Java写法&#xff1a; C写法&#xff1a; 运行时间 时间复杂度和空间复杂度 总结 题目链接&#xff1a;…

【学习笔记】Sparse Crosscoders for Cross-Layer Features and Model Diffing

Sparse Crosscoders for Cross-Layer Features and Model Diffing Abstract 本说明介绍了稀疏跨编码器(sparse crosscoders)&#xff0c;它是一种稀疏自编码器(sparse autoencoders)或transcoders的变体&#xff0c;旨在用于理解叠加中的模型结构。SAEs是在单一层中编码和预测…

VSCode无法转到定义python源码(ctrl加单击不跳转)

已经尝试的方案&#xff1a; 1.确保对应python环境正确激活 在 VSCode 中&#xff0c;打开命令面板&#xff08;CtrlShiftP&#xff09;&#xff0c;输入并选择 Python: Select Interpreter&#xff0c;然后从列表中选择正确的 Python 解释器。 2.重新卸载Python插件再重新安装…

【华为战报】4月、5月 HCIP考试战报!

了解更多往期考试→点 【考试战报】 华为认证 HCIP 4、5月微思 | HCIP 考试战报 学员成绩单 华为认证 最新开班 厦门面授 全国直播 新生代网工必看&#xff1a;华为模拟器eNSP安装教程&#xff08;附下载链接&#xff09;

AIGC工具平台-GPT-SoVITS-v4-TTS音频推理克隆

声音克隆与语音合成的结合&#xff0c;是近年来生成式AI在多模态方向上的重要落地场景之一。随着预训练模型能力的增强&#xff0c;结合语音识别、音素映射与TTS合成的端到端系统成为初学者可以上手实践的全流程方案。 围绕 GPT-SoVITS-v4-TTS 模块&#xff0c;介绍了其在整合…

el-table配置表头固定而且高度变化

根据官网提示只要在 el-table 元素中定义了 height 属性&#xff0c;即可实现固定表头的表格&#xff0c;而不需要额外的代码。 如果你想既要固定表头&#xff0c;又要下方表格高度自适应&#xff0c;可以设置为 height"100%" &#xff1a; 然后外层设置scroll:

设计模式——组合设计模式(结构型)

摘要 组合设计模式是一种结构型设计模式&#xff0c;用于将对象组合成树形结构以表示“部分-整体”的层次结构&#xff0c;使客户端对单个对象和组合对象具有一致的访问方式。它包含抽象组件、叶子节点和组合节点&#xff0c;具有统一处理、支持递归结构和易扩展等优点&#x…

EMO2:基于末端执行器引导的音频驱动虚拟形象视频生成

今天带来EMO2&#xff08;全称End-Effector Guided Audio-Driven Avatar Video Generation&#xff09;是阿里巴巴智能计算研究院研发的创新型音频驱动视频生成技术。该技术通过结合音频输入和静态人像照片&#xff0c;生成高度逼真且富有表现力的动态视频内容&#xff0c;值得…

Python打卡训练营Day43

DAY 43 复习日 作业&#xff1a; kaggle找到一个图像数据集&#xff0c;用cnn网络进行训练并且用grad-cam做可视化 数据集地址&#xff1a;Lung Nodule Malignancy 肺结核良恶性判断 进阶&#xff1a;并拆分成多个文件 import os import pandas as pd import numpy as np from…

PHP7+MySQL5.6 查立得轻量级公交查询系统

# PHP7MySQL5.6 查立得轻量级公交查询系统 ## 系统简介 本系统是一个基于PHP7和MySQL5.6的轻量级公交查询系统(40KB级)&#xff0c;支持线路查询、站点查询和换乘查询功能。系统采用原生PHPMySQL开发&#xff0c;无需第三方框架&#xff0c;适合手机端访问。 首发版本&#x…