Centos下MySQL 5.1.x升级到MySQL 5.5.x教程

在调用微信接口的时候,如果遇到包含表情的昵称或者消息的时候,在将数据写入到MySQL的时候会出现类似 Incorrect string value: '\xF0\x8F...' for column 'XXX' 的错误提示。原因是UTF-8编码有可能是两个、三个或四个字节,而上述中的表情为Emoji表情,在iPhone手机中很常见,很多都是四个字节的。但是MySQL 5.1.x不支持这样四个字节的utf-8编码,只有5.5.x才支持,所以只能将MySQL升级到5.5.x。

1. 安装MySQL
windows下面安装MySQL 5.5.x非常简单,这里不再详述。Linux下面因为从MySQL 5.5开始使用cmake来做config了,所以与之前版本的安装方式不同,这里说明一下不同的地方。

首先安装基础依赖库:

 LANG=C
 yum -y install gcc-c++ gperf ncurses-devel readline-devel libaio-devel

然后下载编译安装cmake:

 wget http://www.cmake.org/files/v2.8/cmake-2.8.12.2.tar.gz
 tar xzvf cmake-2.8.12.2.tar.gz
 cd cmake-2.8.12.2
 ./configure && make && make install

安装完成之后可以执行 cmake -version 命令查看cmake是否正常安装。

基础工作做完之后就可以下载安装mysql了,这里以mysql-5.5.36为例:

 wget http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.36.tar.gz
 tar xzvf mysql-5.5.36.tar.gz
 cd mysql-5.5.36
 cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DWITH_SSL=system -DWITH_ZLIB=yes -DENABLED_LOCAL_INFILE=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all
 make && make install

其中cmake的安装选项可以在MySQL Source-Configuration Options进行详细的查看,默认情况下MyISAM、MERGE、MEMORY和CSV引擎默认配置是按照的,所以上面只使用 WITH_INNOBASE_STORAGE_ENGINE=1 配置安装了InnoDB引擎。

如果CentOS版本低于6.x的话可能在安装的过程中出现下面的错误:

/root/downloads/mysql-5.5.32/vio/viossl.c: In function ‘ssl_do’:
/root/downloads/mysql-5.5.32/vio/viossl.c:175: 错误:‘SSL_OP_NO_COMPRESSION’ 未声明 (在此函数内第一次使用)
/root/downloads/mysql-5.5.32/vio/viossl.c:175: 错误:(即使在一个函数内多次出现,每个未声明的标识符在其
/root/downloads/mysql-5.5.32/vio/viossl.c:175: 错误:所在的函数内只报告一次。)
make[2]: *** [vio/CMakeFiles/vio.dir/viossl.c.o] 错误 1
make[1]: *** [vio/CMakeFiles/vio.dir/all] 错误 2
make: *** [all] 错误 2
这是mysql 5.5.32的一个bug,原因是无法在openssl-1.0.0及更低版本下编译,如果不需要ssl可以去掉WITH_SSL配置项,也可以升级openssl的版本,另外更方便的方法可以在cmake之前打一个补丁:

 wget http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.36.tar.gz
 tar xzvf mysql-5.5.36.tar.gz
 cd mysql-5.5.36
 wget -c "http://bugs.mysql.com/file.php?id=19941&bug_id=68999" -O mysql-openssl.patch
 patch -p1 < mysql-openssl.patch

然后再进行上面的cmake操作。

最后初始化数据库,先要确保是否创建了mysql用户,如果没有则使用下面命令进行创建

groupadd mysql
 useradd -s /sbin/nologin -M -g mysql mysql

设置目录权限并安装数据库

 cd /usr/local/mysql
 chown -R mysql .
 chgrp -R mysql .

 # 安装数据库,这里的脚本位置跟5.1.x有所不同
 

scripts/mysql_install_db --user=mysql
 chown -R root .
 chown -R mysql data

