Ubuntu 平滑升级 MySQL 到 5.7

最近 MySQL 发布了 5.7 正式版(https://dev.mysql.com/doc/refman/5.7/en/mysql-nutshell.html)。5.7 可以说是里程碑式的版本,提高了性能,并增加了很多新的特性。不管怎么样,先升级再说。

首先我的 Ubuntu 版本是 14.04,已经通过 ppa 的方式安装了 MySQL 5.6,所以首先得去掉这个源。

手工删除的话可以去 /etc/apt/sources.list.d 目录下干掉类似 xxx_mysql-5.6_xxx.list 的文件即可。

然后再安装上官方 apt 源,先在 http://dev.mysql.com/downloads/repo/apt/ 下载最新的 deb 文件,然后使用 dpkg 命令添加源,最后执行安装 MySQL 命令即可:

需要注意的是在添加源那一步的时候,会叫你选择安装 MySQL 哪个应用,这里选择 Server 即可,再选择 MySQL 5.7 后又会回到选择应用的那个界面,此时选择 Apply 即可。

安装完之后还需执行一下 sudo mysql_upgrade -u root -p 更新数据(重要)。

一般这样就完事了,数据什么的都完整无缺。

但一般就是会出现一点小插曲。我在 MySQL 自动启动的时候起不来了:

d96bb863e4ebd54d13a65ff5c

也没看见日志在哪儿,在 /etc/mysql 目录下找日志的时候发现多了个 my.cnf.dpkg-dist 文件,对比一下发现和原来的 my.cnf 不太一样呀,把原来的 my.cnf 备份后使用这个文件替换掉。再次启动 MySQL 果然 OK 了。

这篇文章写得还是没啥营养,权当做个记录吧。等以后水平高了,再来填 MySQL 5.7 新特征及其优化的坑。

update:

关于配置优化,介绍一个好网站:http://tools.percona.com/ (Free online productivity tools for MySQL DBAs, SysAdmins and Developers)。我 1 CPU,1 GB RAM 的配置如下:

我在启动的时候,查看 error.log 日志,发现了一些错误,下面是其解决方法:

[Warning] Could not increase number of max_open_files to more than 4096 (request: 65535)

解决办法:vim /etc/security/limits.conf,然后添加几行:

目的是增大文件打开数,提升一定的性能,适当即可。

plugin load error:

解决办法:看样子是这几个插件已经内置了,无需加载。查看 plugin 表里面也就这几个插件:

直接 truncate mysql.plugin 即可。

[Warning] CA certificate ca.pem is self signed.

解决办法:这个警告是因为使用了自签证书(猜测),即使开启传输加密也有被中间人攻击的风险,可以买个权威 CA 机构颁发的证书。我们这里就直接忽略这个错误了。

[Warning] ‘user’ entry ‘root@localhost’ ignored in –skip-name-resolve mode.

解决办法:这个可以忽略,因为我们设置 skip-name-resolve,禁用了 DNS 查询。(If you have a very slow DNS and many hosts, you might be able to improve performance either by disabling DNS lookups with –skip-name-resolve or by increasing the value of host_cache_size to make the host cache larger.)

启动的时候显示 “No directory, logging in with HOME=/”。

解决办法:这是 MySQL 的命令行日志,日志路径由环境变量 MYSQL_HISTFILE 指定。若系统中没有此环境变量,就会默认在 ~ (当前用户根目录)下生成 .mysql_history 隐藏文件,类似于 .bash_history,有一定的安全风险。如果你不想要这个文件,除了修改环境变量 MYSQL_HISTFILE 外,还有一个比较好的方式就是将文件软链接到 /dev/null(ln -s /dev/null $HOME/.mysql_history)。

参考资料:

《A Quick Guide to Using the MySQL APT Repository》http://dev.mysql.com/doc/mysql-apt-repo-quick-guide/en/

《Changes Affecting Upgrades to MySQL 5.7》https://dev.mysql.com/doc/refman/5.7/en/upgrading-from-previous-series.html

http://dba.stackexchange.com/questions/65397/error-function-innodb-already-exists

https://dev.mysql.com/doc/refman/5.7/en/mysql-logging.html

知识共享许可协议

说点什么

avatar
排序:   最新 | 最旧 | 得票最多
fish
游客
fish

你好。

在第四步骤,运行apt-get install mysql-server后,显示:

正在安装新版本配置文件 /etc/init.d/mysql …
update-alternatives: 使用 /etc/mysql/mysql.cnf 来在自动模式中提供 /etc/mysql/my.cnf (my.cnf)
Job for mysql.service failed because the control process exited with error code. See “systemctl status mysql.service” and “journalctl -xe” for details.
invoke-rc.d: initscript mysql, action “start” failed.
dpkg: 处理软件包 mysql-community-server (–configure)时出错:
子进程 已安装 post-installation 脚本 返回错误状态 1
dpkg: 依赖关系问题使得 mysql-server 的配置工作不能继续:
mysql-server 依赖于 mysql-community-server (= 5.7.18-1ubuntu16.04);然而:
软件包 mysql-community-server 尚未配置。

dpkg: 处理软件包 mysql-server (–configure)时出错:
依赖关系问题 – 仍未被配置
正在处理用于 libc-bin (2.23-0ubuntu3) 的触发器 …
正在处理用于 systemd (229-4ubuntu16) 的触发器 …
在处理时有错误发生:
docker-engine
mysql-community-server
mysql-server
E: Sub-process /usr/bin/dpkg returned an error code (1)
root@AR:~# which docker-engine
root@AR:~#

怎么解决错误?

trackback

[…] 0x1 使用最新版本的 PHP 和 MySQL。毫无疑问升级基础运行环境是提高性能最好的方式之一。特别的 PHP7 和 MySQL 5.7 较之前的版本性能提升很大。还有更具服务器配置适当调整 PHP-FPM 和 MySQL 参数。 […]

wpDiscuz