mysql5.7升级8.0全过程

说实话,我之前帮助一个朋友将MySQL从5 .7 升级到8 .0,过程非常顺利。
我说一下我当时是怎么操作的。
这可能有点偏离主题,但都是事实。

我们先来说一下准备工作。
我朋友的服务器是戴尔R7 4 0。
说实话,当我看到CPU是双路Xeon Gold 6 2 2 6 、1 6 核3 2 线程、6 4 G内存时,我的心一颤——8 .0的内存要求其实并没有那么严格。
我记得查资料说8 .0需要最小缓存池1 G。
MySQL 的内存是 6 4 G,我建议分配 4 0G 给它一些余量。
在数据备份时我使用了Percona XtraBackup。
我是在晚上系统电量低的时候做的。
我导入了大约3 T的数据并复制到NAS上。
速度……说实话,相当慢。

有趣的是下载安装包。
当时他使用的是 CentOS 7 我直接去官网下载,错误。
我几乎用的是windows安装包。
幸好我发现得早。
8 .0的安装方法与5 .7 不同。
5 .7 是rpm包,8 .0必须用yum安装。
这需要首先配置 mysql8 0-community-release-el7 -3 .noarch.rpm 存储库。
我记得当我执行 yum install mysql-community-server 时,它被卡住了一次。
后来发现库存图片源太慢,就改成了阿里云源。

说到停止服务,5 .7 使用systemctl stop mysqld,但是8 .0有了一个新东西,就是mysql_upgrade命令。
这个必须先做,不然直接启动8 .0会报错。
我的手滑了一下,忘记先运行这个命令了。
结果8 .0安装后无法启动。
我查了很久,发现是版本兼容性问题。

当我卸载5 .7 时,我删除了一些剩余的文件。
此时他在 /media/mysql 目录中安装了 5 .7 卸载后,他使用 rm -rf /media/mysql 删除整个目录。
但是后来安装8 .0的时候,就导致了路径冲突。
我实在是哭笑不得。
后来改挂载在/mnt/mysql下,一切顺利。

安装8 .0时,其实有很多配置选项。
我记得他勾选了“包括数据库文件”和“包括日志文件”。
这一点非常重要,否则数据迁移过程中很容易出现问题。
他还更改了几个参数,例如将 max_connections 从 1 00 更改为 3 00,因为 8 .0 中的默认值变得更高。
他的业务是电商,高峰期的并发量其实并没有受到限制。

配置文件是关键。
8 .0的配置文件路径为/etc/my.cnf.d/mysql-server.cnf。
我在5 .7 上更改了my.cnf中的一些参数,例如innodb_buffer_pool_size从2 0G更改为3 0G,因为它有很多业务表。
进行更改后,请记住使用 mysql-check-charset 检查字符集兼容性。
当时我确实发现了代码冲突。

初始化命令mysql_upgrade --force执行得很快,但是中间有一个步骤让他卡了很久——当被问到是否应该启用PAM认证时,他用了当时的旧密码,直接选择了yes。
结果后续启动就卡在认证过程中了。
最后又改回原来的密码了。

数据迁移是重头戏。
对于3 T数据,我建议使用xtrabackup的恢复模式,直接将备份文件复制回来,运行xtrabackup --datadir=/var/lib/mysql --target-dir=/backup/restore --tables-to-exclude=mysql进行排除系统表。
恢复过程大约需要1 .5 小时,期间CPU利用率升至9 5 %。
恢复后,执行mysql_upgrade来处理版本差异。
当时,他的业务系统停运了2 个小时。

测试部分,我给他写了几个压力测试脚本,模拟订单系统这样的高并发场景。
我确实发现了几个问题。
例如,8 .0上的默认存储引擎InnoDB在写入大量数据时比5 .7 慢1 5 %。
后来调整innodb_flush_log_at_trx_commit参数后得到改进。
这也是一个奇怪的现象。
5 .7 中运行的查询速度是 8 .0 中的一半。
经过一番查找,原来8 .0的标准字符是与utf8 mb4 集成的。
他的业务中有一些字段是Latin1 ,字符集是后来聚合的。

总的来说,这次升级给我留下了深刻的印象。
说实话,8 .0相比5 .7 其实已经有了很大的进步,比如支持C++1 1 的新特性、分区表优化等,但兼容性需要小心。
至于数据迁移,如果你的服务器配置足够好,可以考虑直接在线迁移。
我的R7 4 0正在进行离线迁移。
下次有机会我很想尝试一下InnoDB Cluster的在线迁移功能。

mysql-5.7.17-winx64绿色版卸载不干净,该怎么办?

卸载MySQL5 .7 .1 7 绿色版,彻底清理。
Windows1 0专业版的操作。

1 .停止 MySQL 服务。
在services.msc中找到MySQL5 7 、MySQL,右键停止服务。

2 删除文件。
删除整个 C:ProgramFilesMySQL 目录。
删除C:ProgramDataMySQLMySQLServer5 .7 Data下的所有文件。
绿色版需要手动删除并解压包。

3 删除注册表。
在注册表中删除: HKEY_LOCAL_MACHINESYSTEMControlSet001 ServicesEventLogApplicationMySQL HKEY_LOCAL_MACHINESYSTEMControlSet001 ServicesMySQL HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesMySQL 必须删除多个控制集。

4 删除环境变量。
删除环境变量系统变量中Path中的MySQL路径。

重新启动计算机。

---
重新安装MySQL5 .7 .1 7
1 .管理员身份的命令行。
Win+X 选择管理员命令行。

2 卸载剩余的服务。
cd 到 bin 目录,mysqld-remove。

3 初始化数据目录。
mysqld --initialize-insecure 没有密码。
mysqld--initialize--console有密码,记下临时密码。

4 安装服务。
mysqld 安装程序。

5 启动服务。
netstartmysql。

6 解决常见问题。
服务停止了?查看权限、端口3 3 06 和配置文件my.ini。
忘记了 root 密码?停止服务,将skip-grant-tables 添加到my.ini,然后重新启动。
FLUSHPRIVILEGES;ALTERUSER'root'@'localhost'IDENTIFIEDBY'新密码', 更改后,删除跳过授权表并重新开始。
删除注册表仍然会禁用该服务吗? scdeleteMySQL。

---
防止脏卸载。
使用msi官方版自动清理。
卸载前停止服务并备份数据。
使用 RevoUninstaller 定期进行深度清洁。

自己掂量一下。

mysql 5.6.35 解压版怎么卸载

坦白说,卸载并安装解压版的MySQL其实很简单,但细节上有问题。
我们先来说说最重要的事情。
要卸载旧版本,必须先关闭MySQL服务,以管理员身份运行cmd,运行netstopmysql,或直接在服务中停止MySQL。
还有一点就是,卸载的时候不要忘记检查服务名称,在服务管理中可以看到。
另一个重要的细节是删除注册表中的相关信息,例如HKEY_LOCAL_MACHINE下的一些目录。

起初我以为我可以删除文件并停止服务,但后来我意识到出了问题,我还需要清理注册表中的信息。
等等,还有一件事。
卸载旧版本后,必须先下载ZIP包并解压到指定目录才能安装新版本。
添加系统环境变量以使使用命令窗口更加方便也很重要。
不要忘记创建一个新的 MYSQL_HOME 变量并将其添加到您的 PATH 变量中。

最后,安装新版本时,不要忘记修改配置文件my-default.ini。
老实说,这很令人困惑。
很多人不注意这一点。
归根结底,细节决定成败,所以我认为值得一试。