如何在MySQL 8中实现数据迁移?这里有一个简单易用的方案
文章目录
- 前言
- 一. 致敬IT领域的那些女性
- 二. 进制方式安装MySQL
- 2.1 下载软件包
- 2.2 配置环境:
- 2.2.1 配置yum环境
- 2.2.2 配置安全前的系统环境
- 2.3 开始安装
- 2.4 初始化MySQL
- 2.5 修改配置文件
- 2.6 将MySQL设为服务并启动测试
- 三. MySQL数据迁移
- 总结
前言
正好赶上IT女神节,本文也是为致敬女神节而做的文章,参加了csdn 【IT女神勋章】挑战赛,关于挑战赛的内容可以参考:https://activity.csdn.net/creatActivity?id=10305&utm_source=1518487446


另外本文首发于csdn,收录到【我是沐风晓月】博客的【数据库入门与精通】专栏:

更多内容,请关注csdn博主: 我是沐风晓月
一. 致敬IT领域的那些女性
世界上第一位电脑程序设计师是名女性:Ada Lovelace(1815-1852)是一位英国数学家兼作家,她是第一位主张计算机不只可以用来算数的人,也发表了第一段分析机用的演算法。因此,Ada 被公认为史上第一位认识电脑完全潜能的人,也是史上第一位电脑程序设计师。
Grace Hopper (1906-1992)是最早的计算机之一哈佛Mark I的第一批程序员,并为第一个程序设计语言设计了编译器。她是 COBOL 语言的设计者,常被称为 COBOL 之母。除了语言设计之外,她在语言标准化方面也做出了奠基性的贡献。
而云原生领域,也有很多杰出的女性:
-Liz Rice是一位云安全专家,也是Aqua Security的技术副总裁。她是Kubernetes安全性工作组的成员之一,也是Kubernetes Handbook的合著者之一。她在云安全和Kubernetes方面做出了重要贡献
Michelle Noorali是一位云原生软件开发者,也是Microsoft的云原生计算团队成员之一。她是Helm Chart的创建者之一,也是CNCF的Ambassador之一。她在云原生软件开发和社区建设方面做出了重要贡献。
-Priyanka Sharma是CNCF的总经理,也是Kubernetes Community Days的创始人之一。她在云原生社区建设和管理方面做出了重要贡献,并推动了Kubernetes和其他云原生项目的发展。
-Priyanka Sharma是CNCF的总经理,也是Kubernetes Community Days的创始人之一。她在云原生社区建设和管理方面做出了重要贡献,并推动了Kubernetes和其他云原生项目的发展。
她们通过她们的才智、勇气和贡献,为云原生技术和开源社区的发展做出了不可替代的贡献,值得我们纪念和敬仰。

二. 进制方式安装MySQL
2.1 下载软件包
官网: https://dev.mysql.com/downloads/mysql/


