MySQL 5.1.73升级为MySQL 5.5.35详解

简介:
+关注继续查看

一、前言

二、概述

三、安装MySQL 5.1.73

四、升级为MySQL 5.5.35

五、总结

注,测试环境 CentOS 6.4 x86_64,MySQL 版本(5.1.73、5.5.35)目前最新版。下载地址:http://dev.mysql.com/downloads/mysql/5.1.html#downloads

 

 

一、前言

前几篇博客中我们讲解了MySQL5.1与MySQL5.5之间的性能差异,MySQL5.5的性能有明显的提升,特别是对多核CPU的支持与TPS性能的提升。在这篇博客中我们将主要讲解MySQL 5.1.73升级为MySQL 5.5.35。下面我们继续……

 

二、概述

1.安装yum源

1
2
[root@node6 src]# wget http://mirrors.hustunique.com/epel/6/x86_64/epel-release-6-8.noarch.rpm
[root@node6 src]# rpm -ivh epel-release-6-8.noarch.rpm

2.同步时间

1
2
3
[root@node6 src]# yum install -y ntp
[root@node6 src]# ntpdate 202.120.2.101
[root@node6 src]# hwclock –w

3.安装mysql 5.1依赖包

1
[root@node6 mysql-5.1.73]# yum -y install ncurses ncurses-devel

4.安装mysql5.5依赖包

1
[root@node6 ~]# yum install -y autoconf* automake* zlib* libxml* ncurses-devel* libgcrypt* libtool* openssl*

5.安装cmake

1
[root@node6 ~]# yum install -y cmake

 

三、安装MySQL 5.1.73

1.编译并安装mysql5.1

1
2
3
[root@node6 mysql-5.1.73]# tar xf mysql-5.1.73.tar.gz
[root@node6 mysql-5.1.73]# cd mysql-5.1.73
[root@node6 mysql-5.1.73]# ./configure --prefix=/usr/local/mysql --localstatedir=/data/mysql --enable-assembler --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static --with-pthread --enable-static --with-big-tables --without-ndb-debug --with-charset=utf8 --with-extra-charsets=all --without-debug --enable-thread-safe-client --enable-local-infile --with-plugins=max

上面配置内容省略……

1
2
3
4
5
6
7
8
This version of MySQL Cluster is no longer maintained.
Please use the separate sources provided forMySQL Cluster instead.
See http://dev.mysql.com/doc/refman/5.1/en/mysql-cluster.html
formoredetails.
Thank you forchoosing MySQL!
Remember to check the platform specific part of the reference manual
forhints about installing MySQL on your platform.
Also have a lookat the files inthe Docs directory.

到这里我们编译配置就完成了,下面我们编译并安装。

1
[root@node6 mysql-5.1.73]# make && make install

注,编译与安装时间比较长请大家耐心等待,当然会看各位博友机器的配置,相对来说配置越好,相对的编译与安装时间相对就少。

2.创建数据目录并授权

1
2
3
4
5
6
7
8
[root@node6 mysql-5.1.73]# mkdir -pv /data/mysql
mkdir: 已创建目录 "/data/mysql"
[root@node6 mysql-5.1.73]# useradd mysql
[root@node6 mysql-5.1.73]# chown mysql.mysql /data/mysql/
[root@node6 mysql-5.1.73]# ll /data/
总用量 20
drwx------. 2 root  root  16384 8月  17 18:42 lost+found
drwxr-xr-x. 2 mysql mysql  4096 1月   4 16:10 mysql

3.为mysql提供配置文件

1
2
[root@node6 mysql-5.1.73]# cp support-files/my-huge.cnf /etc/my.cnf
cp:是否覆盖"/etc/my.cnf"? y

4.简单修改一下配置文件

1
2
3
4
5
6
[root@node6 mysql-5.1.73]# vim /etc/my.cnf
[client]
default-character-set= utf8
[mysqld]
default-character-set= utf8
datadir        = /data/mysql

5.提供启动脚本

1
2
3
4
[root@node6 mysql-5.1.73]# cp support-files/mysql.server /etc/init.d/mysqld
[root@node6 mysql-5.1.73]# chmod +x /etc/init.d/mysqld
[root@node6 ~]# chkconfig mysqld --add
[root@node6 ~]# chkconfig mysqld on