如果不是升级的话可以先使用mysql默认的配置文件,然后启动mysql:

 # 下面的文件在5.5.x放到了support-files目录下了
 cp support-files/my-medium.cnf /etc/my.cnf
 cp support-files/mysql.server /etc/init.d/mysql
 chmod +x /etc/init.d/mysql
 /etc/init.d/mysql start
 # 修改
root密码
 bin/mysqladmin -uroot password 123
 history -c
 /etc/init.d/mysql restart
 # 开机启动
 cat >> /etc/rc.local < /etc/init.d/mysql start
 > EOF

2. 修改mysql 5.1.x的配置文件

如果是升级的话使用原来的配置文件之前需要做一些修改,常用的变化的配置项如下:

default-character-set 修改成了 character-set-server,在linux安装的过程中已经指定了编码,所以不需要在配置文件中进行设置,但是windows下需要进行设置
innodb_file_io_threads已经弃用,修改成了 innodb_read_io_threads 和 innodb_write_io_threads
skip-locking 已经弃用,修改成了 skip-external-locking
log-long-format 已经弃用,修改成了 log-short-format
log_slow_queries 已经弃用,修改成了 slow-query-log,并且该参数设置为1启用慢查询日志,0为关闭,使用slow_query_log_file指定日志文件的名称,默认文件名为host_name-slow.log
lower_case_table_name 已经弃用,建议修改成 lower_case_table_names
另外可以把以前的built-in文件格式Antelope改为新的Barracuda格式:
innodb_file_format=Barracuda
linux下为了与windows保持一致,设置表名或字段名的大小写不敏感:
lower_case_table_names=1

3. 原有数据库修复及升级

为了保证数据的完整性,在将旧的数据导入到新数据库中之后(为了方便管理,可以将旧的mysql数据库合并到新的数据库中,然后重新mysql server使其生效),需要使用mysql_upgrade命令升级修复数据库,否则有可能会出现 "Cannot load from mysql.proc. The table is probably corrupted"错误。在mysql的bin目录下执行下面的命令(参数及其含义请见 mysql_upgrade — Check and Upgrade MySQL Tables):

mysql_upgrade -P3300 -uroot -p --force
确保mysql的密码输入正确,否则会出现 FATAL ERROR: Upgrade failed 的错误。

这里需要指出的是,如果在windows环境下执行上述命令会出现下面的错误:

Looking for 'mysql.exe' as: c:\mysql\bin\mysql.exe
FATAL ERROR: Can't execute 'c:\mysql\bin\mysql.exe'

如果执行mysql命令则会出现 “unknown variable 'character-set-server=utf8'” 的错误,这个是mysql的一个bug,可以首先将mysql的配置文件my.ini中的character-set-server全部修改为旧的default-character-set,然后再执行上述命令,执行命令的时候确保mysql服务是启动状态,等到升级完成之后再把配置文件中的default-character-set替换为新的character-set-server。

最后解决最开始说的问题的方法是将表中对应的字段编码由utf-8升级为utf8mb4:

 ALTER TABLE `table_name` CHANGE `colum_name` `colum_name` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL ;

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索数据库
, mysql
, 文件
, 编码
, 配置
错误
centos mysql 升级、centos mysql升级5.6、centos升级mysql版本、centos mysql 升级5.7、centos mysql5.1 升级,以便于您获取更多的相关知识。

时间: 2024-09-27 05:25:13

Centos下MySQL 5.1.x升级到MySQL 5.5.x教程的相关文章

CentOS 下安装 LEMP 服务(nginx、MariaDB/MySQL 和 php)

CentOS 下安装 LEMP 服务(nginx.MariaDB/MySQL 和 php) LEMP 组合包是一款日益流行的网站服务组合软件包,在许多生产环境中的核心网站服务上起着强有力的作用.正如其名称所暗示的, LEMP 包是由 Linux.nginx.MariaDB/MySQL 和 PHP 组成的.在传统的 LAMP 包中使用的 Apache HTTP 协议服务器性能低下而且难于大规模集群,相比来说 nginx 的高性能及轻量级等特性,正是其的替代方案. MariaDB 是一款社区支持驱动

