注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

PostgreSQL 中文网

 
 
 

日志

 
 

MySQL 5.6 升级到 MySQL 5.7 实践  

2016-07-05 14:21:42|  分类: MySQL |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
 MySQL 5.7 在功能上有很大增强,例如支持 JSON 、GIS 等,最近打算熟悉下 MySQL 5.7,现有 MySQL 环境是笔记本虚机上的 MySQL 5.6.20 版本,先从版本升级开始,这里记录下升级的过程,不对之处大家帮忙指正。 
 
 MySQL 手册上提到主要的两种升级方式,一种是 In-place 就地升级,一种是逻辑导入、导出升级。今天先测试 in-place 升级,因为对于大库来说, in-place 升级能大大减少停库时间。

Supported Upgrade Methods
In-place Upgrade: Involves shutting down the old MySQL version, replacing the old MySQL binaries or packages with the new ones, restarting MySQL on the existing data directory, and running mysql_upgrade.

Logical Upgrade: Involves exporting existing data from the old MySQL version using mysqldump, installing the new MySQL version, loading the dump file into the new MySQL version, and running mysql_upgrade.

--现有环境

MySQL版本: 5.6.20
软件目录: /opt/mysql
数据目录: /database/mysql/data


--下载 MySQL 5.7.13

[root@db1 soft_bak]# wget http://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.13.tar.gz

之后解压

--编译

[root@db1 mysql-5.7.13]# cmake .  -DCMAKE_INSTALL_PREFIX=/opt/mysql  -DMYSQL_DATADIR=/database/mysql/data -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci 

备注:cmake 遇到的第一个问题是版本太低,提示要 2.8 版本升级下版本即可,之后编译报 boost 相关错误,如下

--cmake 报错

-- Could not find (the correct version of) boost.
-- MySQL currently requires boost_1_59_0

CMake Error at cmake/boost.cmake:81 (MESSAGE):
  You can download it with -DDOWNLOAD_BOOST=1 -DWITH_BOOST=<directory>

  This CMake script will look for boost in <directory>.  If it is not there,
  it will download and unpack it (in that directory) for you.

  If you are inside a firewall, you may need to use an http proxy:

  export http_proxy=http://example.com:80

Call Stack (most recent call first):
  cmake/boost.cmake:238 (COULD_NOT_FIND_BOOST)
  CMakeLists.txt:451 (INCLUDE)

备注:按照提示,加上参数: -DDOWNLOAD_BOOST=1 -DWITH_BOOST=<directory>

--cmake

cmake .  -DCMAKE_INSTALL_PREFIX=/opt/mysql_5.7.13  -DMYSQL_DATADIR=/database/mysql/data -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci  -DWITH_DEBUG=1 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/tmp
make 
make install

备注:这时 cmake 成功,但 make 编译很慢,不停地在 swap ,网上查了下说是内存不够,原有虚拟机 256MB 内存,后来内存扩到 1GB ,编译速度快了很多。

--停库

[mysql@db1 ~]$ mysqladmin -uroot -p shutdown


--软件备份 
# mv /opt/mysql /opt/mysql_5.6.20
# mv /opt/mysql_5.7.13 /opt/mysql

--启库
[mysql@db1 ~]$ mysqld_safe --user=mysql --datadir=/database/mysql/data&


--mysql_upgrade 升级系统表

[mysql@db1 ~]$ mysql_upgrade -uroot -p
Enter password: 
Checking if update is needed.
Checking server version.
Running queries to upgrade MySQL server.
Checking system database.
mysql.columns_priv                                 OK
mysql.db                                           OK
mysql.engine_cost                                  OK
mysql.event                                        OK
mysql.func                                         OK
mysql.general_log                                  OK
mysql.gtid_executed                                OK
mysql.help_category                                OK
mysql.help_keyword                                 OK
...省略
Upgrading tables
Running  : ALTER TABLE `francs`.`tbl_access_log` UPGRADE PARTITIONING
status   : OK
Running  : ALTER TABLE `francs`.`tbl_access_log2` UPGRADE PARTITIONING
status   : OK
Running  : ALTER TABLE `francs`.`tbl_access_log_unix` UPGRADE PARTITIONING
status   : OK
Running  : ALTER TABLE `francs`.`user_info` UPGRADE PARTITIONING
status   : OK
Upgrade process completed successfully.
Checking if update is needed.

备注:mysql_upgrade 检查所有库中的表与现有版本的兼容性并且会刷新系统表,这里执行没有报错,初步判断升级成功。

--测试

[mysql@db1 ~]$ mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.13-debug-log Source distribution

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

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.

root@localhost:(none)>select version();
+------------------+
| version()        |
+------------------+
| 5.7.13-debug-log |
+------------------+
1 row in set (0.00 sec)

备注:升级到了最新版本 MySQL 5.7.13。

--参考

--升级后遇到的问题
升级后发现 HELP 中的内容依然是 5.6 版本的,没有更新到5.7版本,这个现象我在下一篇博客里详细介绍并提供解决方法,详见  MySQL5.6 升级到 MySQL5.7 后 HELP 表没有更新
  评论这张
 
阅读(402)| 评论(2)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016