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.htmlformoredetails.Thank you forchoosing MySQL!Remember to check the platform specific part of the reference manualforhints 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/mysqlmkdir: 已创建目录 "/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/总用量 20drwx------. 2 root root 16384 8月 17 18:42 lost+founddrwxr-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.cnfcp:是否覆盖"/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= utf8datadir = /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=mysqlInstalling 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.OKFilling 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.OKTo start mysqld at boot timeyou have to copysupport-files/mysql.server to the right place foryour systemPLEASE 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_installationwhichwill also give you the option of removing the testdatabases and anonymous user created by default. This isstrongly 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.plcd/usr/local/mysql//mysql-test; perl mysql-test-run.plPlease 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.OKFilling 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 startStarting 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/mysqlWelcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection idis 1Server version: 5.1.73-log Source distributionCopyright (c) 2000, 2013, Oracle and/orits affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/oritsaffiliates. Other names may be trademarks of their respectiveowners.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.configMANPATH /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.shexportPATH=$PATH:/usr/local/mysql/bin/[root@node6 mysql]# source /etc/profile[root@node6 mysql]# mysqlWelcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection idis 2Server version: 5.1.73-log Source distributionCopyright (c) 2000, 2013, Oracle and/orits affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/oritsaffiliates. Other names may be trademarks of their respectiveowners.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 changedmysql> 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: 0mysql> 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 distributionCopyright (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数据库升级并不是很难,主要得注意数据备份,防止数据和意外丢失。好了,这篇博客就到这里吧。
最后,希望大家有所收获吧^_^……
本文出自 “Share your knowledge …” 博客,请务必保留此出处http://freeloda.blog.51cto.com/2033581/1348689
MySQL 5.1.73升级为MySQL 5.5.35详解的更多相关文章
- mysql用户授权、数据库权限管理、sql语法详解
mysql用户授权.数据库权限管理.sql语法详解 —— NiceCui 某个数据库所有的权限 ALL 后面+ PRIVILEGES SQL 某个数据库 特定的权限SQL mysql 授权语法 SQL ...
- MySQL单列索引和组合索引(联合索引)的区别详解
发现index merge局限性,优化器会自动判断是否使用 index merge 优化技术,查询还是需要组合索引[推荐阅读:对mysql使用索引的误解] MySQL单列索引和组合索引(联合索引)的区 ...
- 【mysql的设计与优化专题(5)】慢查询详解
查询mysql的操作信息 show status -- 显示全部mysql操作信息 show status like "com_insert%"; -- 获得mysql的插入次数; ...
- MySQL日志文件之错误日志和慢查询日志详解
今天天气又开始变得很热了,虽然很热很浮躁,但是不能不学习,我在北京向各位问好.今天给大家分享一点关于数据库日志方面的东西,因为日志不仅讨厌而且还很重要,在开发中时常免不了与它的亲密接触,就在前几天公司 ...
- MySQL(十五)之数据备份中mysqldump详解
前言 其实前面一篇数据备份已经是非常的详细了,这里我想单独的讲解一下mysqldump,相信很多程序员都是用过这个命令的! 一.MySQL数据库的备份与还原 1.1.MySQL数据库备份 1)语法 m ...
- SQL优化 MySQL版 -分析explain SQL执行计划与Type级别详解
type索引类型.类型 作者 : Stanley 罗昊 [转载请注明出处和署名,谢谢!] 注:看此文章前,需要有一定的Mysql基础或观看上一篇文章,该文章传送门: https://www.cnblo ...
- mysql中文、英文别名排序问题,order by 关键字详解
order by 关键字详解: SELECT intcode AS 商品编码, product_title AS 名称, retailprice AS 零售价, purchaseprice AS ...
- MySQL入门篇(三)之my.cnf配置文件详解【转】
转自:https://www.cnblogs.com/panwenbin-logs/p/8360703.html #*** client options 相关选项 ***# #以下选项会被MySQL客 ...
- mysql中修改表字段名/字段长度/字段类型详解
在mysql中我们对数据表字段的修改命令只要使用alter就可以了,下面我来给大家详细介绍mysql中修改表字段名/字段长度/字段类型等等一些方法介绍,有需要了解的朋友可参考. 先来看看常用的方法 M ...
随机推荐
- for循环进阶
[引例] 输出一行10个“*” #include<cstdio> int main(){ printf("**********\n"); ; } 思考: (1)输出一行 ...
- poj2250 最长上升子序列 + 输出
//Accepted 208 KB 0 ms //最长公共上升子序列+输出 //dp //输出时用的递归输出,注意条件判断 #include <cstdio> #include <c ...
- js面向对象(构造函数与继承)
深入解读JavaScript面向对象编程实践 Mar 9, 2016 面向对象编程是用抽象方式创建基于现实世界模型的一种编程模式,主要包括模块化.多态.和封装几种技术. 对JavaScript而言,其 ...
- __set()与__get() 魔术方法
在面向对象编程的过程中,对于类当中的各个成员变量,都有不同的访问属性,比如公有的(public)属性,在类内部和类外部都可直接调用:而私有的(private)和受保护的(protected),在类外不 ...
- PHP中的文件下载
文件下载:用<a href="链接"></a>这种是下载,但对于浏览器能解释的文件类型此下载非彼下载.向服务器请求的时候:1.协议和版本2.头信息3.请求的 ...
- html网页标题
HTML代码 <html> <head> <!--<title>定义网页标题,显示在浏览器的标题--> <title>网页标题</ti ...
- 小P的图论课 (模拟退火)
uses math; ; INF=; var n,m,i,x,y,sum,ans,delta:longint; map:..maxn,..maxn] of longint; flag:..maxn] ...
- dedecms织梦
dedecms的安装,其修改连接数据库文件是:common.inc.php
- LeetCode Combination Sum III (DFS)
题意: 在1-9这9个数字中选择k个出来,若他们的和为n,则加入答案序列,注意升序. 思路: 用DFS的方式,每次决定一个数字,共决策k次.假设上个决策是第i位为5,那么i+1位的范围就是6-9. c ...
- 完美解决IE6不支持position:fixed的bug
示例代码: <!DOCTYPE html><html><head><meta http-equiv="Content-Type" cont ...