我们选择其中一个下载:
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.31-linux-glibc2.12-x86_64.tar.xz
2.2 配置环境:
2.2.1 配置yum环境
- 备份 CentOS-Base.repo
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
2,下载新Centos-7.repo,命名为CentOS-Base.repo
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
3,清除缓存
yum clean all # 清除系统所有的yum缓存
yum makecache # 生成yum缓存
yum update (可以不更新)
yum install vim -y
2.2.2 配置安全前的系统环境
centos7中安装MySQL,很容易因为系统环境的原因导致安装失败,所以提前删掉系统中可能存在的其他的包。
[root@mufeng21 ~]# rpm -qa |grep mysql
[root@mufeng21 ~]# rpm -qa |grep mariadb
mariadb-libs-5.5.60-1.el7_5.x86_64
[root@mufeng21 ~]# rpm -e mariadb-libs-5.5.60-1.el7_5.x86_64 --nodeps
[root@mufeng21 ~]# find / -name mysql
/etc/selinux/targeted/active/modules/100/mysql
/usr/lib64/mysql
[root@mufeng21 ~]# rm -rf /etc/selinux/targeted/active/modules/100/mysql /usr/lib64/mysql
2.3 开始安装
- 解压软件包
解压后把解压好的包,放入/usr/local/mysql下:
[root@mufeng21 ~]# tar xf mysql-8.0.31-linux-glibc2.12-x86_64.tar.xz
[root@mufeng21 ~]# mv mysql-8.0.31-linux-glibc2.12-x86_64 mysql
[root@mufeng21 ~]# mv mysql /usr/local/mysql
- 创建MySQL用户和用户组
[root@mufeng ~]# groupadd mysql
[root@mufeng ~]# useradd -r -g mysql -s /bin/false mysql
[root@mufeng ~]#
注释:
– r :系统用户 g: 组 s:登录的shell
- 授权:
[root@mufeng ~]# chown -R mysql:mysql /usr/local/mysql
- 设置环境变量
vim /etc/profileexport MYSQL_HOME=/usr/local/mysql
export PATH=$MYSQL_HOME/bin:$PATH
设置远程后,在设置生效
使变量生效:
source /etc/profile
2.4 初始化MySQL
为什么要初始化MySQL?
在MySQL中,初始化是指创建并配置数据目录、配置文件和系统表等操作。这是在第一次安装MySQL或升级MySQL版本时必须执行的步骤。
创建初始化可以达成几个目标:
-
创建数据目录:
MySQL使用数据目录来存储所有数据库、表、索引、日志等数据。初始化过程中,MySQL会自动创建这些目录,确保数据库能够正常工作。 -
配置文件:MySQL的配置文件包含了各种设置,如端口号、字符集、缓冲池大小等等。初始化过程中,MySQL会生成默认的配置文件,并且在后续的运行中,会使用这个配置文件来启动和配置MySQL。
-
系统表:MySQL中的系统表是存储MySQL系统信息的表。初始化过程中,MySQL会创建这些系统表,并把一些重要的信息插入到这些表中,这些信息包括用户信息、
权限信息、配置信息等。
总之,初始化MySQL是确保数据库能够正常工作的关键步骤,也是保障数据库安全和可靠性的重要措施。
[root@mufeng21 ~]# cd /usr/local/mysql/
[root@mufeng21 bin]# mkdir /usr/local/mysql/data[root@mufeng21 mysql]# cd bin/[root@mufeng21 bin]# mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
2022-11-11T23:28:54.622732Z 0 [System] [MY-013169] [Server] /mydbs/app/mysql-8.0.31-linux-glibc2.12-x86_64/bin/mysqld (mysqld 8.0.31) initializing of server in progress as process 78892
2022-11-11T23:28:54.839401Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2022-11-11T23:28:57.561283Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2022-11-11T23:29:02.228029Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: S26!Nx/tit8)
初始化结束后,最后那个S26!Nx/tit8)就是数据库的密码;
2.5 修改配置文件
这里我们使用一个配置文件的模板, 直接复制到 /etc/my.cnf上即可:
vim /etc/my.cnf
[client]port = 3306
socket = /tmp/mysql.sock
[mysqld]#Mysql服务的唯一编号 每个mysql服务Id需唯一
server-id = 1#服务端口号 默认3306
port = 3306#mysql安装根目录
basedir = /usr/local/mysql#mysql数据文件所在位置
datadir = /usr/local/mysql/data#临时目录
tmpdir = /tmp#设置socke文件所在目录
socket = /tmp/mysql.sock#主要用于MyISAM存储引擎,如果多台服务器连接一个数据库则建议注释下面内容
skip-external-locking#只能用IP地址检查客户端的登录,不用主机名
skip_name_resolve = 1#事务隔离级别,默认为可重复读,mysql默认可重复读级别(此级别下可能参数很多间隙锁,影响性能)
transaction_isolation = READ-COMMITTED#数据库默认字符集,主流字符集支持一些特殊表情符号(特殊表情符占用4个字节)
character-set-server = utf8mb4#数据库字符集对应一些排序等规则,注意要和character-set-server对应
collation-server = utf8mb4_general_ci#设置client连接mysql时的字符集,防止乱码
init_connect='SET NAMES utf8mb4'#是否对sql语句大小写敏感,1表示不敏感
#lower_case_table_names = 1#最大连接数
max_connections = 400#最大错误连接数
max_connect_errors = 1000#TIMESTAMP如果没有显示声明NOT NULL,允许NULL值
explicit_defaults_for_timestamp = true#SQL数据包发送的大小,如果有BLOB对象建议修改成1G
max_allowed_packet = 128M#MySQL连接闲置超过一定时间后(单位:秒)将会被强行关闭
#MySQL默认的wait_timeout 值为8个小时, interactive_timeout参数需要同时配置才能生效
interactive_timeout = 1800
wait_timeout = 1800#内部内存临时表的最大值 ,设置成128M。
#比如大数据量的group by ,order by时可能用到临时表,
#超过了这个值将写入磁盘,系统IO压力增大
tmp_table_size = 134217728
max_heap_table_size = 134217728#数据库错误日志文件
log_error = error.log#慢查询sql日志设置
slow_query_log = 1
slow_query_log_file = slow.log
#开启binlog
log_bin=on#检查未使用到索引的sql
log_queries_not_using_indexes = 1#针对log_queries_not_using_indexes开启后,记录慢sql的频次、每分钟记录的条数
log_throttle_queries_not_using_indexes = 5#作为从库时生效,从库复制中如何有慢sql也将被记录
log_slow_slave_statements = 1#慢查询执行的秒数,必须达到此值可被记录
long_query_time = 8#检索的行数必须达到此值才可被记为慢查询
min_examined_row_limit = 100#mysql binlog日志文件保存的过期时间,过期后自动删除
expire_logs_days = 5
2.6 将MySQL设为服务并启动测试
- 先将MySQL设置为使用service 命令启动的服务:
cd /usr/local/mysql/support-files/
cp mysql.server /etc/init.d/mysql.server
- 启动并测试:
oot@mufeng support-files]# service mysql.server start
Starting MySQL.Logging to '/usr/local/mysql/data/error.log'.
... SUCCESS!
- 修改密码
[root@itlaoxin21 support-files]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.31Copyright (c) 2000, 2022, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> alter user 'root'@'localhost' identified by '123456';
Query OK, 0 rows affected (0.00 sec)mysql>
- 查看是否正常启动
[root@mufeng support-files]# lsof -i:3306
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mysqld 79678 mysql 33u IPv6 244969 0t0 TCP *:mysql (LISTEN)[root@itmufeng support-files]# netstat -antup |grep mysql
tcp6 0 0 :::3306 :::* LISTEN 79678/mysqld
tcp6 0 0 :::33060 :::* LISTEN 79678/mysqld
可以看到已经正常启动了。
三. MySQL数据迁移
- 先从数据库中查找配置文件的
默认目录
mysql> show variables like 'datadir';
+---------------+------------------------+
| Variable_name | Value |
+---------------+------------------------+
| datadir | /usr/local/mysql/data/ |
+---------------+------------------------+
1 row in set (0.04 sec)
2 . 登录目录查看是否存在
[root@mufeng ~]# cd /usr/local/mysql/data/
[root@mufeng data]# ls
auto.cnf error.log ibtmp1 mysql.ibd public_key.pem undo_001
ca-key.pem #ib_16384_0.dblwr #innodb_redo on.000001 server-cert.pem undo_002
ca.pem #ib_16384_1.dblwr #innodb_temp on.index server-key.pem
client-cert.pem ib_buffer_pool mufeng.pid performance_schema slow.log
client-key.pem ibdata1 mysql private_key.pem sys
[root@mufeng data]#
-
- 创建需要迁移到的目录
[root@mufeng data]# mkdir -p /data/mysql001
- 停止数据库迁移数据
- 停止数据库
[root@mufeng data]# service mysql.server stop
Shutting down MySQL. SUCCESS!
- 拷贝数据库
root@mufeng data]# pwd
/usr/local/mysql/data
[root@mufeng data]# cp -a mysql /data/mysql001/
- 授权
[root@mufeng data]# chown mysql:mysql -R !$
chown mysql:mysql -R /data/mysql001/
[root@mufeng data]#
- 修改配置文件
vim /etc/my.cnf 中设置 datadir = /data/mysql001/mysql/data