Centos 6.3将Mysql 5.1.61升级为mysql 5.6.19遇到的问题及解决方式_Mysql

环境:mysql-5.1.61         操作系统:Cent-os6.3 目的:升级为mysql 5.6.19 首先,yum是不可行的.因为yum源没更新,我已经使用了163网易的源,但是还是不行.最新版仍然不是5.6.没办法,mysql分区是5.5之后的功能,要使用分区功能,就必须升级.. 去官网下载地址:http://dev.mysql.com/downloads/mysql/ 我是cent os,选择了Red Hat Enterprise Linux版本. 由于系统是i686的,所以

源码安装 mysql 5.5.20升级到mysql 5.6.25

环境: centos 6.5  64 mysql 5.5.20 升级 5.6.25 mysql 5.5.20安装参考: http://blog.csdn.net/u010098331/article/details/50730391 mysql 5.6.25安装参考:      http://blog.csdn.net/u010098331/article/details/50886619 CentOS系统下将MySQL升级至5.6.25 (源码安装方式) 摘要:CentOS系统下将MySQL升

CentOS下编译安装Apache、PHP、MySQL环境教程

编译Apache ./configure \ --prefix=/opt/webservice/httpd-2.2.27 \ --enable-so \ --enable-proxy \ --enable-cgi \ --enable-mime-magic \ --enable-expires \ --enable-info \ --enable-rewrite make make install 添加apache运行用户 useradd -s /sbin/nologin apache 针对/o

CentOS下将MySQL 5.1升级到MySQL 5.5的步骤_Mysql

mysql 5.5已经出来有一段时间,性能有明显提升,特别是对多核CPU的支持与TPS性能的提升.上周博主介绍了linux下编译安装mysql 5.5的步骤,安装不出意外基本没有问题.不过可能很多朋友和我一样一直用的是mysql 5.1,现在想把数据库升级成5.5了.博主根据实际操作,记录这次升级操作. mysql基础信息 1.安装目录 [root@vm-199~]# /usr/local/mysql 2.配置文件 [root@vm-199~]# /etc/my.cnf 3.数据目录 [root

centos下yum搭建安装linux+apache+mysql+php环境教程_Linux

我们利用linux系统中yum安装Apache+MySQL+PHP是非常的简单哦,只需要几步就可以完成,具体如下: 一.脚本YUM源安装: 1.yum install wget                                                     #安装下载工具wget 2.wget http://www.atomicorp.com/installers/atomic       #下载atomic yum源,配置CentOS 6.5第三方yum源 3. sh 

centos下yum搭建安装linux+apache+mysql+php环境的方法_Linux

一.脚本YUM源安装: 1.yum install wget #安装下载工具wget 2.wget http://www.atomicorp.com/installers/atomic #下载atomic yum源,配置CentOS 6.5第三方yum源 3. sh ./atomic #脚本执行 4. yum check-update #更新yum软件包 二.163yum源的安装 1.进入yum源配置目录 cd /etc/yum.repos.d 2.备份系统自带的yum源 mv CentOS-B

CentOS下apache+php+mysql编译安装

LAMP的安装是做开发人员比较常做的工作,RPM的安装相对比较容易一些,安装的rpm包以及依赖的包都可以在安装光盘里找到,当然也可以在线下载安装,比如mirrors.sohu.com mirrors.163.com里都有.centos下本生支持yum,所以也可以通过yum的方式来安装,安装起来都比较方便,会自动安装安装倚赖包,这里主要介绍下编译安装的方法. 一.获取相关开源程序 [适用CentOS操作系统]利用CentOS Linux系统自带的yum命令安装.升级所需的程序库(RedHat等其他

centos下加入mysql环境变量

centos下加入mysql环境变量 命令行的时候每次都要进入mysql的目录/usr/local/mysql/bin太麻烦了,为了能在任何一个位置直接进入,设置一下环境变量即可 vi /etc/profile 加入export PATH=$PATH:/usr/local/mysql/bin即可