6.初始化mysql

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[root@node6 mysql-5.1.73]# /usr/local/mysql/bin/mysql_install_db --basedir=/usr/local/mysql/ --datadir=/data/mysql/ --user=mysql
Installing MySQL system tables...
140104 16:18:43 [Warning] '--default-character-set'is deprecated and will be removed ina future release. Please use '--character-set-server'instead.
140104 16:18:43 [Warning] '--skip-locking'is deprecated and will be removed ina future release. Please use '--skip-external-locking'instead.
OK
Filling help tables...
140104 16:18:43 [Warning] '--default-character-set'is deprecated and will be removed ina future release. Please use '--character-set-server'instead.
140104 16:18:43 [Warning] '--skip-locking'is deprecated and will be removed ina future release. Please use '--skip-external-locking'instead.
OK
To start mysqld at boot timeyou have to copy
support-files/mysql.server to the right place foryour system
PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To doso, start the server, thenissue the following commands:
/usr/local/mysql//bin/mysqladmin-u root password 'new-password'
/usr/local/mysql//bin/mysqladmin-u root -h node6.test.com password 'new-password'
Alternatively you can run:
/usr/local/mysql//bin/mysql_secure_installation
whichwill also give you the option of removing the test
databases and anonymous user created by default.  This is
strongly recommended forproduction servers.
See the manual formoreinstructions.
You can start the MySQL daemon with:
cd/usr/local/mysql//usr/local/mysql//bin/mysqld_safe&
You can testthe MySQL daemon with mysql-test-run.pl
cd/usr/local/mysql//mysql-test; perl mysql-test-run.pl
Please report any problems with the /usr/local/mysql//scripts/mysqlbugscript!

注,从上面的内容中我们看到了几个警告,我们查看一下。

1
2
3
4
5
6
7
140104 16:18:43 [Warning] '--default-character-set'is deprecated and will be removed ina future release. Please use '--character-set-server'instead.
140104 16:18:43 [Warning] '--skip-locking'is deprecated and will be removed ina future release. Please use '--skip-external-locking'instead.
OK
Filling help tables...
140104 16:18:43 [Warning] '--default-character-set'is deprecated and will be removed ina future release. Please use '--character-set-server'instead.
140104 16:18:43 [Warning] '--skip-locking'is deprecated and will be removed ina future release. Please use '--skip-external-locking'instead.
从上面的警告可以看到,--default-character-set、--skip-locking选项已经过时,建议使用--character-set-server、--skip-external-locking。

7.查看一下初始化目录

1
2
[root@node6 data]# ls /data/mysql/
mysql  mysql-bin.000001  mysql-bin.000002  mysql-bin.index  test

8.启动一下mysql

1
2
[root@node6 ~]# service mysqld start
Starting MySQL.. SUCCESS!

9.测试访问一下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[root@node6 ~]# /usr/local/mysql/bin/mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection idis 1
Server version: 5.1.73-log Source distribution
Copyright (c) 2000, 2013, Oracle and/orits affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/orits
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;'or '\h'forhelp. Type '\c'to clearthe current input statement.
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
test|
+--------------------+
3 rows inset(0.00 sec)
mysql>

好了,到这里我们的mysql基本就安装完成,但我们还提做上些优化工作。

10.输出mysql的man手册至man命令的查找路径

1
2
3
[root@node6 ~]# yum install -y man
[root@node6 ~]# vim /etc/man.config
MANPATH  /usr/local/mysql/man

11.输出mysql的头文件至系统头文件路径/usr/include

1
[root@node6 mysql]# ln -sv /usr/local/mysql/include  /usr/include/mysql

12.输出mysql的库文件给系统库查找路径

1
2
[root@node6 mysql]# echo '/usr/local/mysql/lib'> /etc/ld.so.conf.d/mysql.conf
[root@node6 mysql]# ldconfig

13.修改PATH环境变量,让系统可以直接使用mysql的相关命令

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@node6 mysql]# vim /etc/profile.d/mysql.sh
exportPATH=$PATH:/usr/local/mysql/bin/
[root@node6 mysql]# source /etc/profile
[root@node6 mysql]# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection idis 2
Server version: 5.1.73-log Source distribution
Copyright (c) 2000, 2013, Oracle and/orits affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/orits
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;'or '\h'forhelp. Type '\c'to clearthe current input statement.
mysql>

