使用 Docker 升级 MySQL 的优化步骤与说明

ops/2024/10/20 8:29:13/

在升级 MySQL 之前,进行系统化的准备和实施能够显著降低数据丢失的风险,并确保顺利过渡。以下是优化后的详细步骤及分析。

一、备份原数据库所有数据

重要性分析

在任何数据库操作中,备份都是最重要的一步。确保备份包含所有数据库、表及其结构,以便在必要时可以恢复。

备份命令
docker exec your-mysql /usr/bin/mysqldump -u root --password=xxxxxx --all-databases > 20240929all_databases_backup.sql
  • 备份策略:可以考虑定期备份并存储在不同的物理位置,以防止单点故障。

二、查看正在运行的 MySQL 容器名称

使用以下命令可以查看正在运行的 MySQL 容器

docker ps --filter "name=mysql"
注意事项
  • 如果存在多个 MySQL 容器,应确保选择正确的容器进行操作。

三、查看当前 MySQL 版本

使用以下命令检查当前 MySQL 版本:

docker exec -it your-mysql mysql -V
版本验证

确认当前版本(如 8.2.0),确保新版本(如 8.4.2)具有所需的特性和修复。

四、停止原 MySQL 容器

docker stop xxx-mysql
停止原因

在进行版本升级之前,停止容器以确保数据一致性,避免在数据写入时进行迁移。

五、拉取新的 MySQL 版本

docker pull mysql:8.4.2
版本选择

在选择版本时,建议查阅官方文档,了解新版本的更改日志和迁移指南,以预见潜在的兼容性问题。

六、创建新的 MySQL 容器

创建新容器时,使用如下命令:

docker run --name qgz-mysql842 --restart=always -p 3306:3306 -v /data/mysql/conf.d:/etc/mysql/conf.d -v /data/mysql/data2:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=yourPassword -d mysql:8.4.2
参数说明
  • –restart=always:确保容器在失败时自动重启,提供更高的可用性。
  • 数据卷映射:确保配置文件和数据文件夹的正确映射,以保持原有配置和数据。

七、导入备份数据

将备份数据导入新容器

cat 20240929all_databases_backup.sql | docker exec -i qgz-mysql842 /usr/bin/mysql -u root --password=xxxxxx
导入注意事项
  • 在导入之前,建议先检查备份文件的完整性和可读性。
  • 对于大型数据库,考虑使用分块导入以提高性能。

八、启动新容器并检查

确保新容器已启动并查看日志:

docker logs qgz-mysql842
日志分析

查看日志以确认是否有任何错误或警告,确保新容器运行正常。

九、检查新版本

通过以下命令确认新版本是否正确安装:

docker exec -it qgz-mysql842 mysql -V
版本确认

确保版本为 8.4.2,验证新特性和功能是否正常。

十、处理用户异常

如果出现用户访问问题,可以使用以下命令修改用户身份验证方式:

ALTER USER 'root'@'%' IDENTIFIED WITH caching_sha2_password BY 'yourNewPassword';
用户管理

确保用户权限和身份验证方式符合最佳实践,以增强安全性。


结论

通过上述步骤,您可以顺利完成 MySQL 的版本升级。在执行过程中,确保遵循最佳实践,定期进行备份和监控,以最大程度降低风险。同时,做好文档记录,以便将来的操作和审计。


http://www.ppmy.cn/ops/126926.html

相关文章

在 Python 语言中,元组(tuple)、字符串(str)、列表(list)和集合(set)是常见的数据结构,它们有以下区别:

在 Python 语言中,元组(tuple)、字符串(str)、列表(list)和集合(set)是常见的数据结构,它们有以下区别: 1. 定义与表示 元组 定义:元组…

实验3,网络地址转换

实验3:网络地址转换 实验目的及要求: 通过实验,掌握NAT技术的工作原理,了解三种不同类型NAT技术的主要作用以及各自的主要应用环境。能够完成静态NAT和复用NAT技术的应用,并熟练掌握NAT技术相关的配置命令。 实验设…

Oracle数据库系统表空间过大,清理SYSTEM、SYSAUX表空间

一.前言 在oracle数据库中,system为系统表空间,存放着一些我们经常用到的系统表和视图,sysaux为辅助表空间,辅助着系统表空间。这两个表空间不宜添加数据文件,会使系统表空间过于臃肿,从而影响数据库的使用…

线性代数基础02

目录 1.向量 1.1向量的定义 1.2向量的运算 1.2.1向量加法 1.2.2向量数乘 1.2.3向量点积 1.3矩阵的特征值和特征向量 1.4向量的模 1.4.1向量的模的定义 1.4.2向量的模的几何解释 1.4.3向量的模的性质 1.5向量的内积 1.5.1向量的内积的定义 1.5.2向量的内积的几何解…

如何安装MySql

一.卸载MySql 1.1安装版 进入“控制面板”,将有关“mysql”的一切都删除,再到“C:\ProgramData”中,将“mysql”文件夹删除。 1.2压缩版 先在cmd中停止mysql服务 net stop mysql8 再删除解压“mysql”文件夹即可 二.安装MySql 2.2安装版…

SpringMVC源码-接口请求执行流程,包含九大内置组件的实例化初始化,拦截器调用,页面渲染等源码讲解

一、上传文件功能的实现: 前端JSP代码: form 表单提交&#xff0c;enctype为multipart/form-data&#xff0c;请求方式POST <% page contentType"text/html;charsetUTF-8" language"java" %> <%pageContext.setAttribute("ctx",reque…

STM32-USART串口协议

一、USART与UART 1、区别 同步通信‌&#xff1a;USART在同步通信时需要时钟来触发数据传输&#xff0c;能够提供主动时钟&#xff0c;这使得通信双方可以共享一个时钟信号来采样数据线。‌异步通信‌&#xff1a;在异步通信中&#xff0c;USART与UART没有区别&#xff0c;因…

如何在windows下搭建一个gitlab

在Windows上创建一个GitLab实例&#xff0c;最常用的方法是通过Docker来运行GitLab的官方镜像。以下是具体步骤&#xff1a; 前提条件 Windows系统&#xff1a;确保系统已经安装了Windows 10或更高版本。安装Docker Desktop&#xff1a;可以从 Docker官网 下载并安装。安装完…