6. 重新初始化
[root@mufeng data]# pwd
/usr/local/mysql/data
[root@mufeng data]# mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql001/mysql/data
- 重启数据库并测试
[root@mufeng data]# service mysql.server start
Starting MySQL.. SUCCESS! [root@mufeng data]# lsof -i :3306
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mysqld 23359 mysql 24u IPv6 172326 0t0 TCP *:mysql (LISTEN)
[root@mufeng data]# mysql -uroot -p123456
如果你这里遇到: 数据迁移结束,重启数据库成功但无法登录的问题,如下:
启动后,数据库可以用,但无法登录:
[root@mufeng data]# mysql -uroot -p123456
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
此时最大的可能性是selinux没有关闭,直接关闭就可以进入。
- 查看修改后的目录
mysql> show variables like 'datadir';
+---------------+----------------------------+
| Variable_name | Value |
+---------------+----------------------------+
| datadir | /data/mysql001/mysql/data/ |
+---------------+----------------------------+
1 row in set (0.00 sec)mysql>
到此数据迁移就做完了,这只是数据迁移的其中一种方法,而非唯一方法。
总结
- 💕 好啦,这就是今天要分享给大家的全部内容了,我们下期再见!
- 💕 博客主页:mufeng.blog.csdn.net
- 💕 本文由沐风晓月原创,首发于CSDN博客
- 💕 全力以赴,持续学习,不负如来不负卿
相关文章:
如何在MySQL 8中实现数据迁移?这里有一个简单易用的方案
文章目录前言一. 致敬IT领域的那些女性二. 进制方式安装MySQL2.1 下载软件包2.2 配置环境:2.2.1 配置yum环境2.2.2 配置安全前的系统环境2.3 开始安装2.4 初始化MySQL2.5 修改配置文件2.6 将MySQL设为服务并启动测试三. MySQL数据迁移总结前言 正好赶上IT女神节&am…...
java多线程(二三)并发编程:Callable、Future和FutureTask
一、Callable 与 Runnable 先说一下java.lang.Runnable吧,它是一个接口,在它里面只声明了一个run()方法: public interface Runnable {public abstract void run(); }由于run()方法返回值为void类型,所以在执行完任务之后无法返…...
day4分支和循环作业
基础题 根据输入的成绩的范围打印及格 或者不及格。 score 58 if score > 90:print(及格) else:print(不及格)根据输入的年纪范围打印成年或者未成年,如果年龄不在正常范围内(0~150)打印这不是人!。 age 52 if 0 < age < 18:print(未成年) elif 18 &l…...
轮毂要怎么选?选大还是选小?
随着改装车的越来越火爆,汽车轮毂可选择的款式也越来越多,90%的人换轮毂,首先选的就是外观。大轮毂的款式多,外形大气好看,运动感十足, 那是不是选大轮毂就可以呢?不是的,汽车轮毂要…...
RabbitMq 使用说明
1. 声明交换机和队列,以及交换机和队列绑定 import lombok.extern.slf4j.Slf4j; import org.springframework.amqp.core.*; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.Bean; import org.spr…...
Vue(10-20)
1Vue赋值方式 Object.defineProperty <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" conten…...
C++-对四个智能指针:shared_ptr,unique_ptr,weak_ptr,auto_ptr的理解
回答如下: C的智能指针是一种特殊类型的“指针”,其主要目的是自动跟踪内存分配和释放,以避免程序中出现内存泄露或空悬指针等问题,主要采用的技术是:借助于类的生命周期,当超出了类的作用域时,…...
uni-app中使用vue3语法详解
全局创建 app.use(createPina()).mount 全局方法 通过app.config.globalProperties.xxx可以创建 这里我们写了一个字符串翻转的全局方法 main.js里面添加一个全局方法 不要忘了加$ 否则会报错 // #ifdef VUE3 //导入创建app import { createSSRApp } from vue //导入创建ap…...
三十四、MongoDB PHP
PHP 语言可是使用 mongo.so ( Windows 下是 mongo.dll ) 扩展访问 MongoDB 数据库 MongoDB PHP 在各平台上的安装及驱动包下载请查看: PHP 安装 MongoDB 扩展驱动 如果你使用的是 PHP7,请移步: PHP7 MongoDB 安装与使用 PHP 连接 MongoDB 和 选择一个…...
浅拷贝和深拷贝的区别
浅拷贝和深拷贝 总结:浅拷贝对象数据共享,深拷贝是一个完全独立的对象,因此对象数据不共享。 浅拷贝(Shallow Copy) 浅拷贝是指创建一个新的对象,但是该新对象只是原始对象的一个副本。具体而言…...
6个常用Pycharm插件推荐,老手100%都用过
人生苦短 我用python 有些插件是下载后需要重启Pycharm才生效的 免费领源码、安装包:扣扣qun 903971231 PyCharm 本身已经足够优秀, 就算不使用插件, 也可以吊打市面上 90%的 Python 编辑器。 如果硬要我推荐几款实用的话, 那么…...
TCP的11种状态
CLOSED状态:初始状态,表示TCP连接是“关闭的”或者“未打开的”LISTEN状态:表示服务端的某个端口正处于监听状态,正在等待客户端连接的到来SYN_SENT状态:当客户端发送SYN请求建立连接之后,客户端处于SYN_SE…...
new 指令简单过程 / 类加载简单过程初始化
例子:Person p new Person(“张三”,”23”); 因为new用到person.class,所以先找到person.class文件,并且加载到内存中(如果有父类先加载父类)执行static块以及static变量的初始化(如果有父类先初始化父类࿰…...
Asan基本原理及试用
概述 Asan是Google专门为C/C开发的内存错误探测工具,其具有如下功能 使用已释放内存(野指针)√堆内存越界(读写)√栈内存越界(读写)√全局变量越界(读写)函数返回局部变…...
深度学习应用技巧4-模型融合:投票法、加权平均法、集成模型法
大家好,我是微学AI,今天给大家介绍一下,深度学习中的模型融合。它是将多个深度学习模型或其预测结果结合起来,以提高模型整体性能的一种技术。 深度学习中的模型融合技术,也叫做集成学习,是指同时使用多个…...
【并发编程】深入理解Java内存模型及相关面试题
文章目录优秀引用1、引入2、概述3、JMM内存模型的实现3.1、简介3.2、原子性3.3、可见性3.4、有序性4、相关面试题4.1、你知道什么是Java内存模型JMM吗?4.2、JMM和volatile他们两个之间的关系是什么?4.3、JMM有哪些特性/能说说JMM的三大特性吗?…...
C++编程语言STL之queue介绍
本文主要介绍C编程语言的STL(Standard Template Library)中queue(队列)的相关知识,同时通过示例代码介绍queue的常见用法。1 概述适配器(adaptor)是STL中的一个通用概念。容器、迭代器和函数都有…...
ACO优化蚁群算法
%% 蚁群算法(ant colony optimization,ACO) %清空变量 clear close all clc [ graph ] createGraph(); figure subplot(1,3,1) drawGraph( graph); %% 初始化参数 maxIter 100; antNo 50; tau0 10 * 1 / ( graph.n * mean( graph.edges(:) …...
SwiftUI 常用组件和属性(SwiftUI初学笔记)
本文为初学SwiftUI笔记。记录SwiftUI常用的组件和属性。 组件 共有属性(View的属性) Image("toRight").resizable().background(.red) // 背景色.shadow(color: .black, radius: 2, x: 9, y: 15) //阴影.frame(width: 30, height: 30) // 宽高 可以只设置宽或者高.…...
Centos 中设置代理的两种方法
Centos 中设置代理的两种方法 在使用局域网时,有时在局域网内只有一台电脑可以进行上网,其他电脑只能通过配置代理的方式来上网,在Windows系统中设置代理上网相对简单,如果只需上网的话,只需在浏览器中找到网络连接&am…...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...
黑马Mybatis
Mybatis 表现层:页面展示 业务层:逻辑处理 持久层:持久数据化保存 在这里插入图片描述 Mybatis快速入门 
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
Redis:现代应用开发的高效内存数据存储利器
一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发,其初衷是为了满足他自己的一个项目需求,即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源,Redis凭借其简单易用、…...
MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)
macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 🍺 最新版brew安装慢到怀疑人生?别怕,教你轻松起飞! 最近Homebrew更新至最新版,每次执行 brew 命令时都会自动从官方地址 https://formulae.…...
python爬虫——气象数据爬取
一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用: 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests:发送 …...
Linux系统部署KES
1、安装准备 1.版本说明V008R006C009B0014 V008:是version产品的大版本。 R006:是release产品特性版本。 C009:是通用版 B0014:是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存:1GB 以上 硬盘…...