好了,到这里我们的mysql就全部安装完成了,下面我们来准备一下测试环境。

14.新建测试数据库与测试表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
mysql> CREATE DATABASE mydb;
Query OK, 1 row affected (0.33 sec)
mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mydb               |
| mysql              |
test|
+--------------------+
4 rows inset(0.00 sec)
mysql> use mydb;
Database changed
mysql> show create database mydb;
+----------+---------------------------------------------------------------+
| Database | Create Database                                               |
+----------+---------------------------------------------------------------+
| mydb     | CREATE DATABASE `mydb` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+---------------------------------------------------------------+
1 row inset(0.00 sec)
mysql> show tables;
Empty set(0.01 sec)
mysql> CREATE TABLE `t1` (idint(11) DEFAULT NULL) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;
Query OK, 0 rows affected (0.03 sec)
mysql> show create table t1;
+-------+--------------------------------------------------------------------------------------+
| Table | Create Table                                                                         |
+-------+--------------------------------------------------------------------------------------+
| t1    | CREATE TABLE `t1` (
`id` int(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 |
+-------+--------------------------------------------------------------------------------------+
1 row inset(0.00 sec)
mysql> show tables;
+----------------+
| Tables_in_mydb |
+----------------+
| t1             |
+----------------+
1 row inset(0.00 sec)
mysql> desc t1;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
id| int(11) | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+
1 row inset(0.33 sec)

15.增加数据

(1).先简单插入10行数据

1
mysql>  insert into t1  value (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);

(2).查看一下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
mysql> select* from t1;
+------+
id|
+------+
|    1 |
|    2 |
|    3 |
|    4 |
|    5 |
|    6 |
|    7 |
|    8 |
|    9 |
|   10 |
+------+
10 rows inset(0.00 sec)

(3).插入多行数据方法

1
2
3
4
5
6
7
8
9
10
mysql> insert into t1 select* from t1;
Query OK, 10 rows affected (0.00 sec)
Records: 10  Duplicates: 0  Warnings: 0
mysql> selectcount(*) from t1;
+----------+
| count(*) |
+----------+
|       20 |
+----------+
1 row inset(0.33 sec)

 

四、升级为MySQL 5.5.35

1.升级前准备(查看MySQL 5.1相关参数,具体如下)

(1).安装目录

1
[root@node6 ~]# /usr/local/mysql

(2).配置文件

1
[root@node6 ~]# /etc/my.cnf

(3).数据目录

1
[root@node6 ~]# /data/mysql

(4).启动脚本

1
[root@node6 ~]# /etc/init.d/mysqld

(5).其它参数

  • 输出mysql的man手册至man命令的查找路径

  • 输出mysql的头文件至系统头文件路径/usr/include

  • 输出mysql的库文件给系统库查找路径

  • 修改PATH环境变量,让系统可以直接使用mysql的相关命令

2.升级方式

  • 直接将MySQL5.5安装目录覆盖正在运行的Mysql目录(我们这里演示使用的方式)

  • 将MySQL5.5安装到其它目录中,如/usr/local/mysql5

3.备份所有数据库

1
[root@node6 ~]# mysqldump -uroot -p123456 test -l -F '/tmp/test.sql'
  • -l 锁定

  • -F 即flush logs,可以重新生成新的日志文件,当然包括log-bin日志

4.备份安装目录

1
[root@node6 ~]# tar czvf mysql_5.1.73_full.tar.gz /usr/local/mysql

5.备份数据目录

1
[root@node6 ~]# tar czvf mysql_5.1.73_data_full.tar.gz /data/mysql

6.备份配置文件

1
[root@node6 ~]# cp /etc/my.cnf ./

7.关闭mysql

1
2
[root@node6 ~]# service mysqld stop 
Shutting down MySQL.. SUCCESS!

好了,到这里我们准备工作就完成了。下面我们来升级到MySQL 5.5.35……

8.升级mysql 5.5.35

1
2
3
4
[root@node6 mysql]# tar xf mysql-5.5.35.tar.gz
[root@node6 mysql]# cd mysql-5.5.35
[root@node6 mysql-5.5.35]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DSYSCONFDIR=/etc -DMYSQL_DATADIR=/data/mysql -DMYSQL_TCP_PORT=3306 -DMYSQL_UNIX_ADDR=/tmp/mysqld.sock -DMYSQL_USER=mysql -DEXTRA_CHARSETS=all -DWITH_READLINE=1 -DWITH_SSL=system -DWITH_EMBEDDED_SERVER=1 -DENABLED_LOCAL_INFILE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1
[root@node6 mysql-5.5.35]# make && make install

9.删除原有的mysql5.1的配置文件

1
[root@node6 mysql-5.5.35]# rm -rf /etc/my.cnf

10.提供新的配置文件

1
[root@node6 mysql-5.5.35]# cp support-files/my-huge.cnf /etc/my.cnf

11.修改一下配置文件

1
2
[mysqld] 
datadir         = /data/mysql

注,只增加一行指定数据数据/data/mysql。

12.尝试重新启动一下

1
2
3
[root@node6 mysql-5.5.35]# service mysqld restart 
Shutting down MySQL. SUCCESS!   
Starting MySQL.. SUCCESS!

13.执行更新程序并重启mysql

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
[root@node6 mysql-5.5.35]# /usr/local/mysql/bin/mysql_upgrade  
Looking for 'mysql' as: /usr/local/mysql/bin/mysql  
Looking for 'mysqlcheck' as: /usr/local/mysql/bin/mysqlcheck  
Running 'mysqlcheck' with connection arguments: '--port=3306' '--socket=/tmp/mysqld.sock'   
Running 'mysqlcheck' with connection arguments: '--port=3306' '--socket=/tmp/mysqld.sock'   
mydb.t1                                            OK  
mydb.t2                                            OK  
mysql.columns_priv                                 OK  
mysql.db                                           OK  
mysql.event                                        OK  
mysql.func                                         OK  
mysql.general_log                                  OK  
mysql.help_category                                OK  
mysql.help_keyword                                 OK  
mysql.help_relation                                OK  
mysql.help_topic                                   OK  
mysql.host                                         OK  
mysql.ndb_binlog_index                             OK  
mysql.plugin                                       OK  
mysql.proc                                         OK  
mysql.procs_priv                                   OK  
mysql.proxies_priv                                 OK  
mysql.servers                                      OK  
mysql.slow_log                                     OK  
mysql.tables_priv                                  OK  
mysql.time_zone                                    OK  
mysql.time_zone_leap_second                        OK  
mysql.time_zone_name                               OK  
mysql.time_zone_transition                         OK  
mysql.time_zone_transition_type                    OK  
mysql.user                                         OK  
Running 'mysql_fix_privilege_tables'...  
OK

14.查看生成的更新文件

1
2
3
4
5
6
7
8
[root@node6 ~]# cd /data/mysql/ 
[root@node6 mysql]# ls  
ibdata1      mysql             mysql-bin.000004  mysql-bin.000008    node6.test.com.err  
ib_logfile0  mysql-bin.000001  mysql-bin.000005  mysql-bin.000009    node6.test.com.pid  
ib_logfile1  mysql-bin.000002  mysql-bin.000006  mysql-bin.index     performance_schema  
mydb         mysql-bin.000003  mysql-bin.000007  mysql_upgrade_info  test  
[root@node6 mysql]# cat mysql_upgrade_info   
5.5.35

15.尝试登录一下并查看一下版本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@node6 mysql]# mysql 
Welcome to the MySQL monitor.  Commands end with ; or \g.  
Your MySQL connection id is 9  
Server version: 5.5.35-log Source distribution
Copyright (c) 2000, 2013, 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.
mysql> select version(); 
+------------+  
| version()  |  
+------------+  
| 5.5.35-log |  
+------------+  
1 row in set (0.00 sec)

16.查看一下库和表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
mysql> show databases; 
+--------------------+  
| Database           |  
+--------------------+  
| information_schema |  
| mydb               |  
| mysql              |  
| performance_schema |  
test               |  
+--------------------+  
5 rows in set (0.00 sec)
mysql> use mydb; 
Database changed  
mysql> show tables;  
+----------------+  
| Tables_in_mydb |  
+----------------+  
| t1             |  
| t2             |  
+----------------+  
2 rows in set (0.00 sec)
mysql> select count(*) from t1; 
+----------+  
| count(*) |  
+----------+  
| 20971520 |  
+----------+  
1 row in set (0.00 sec)

好了,到这里我们就升级成功了。

 

五、总结

根据上面的演示,我们发现MySQL数据库升级并不是很难,主要得注意数据备份,防止数据和意外丢失。好了,这篇博客就到这里吧。

 

最后,希望大家有所收获吧^_^……



本文转自 张冲andy 博客园博客,原文链接: http://www.cnblogs.com/andy6/p/6171948.html  ,如需转载请自行联系原作者


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
7天前
|
关系型数据库 MySQL 数据库
【Navicat 连接MySQL时出现错误1251:客户端不支持服务器请求的身份验证协议;请考虑升级MySQL客户端】
【Navicat 连接MySQL时出现错误1251:客户端不支持服务器请求的身份验证协议;请考虑升级MySQL客户端】
|
3月前
|
存储 SQL 分布式计算
AnalyticDB MySQL升级为湖仓一体架构:从湖到仓,打造云原生一站式数据分析平台
AnalyticDB MySQL湖仓版同时支持低成本离线处理和高性能在线分析,适合ETL/BI报表/交互式查询/APP应用等多场景,并可无缝替换CDH/TDH/Databricks/Presto/Spark/Hive等
|
4月前
|
SQL JSON 前端开发
【JavaEE】表白墙再升级(MySQL实现持久化)
在最初的表白墙版本中,页面已刷新,“甜言蜜语”就会丢失:
39 0
|
4月前
|
运维 关系型数据库 MySQL
WDCP MYSQL 5.5.44 升级故障处理一例
WDCP MYSQL 5.5.44 升级故障处理一例
|
5月前
|
关系型数据库 MySQL 索引
MySQL - 无索引行锁升级为表锁
MySQL - 无索引行锁升级为表锁
34 0
|
8月前
|
存储 SQL JSON
PolarDB MySQL 5.6/MySQL 5.6升级PolarDB MySQL 8.0最佳实践
升级概述为什么选择升级到PolarDB MySQL 8.0?PolarDB MySQL 8.0.1 (基于官方MySQL 8.0.13内核版本)发布于2019-12-03和PolarDB MySQL 8.0.2(基于官方MySQL 8.0.18内核版本)发布于2020-07-22*,增强了诸多卓越的架构增强和内核能力,为业务提供更灵活的技术解决方案和强大收益的性能提升,主要包括:Serverles
195 0
|
8月前
|
关系型数据库 MySQL Linux
MySQL集群升级从5.5版本升级到10.*以上版本(CentOS7.5 MariaDB集群升级)
MySQL集群升级从5.5版本升级到10.*以上版本(CentOS7.5 MariaDB集群升级)
193 0
MySQL集群升级从5.5版本升级到10.*以上版本(CentOS7.5 MariaDB集群升级)
|
9月前
|
存储 SQL JSON
PolarDB MySQL 5.7/RDS 5.7升级到PolarDB MySQL 8.0最佳实践
升级概述PolarDB MySQL 5.7/RDS 5.7 向 8.0 升级过程中,经常遇到的问题主要是性能问题、语法兼容性问题,以及周边组件是否的支持,查询的性能问题一般是由于优化器升级导致执 行计划有变,此类问题需要对性能低下的语句进行针对性的性能优化,但性能问题基本不会引发业务报错以及代码的改写问题,此类问题不在本文讨论范围之内。本文主要讨论真实的兼容性问题,此类问题需要在数据库升级过程中,
487 0
|
11月前
|
存储 运维 容灾
PolarDB MySQL数据库升级策略
背景数据库的可用性对于客户是至关重要的,根据CAP理论,分布式和一致性、可用性只能二选一,所以在云原生数据库(依赖多副本)或者分布式TP系统中,大多都选择牺牲一些一致性来保证分布式和可用性,足以看出可用性的地位是及其重要的,所以任何数据库内核都会针对可用性做很多特性改进,比如热备、双活多活、异地灾备、增强一致性协议和主从复制能力、甚至增强备份恢复能力等等。我们了解,影响可用性的无外乎几种场景,如严
195 0
PolarDB MySQL数据库升级策略
|
Java 关系型数据库 MySQL
JDBC 驱动升级到 Version 8.0.28 连接 MySQL 的踩坑记录
JDBC 驱动升级到 Version 8.0.28 连接 MySQL 的踩坑记录
578 0
JDBC 驱动升级到 Version 8.0.28 连接 MySQL 的踩坑记录
推荐文章
更多