写点什么

软件测试 | 升级 MySQL

  • 2023-08-01
    北京
  • 本文字数:1411 字

    阅读完需:约 5 分钟

更多学习资料戳!!!

MySQL 的版本更新更快,新版本中往往包含了很多新功能,并且解决了很多旧版本中的 BUG,因此很多情况下用户需要对数据库进行升级。

MySQL 的升级很简单,以下给出了几种不同的升级方法,每种升级方法都有一定的优缺点,用户可以按照实际需求选择合适的方法进行操作。

方法一:最简单,适用于任何存储引擎(不一定速度最快)。

(1)在目标服务器上安装新版本的 MySQL。

(2)在新版本 MySQL 上创建和老版本同名的数据库。命令如下:

 shell> mysqladmin -h hostname -P port -u user -p passwd create db_name
复制代码

(3)将老版本 MySQL 上的数据库通过管道导入到新版本数据库中。命令如下:

shell> mysqldump --opt db_name | mysql -h hostname -P port -u user -p passwd  db_name
复制代码

这里的--opt 选项表明采用优化(Optimize)方式进行导出。

注意:如果网络较慢,可以在导出选项中加上--compress 来减少网络传输。

对于不支持管道操作符(|)的操作系统,可以先用 mysqldump 工具将旧版本的数据导出为文本文件,然后再往新版本 MySQL 中导入此文件。其实就是把上面操作分为两步执行,具体操作如下:

shell> mysqldump --opt db_name > filename(旧版本 MySQL 上执行) shell> mysql –u user –p passwd db_name < filename(新版本 MySQL 上执行)
复制代码

(4)将旧版本 MySQL 中的 mysql 数据库目录全部 cp 过来覆盖新版本的 MySQL 中的 mysql 数据库。例如将/home /mysql_old/data/mysql 目录覆盖掉/home/mysql_new/data/mysql,可以使用如下命令。

 shell>cp –R /home/mysql_old/data/mysql /home/mysql_new/data
复制代码

这里,-R 选项表示 cp 整个目录下内容,包括嵌套的所有子目录。

(5)新版本服务器的 shell 里面执行 mysql_fix_privilege_tables 命令升级权限表。

shell>mysql_fix_privilege_tables
复制代码

(6)重启新版本 MySQL 服务。

至此,升级完毕。

方法二:适用于任何存储引擎,速度较快。

(1)参照方法一种的步骤(1)安装新版本 MySQL

(2)在旧版本 MySQL 中,创建用来(2)在旧版本 MySQL 中,创建用来保存输出文件的目录并用 mysqldump 备份数据库:

shell> mkdir DUMPDIR  shell>mysqldump --tab=DUMPDIR db_name
复制代码

这里使用--tab 选项不会生成 SQL 文本。而是在备份目录下对每个表分别生成了.sql 和.txt 文件,其中.sql 保存了表的创建语句;.txt 保存了用默认分隔符生成的纯数据文本。

(3)将 DUMPDIR 目录中的文件转移到目标服务器上相应的目录中并将文件装载到新版本的 MySQL 中,具体操作如下(以下命令都在新版本服务器中执行):

shell> mysqladmin create db_name # 创建数据库  shell> cat DUMPDIR/*.sql | mysql db_name # 创建数据库表  shell> mysqlimport db_name DUMPDIR/*.txt # 加载数据
复制代码

(4)参照方法一中的步骤(4)、(5)、(6)升级权限表,并重启 MySQL 服务。

方法三:适合于 MyISAM 存储引擎的表,速度最快。

(1)参照方法一中的步骤(1)安装新数据库。

(2)将旧版本 MySQL 中的数据目录下的所有文件(.frm、.MYD 和.MYI)cp 到新版本 MySQL 下的相应目录下。

(3)参照方法一中的步骤(4)、(5)、(6)升级权限表,并重启 MySQL 服务。

从上面 3 种方法中可以看出,其实升级的步骤都大同小异,区别仅仅在于数据迁移方法的不同。这里需要提醒读者的有两点:

  • 上面的升级方法都是假设升级期间旧版本 MySQL 不再进行数据更新,否则,迁移过去的数据将不能保证和原数据库一致。

  • 迁移前后的数据库字符集最好能保持一致,否则可能会出现各种各样的乱码问题。

用户头像

社区:ceshiren.com 微信:ceshiren2023 2022-08-29 加入

微信公众号:霍格沃兹测试开发 提供性能测试、自动化测试、测试开发等资料、实事更新一线互联网大厂测试岗位内推需求,共享测试行业动态及资讯,更可零距离接触众多业内大佬

评论

发布
暂无评论
软件测试 | 升级MySQL_测试_测吧(北京)科技有限公司_InfoQ写作社区