溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL 5.1.73升級為MySQL 5.5.35詳解

發(fā)布時間:2020-08-11 21:02:29 來源:ITPUB博客 閱讀:141 作者:Rman2017 欄目:MySQL數據庫

一、前言

二、概述

三、安裝MySQL 5.1.73

四、升級為MySQL 5.5.35

五、總結

注,測試環(huán)境 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。下面我們繼續(xù)……

 

二、概述

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.創(chuàng)建數據目錄并授權

1

2

3

4

5

6

7

8

[root@node6 mysql-5.1.73]# mkdir -pv /data/mysql

mkdir: 已創(chuàng)建目錄 "/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基本就安裝完成,但我們還提做上些優(yōu)化工作。

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的頭文件至系統(tǒng)頭文件路徑/usr/include

1

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

12.輸出mysql的庫文件給系統(tǒng)庫查找路徑

1

2

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

[root@node6 mysql]# ldconfig

13.修改PATH環(huán)境變量,讓系統(tǒng)可以直接使用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就全部安裝完成了,下面我們來準備一下測試環(huán)境。

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的頭文件至系統(tǒng)頭文件路徑/usr/include

·      輸出mysql的庫文件給系統(tǒng)庫查找路徑

·      修改PATH環(huán)境變量,讓系統(tǒng)可以直接使用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.執(zhí)行更新程序并重啟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)

好了,到這里我們就升級成功了。

 

五、總結

根據上面的演示,我們發(fā)現MySQL數據庫升級并不是很難,主要得注意數據備份,防止數據和意外丟失。好了,這篇博客就到這里吧。

 

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

 

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI