MySQL Linux壓縮版安裝方法(上)

realkid4發表於2012-07-03

 

在諸多開源資料庫中,MySQL是目前應用行業,特別是網際網路行業發展最好的一個。藉助靈活的架構特點和適應不同應用系統場景的Storage EngineMySQL在很多方面已經有不次於傳統商用資料庫的表現。

 

本篇作為MySQL的開篇,只是從最簡單的安裝著手。所謂萬事開頭難,希望筆者的學習研究過程能夠順利。

 

1、說說MySQL的版本

 

首先,我們簡單說說MySQL的版本。在Oracle收購開源資料庫MySQL之後,對MySQL進行了重新部署。目前我們看到的MySQL系統元件和版本,就是Oracle對其進行整合之後的版本。

 

從發行版本上,目前MySQL最新版本是5.5,每隔一個時期就會有新的子版本發行。根據收費和服務支援情況,MySQL分為社群版Community和企業版Enterprise。社群版是提供完全免費的應用授權,並且完全公佈原始碼。而企業版是收費版本,要向Oracle繳納許可授權費用。所以,目前真正意義的開源資料庫,也只是以Community作為一個代表。

 

Community中,根據不同人群使用的要求分為二進位制版、壓縮版和原始碼版。

 

ü  二進位制釋出版(Binary Distribution)是我們經常使用,也是最容易使用的一個版本。MySQL針對不同的平臺,提供了misrpm等安裝檔案格式;

ü  壓縮版(Zip)也可以稱為“綠色版”。提供的壓縮包中,包括了安裝後所有的目錄結構和配置檔案。作為最簡單的應用,只要解壓到目錄上,並且進行一些配置連線就可以了。壓縮版最大的好處是獨立於作業系統,對原有的結構沒有影響;

ü  原始碼版(Source)是針對一些個性化作業系統或者個性化功能需求而言的。需要使用者在指定的平臺作業系統上進行編譯、連結,形成可執行版本;

 

本篇就簡單介紹一下Linux環境下壓縮版配置的一些問題和解決方法。

 

2、基本配置

 

首先,我們準備好Linux環境,我們使用CentOS 5.8進行試驗安裝。第一步,我們需要將下載好的MySQL壓縮版透過FTP/SFTP上傳到Linux伺服器上。

 

 

--建立目錄

[root@bspdev ~]# cd /

[root@bspdev /]# mkdir mysql

[root@bspdev /]# ls -l | grep mysql

drwxr-xr-x   2 root root  4096 Jul  1 03:56 mysql

 

 

使用FTP/SFTP軟體,將壓縮包(mysql-5.5.25-linux2.6-i686.tar.gz)上傳到指定目錄,並且解壓。

 

 

[root@bspdev /]# cd mysql

[root@bspdev mysql]# ls -l

total 175376

-rw-r--r-- 1 root root 179403866 Jul  1 03:57 mysql-5.5.25-linux2.6-i686.tar.gz

 

[root@bspdev mysql]# tar -vxf mysql-5.5.25-linux2.6-i686.tar.gz

mysql-5.5.25-linux2.6-i686/include/my_config.h

mysql-5.5.25-linux2.6-i686/include/keycache.h

mysql-5.5.25-linux2.6-i686/include/m_string.h

mysql-5.5.25-linux2.6-i686/include/mysql_version.h

mysql-5.5.25-linux2.6-i686/include/my_alloc.h

(篇幅原因,省略……

 

[root@bspdev mysql]# ls -l

total 4

drwxr-xr-x 13 root root 4096 Jul  1 04:02 mysql-5.5.25-linux2.6-i686

 

 

開啟目錄,可以發現壓縮版解壓之後,所有的配置檔案和執行程式目錄。

 

 

[root@bspdev mysql-5.5.25-linux2.6-i686]# ls -l

total 76

drwxr-xr-x  2 root root   4096 Jul  1 04:01 bin

-rw-r--r--  1 7161 wheel 17987 May 15 15:46 COPYING

drwxr-xr-x  4 root root   4096 Jul  1 04:02 data

drwxr-xr-x  2 root root   4096 Jul  1 04:01 docs

drwxr-xr-x  3 root root   4096 Jul  1 04:00 include

-rw-r--r--  1 7161 wheel  7604 May 15 15:46 INSTALL-BINARY

drwxr-xr-x  3 root root   4096 Jul  1 04:02 lib

drwxr-xr-x  4 root root   4096 Jul  1 04:00 man

drwxr-xr-x 10 root root   4096 Jul  1 04:02 mysql-test

-rw-r--r--  1 7161 wheel  2552 May 15 15:46 README

drwxr-xr-x  2 root root   4096 Jul  1 04:01 scripts

drwxr-xr-x 27 root root   4096 Jul  1 04:02 share

drwxr-xr-x  4 root root   4096 Jul  1 04:01 sql-bench

drwxr-xr-x  2 root root   4096 Jul  1 04:01 support-files

 

[root@bspdev mysql-5.5.25-linux2.6-i686]# pwd

/mysql/mysql-5.5.25-linux2.6-i686

 

 

注意,無論是Windows版還是Linux版,MySQL在執行啟動的時候,都需要一個基礎配置檔案。不同的作業系統擴充名稱不一樣,大都是my.ini/my.cnf等等。

 

在目錄的support-files中,我們可以找到MySQL提供了一套預設模板,用於配置不同規模的MySQL資料庫。

 

 

[root@bspdev mysql-5.5.25-linux2.6-i686]# cd support-files/

[root@bspdev support-files]# ls -l

total 96

-rwxr-xr-x 1 7161 wheel  1153 May 15 16:46 binary-configure

-rwxr-xr-x 1 7161 wheel  4528 May 15 16:46 config.huge.ini

-rwxr-xr-x 1 7161 wheel  2382 May 15 16:46 config.medium.ini

-rwxr-xr-x 1 7161 wheel  1626 May 15 16:46 config.small.ini

-rw-r--r-- 1 7161 wheel   773 May 15 15:46 magic

-rw-r--r-- 1 7161 wheel  4691 May 15 16:46 my-huge.cnf

-rw-r--r-- 1 7161 wheel 19759 May 15 16:46 my-innodb-heavy-4G.cnf

-rw-r--r-- 1 7161 wheel  4665 May 15 16:46 my-large.cnf

-rw-r--r-- 1 7161 wheel  4676 May 15 16:46 my-medium.cnf

-rw-r--r-- 1 7161 wheel  2840 May 15 16:46 my-small.cnf

-rwxr-xr-x 1 7161 wheel  1061 May 15 16:46 mysqld_multi.server

-rwxr-xr-x 1 7161 wheel   839 May 15 16:46 mysql-log-rotate

-rwxr-xr-x 1 7161 wheel 10650 May 15 16:46 mysql.server

-rwxr-xr-x 1 7161 wheel  1326 May 15 16:46 ndb-config-2-node.ini

 

--複製模板到指定目錄指定名稱。

[root@bspdev support-files]# cp my-huge.cnf /etc/my.cnf

 

 

標紅的幾個檔案,就是針對不同的系統規模,主要是伺服器記憶體大小來預定義的配置檔案。My-huge.cnf一般是應對伺服器記憶體在1-2G,而且是專門作為MySQL伺服器使用的場景。這點對於目前的生產系統,不是什麼大問題。所以,我們使用這個版作為基礎模板,複製為/etc/my.cnf

 

MySQL配置檔案的目錄,不同的作業系統有不同的預設選擇。對Windows而言,預設是選擇%WINDIR%作為優先搜尋目錄,找尋檔名稱為my.ini的檔案。當然,我們在mysqld的啟動引數defaults-file中,也可以指定該檔案的目錄名稱。

 

Linux環境下,我們就將其放在/etc/my.cnf就可以了。

 

3、使用者和相關配置

 

Oracle配置時,我們建立了專門的OS使用者來安裝Oracle。對MySQL,我們也選擇相對應的策略。注意:root使用者一般不會充當專門的應用系統使用者。

 

 

[root@bspdev support-files]# groupadd mysql  group建立

[root@bspdev support-files]# useradd -g mysql mysql  使用者建立

[root@bspdev support-files]# id mysql

uid=500(mysql) gid=500(mysql) groups=500(mysql)

[root@bspdev support-files]# passwd mysql  --密碼修改

Changing password for user mysql.

New UNIX password:

BAD PASSWORD: it is too short

Retype new UNIX password:

passwd: all authentication tokens updated successfully.

[root@bspdev support-files]# su – mysql

 

 

此外,我們要保證mysql能夠訪問到MySQL系統bin目錄下的程式,要修改環境變數PATH

 

 

[mysql@bspdev ~]$ vi .bash_profile

 

(篇幅原因,省略部分……

PATH=$PATH:$HOME/bin

PATH=$PATH:/mysql/mysql-5.5.25-linux2.6-i686/bin

export PATH

~

~

 

[mysql@bspdev ~]$ su - mysql

Password:

[mysql@bspdev ~]$ env | grep PATH

PATH=/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/mysql/bin:/mysql/mysql-5.5.25-linux2.6-i686/bin

 

 

最後,將相應目錄的許可權賦予mysql使用者。

 

 

[mysql@bspdev ~]$ su - root

Password:

[root@bspdev ~]# cd /

[root@bspdev /]# chown -R mysql:mysql mysql/

[root@bspdev /]# ls -l | grep mysql

drwxr-xr-x   3 mysql mysql  4096 Jul  1 04:03 mysql

 

[root@bspdev etc]# pwd

/etc

[root@bspdev etc]# chown mysql:mysql my.cnf

[root@bspdev etc]# ls -l | grep my.cnf

-rw-r--r--  1 mysql mysql   4691 Jul  1 04:05 my.cnf

 

 

4、配置檔案修改

 

下面,需要對my.cnf做出簡單的修改,使其可以作為啟動檔案。我們必須新增上MySQL程式檔案和資料檔案的目錄,這樣才能夠讓MySQLd伺服器在啟動後可以找到相應的路徑。

 

 

[root@bspdev etc]# su - mysql

[mysql@bspdev ~]$ vi /etc/my.cnf

 

# Example MySQL config file for very large systems.

#

# This is for a large system with memory of 1G-2G where the system runs mainly

# MySQL.

#

# MySQL programs look for option files in a set of

# locations which depend on the deployment platform.

 

 

# The MySQL server

[mysqld]

basedir=/mysql/mysql-5.5.25-linux2.6-i686

datadir=/mysql/mysql-5.5.25-linux2.6-i686/data

 

 

注意,basedirdatadir是通常需要設定的內容。如果沒有設定,MySQL會根據作業系統的不同,在預設目錄上進行尋找,引起錯誤。

 

 

5、初始化資料庫

 

 

Linux版本的壓縮版,我們需要手工的建立資料庫。在Windows版本中,很多時候是不需要進行這個步驟的。建立的方法也比較簡單,就是執行相應的指令碼程式。

 

--在程式目錄中。

[mysql@bspdev mysql-5.5.25-linux2.6-i686]$ scripts/mysql_install_db

Installing MySQL system tables...

OK

Filling help tables...

OK

 

To start mysqld at boot time you have to copy

support-files/mysql.server to the right place for your system

 

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !

To do so, start the server, then issue the following commands:

 

/mysql/mysql-5.5.25-linux2.6-i686/bin/mysqladmin -u root password 'new-password'

/mysql/mysql-5.5.25-linux2.6-i686/bin/mysqladmin -u root -h bspdev.localdomain password 'new-password'

 

Alternatively you can run:

/mysql/mysql-5.5.25-linux2.6-i686/bin/mysql_secure_installation

 

which will also give you the option of removing the test

databases and anonymous user created by default.  This is

strongly recommended for production servers.

 

See the manual for more instructions.

 

You can start the MySQL daemon with:

cd /mysql/mysql-5.5.25-linux2.6-i686 ; /mysql/mysql-5.5.25-linux2.6-i686/bin/mysqld_safe &

 

You can test the MySQL daemon with mysql-test-run.pl

cd /mysql/mysql-5.5.25-linux2.6-i686/mysql-test ; perl mysql-test-run.pl

 

Please report any problems with the /mysql/mysql-5.5.25-linux2.6-i686/scripts/mysqlbug script!

 

 

從輸出資訊,我們可以看到MySQL提供了一些資訊,作為下面工作的參考。

 

6、啟動/關閉測試

 

 

到此,主要的安裝步驟已經完成,我們進行初步的啟動伺服器試驗。

 

 

[mysql@bspdev mysql-5.5.25-linux2.6-i686]$ mysqld &

[1] 28398

[mysql@bspdev mysql-5.5.25-linux2.6-i686]$ 120701  4:21:42 [Warning] Changed limits: max_open_files: 1024  max_connections: 151  table_cache: 431

120701  4:21:42 [Note] Plugin 'FEDERATED' is disabled.

120701  4:21:42 InnoDB: The InnoDB memory heap is disabled

120701  4:21:42 InnoDB: Mutexes and rw_locks use InnoDB's own implementation

120701  4:21:42 InnoDB: Compressed tables use zlib 1.2.3

120701  4:21:42 InnoDB: Using Linux native AIO

120701  4:21:42 InnoDB: Initializing buffer pool, size = 128.0M

120701  4:21:42 InnoDB: Completed initialization of buffer pool

InnoDB: The first specified data file ./ibdata1 did not exist:

InnoDB: a new database to be created!

120701  4:21:42  InnoDB: Setting file ./ibdata1 size to 10 MB

InnoDB: Database physically writes the file full: wait...

120701  4:21:42  InnoDB: Log file ./ib_logfile0 did not exist: new to be created

InnoDB: Setting log file ./ib_logfile0 size to 5 MB

InnoDB: Database physically writes the file full: wait...

120701  4:21:42  InnoDB: Log file ./ib_logfile1 did not exist: new to be created

InnoDB: Setting log file ./ib_logfile1 size to 5 MB

InnoDB: Database physically writes the file full: wait...

InnoDB: Doublewrite buffer not found: creating new

InnoDB: Doublewrite buffer created

InnoDB: 127 rollback segment(s) active.

InnoDB: Creating foreign key constraint system tables

InnoDB: Foreign key constraint system tables created

120701  4:21:43  InnoDB: Waiting for the background threads to start

120701  4:21:44 InnoDB: 1.1.8 started; log sequence number 0

120701  4:21:44 [Note] Server hostname (bind-address): '0.0.0.0'; port: 3306

120701  4:21:44 [Note]   - '0.0.0.0' resolves to '0.0.0.0';

120701  4:21:44 [Note] Server socket created on IP: '0.0.0.0'.

120701  4:21:44 [Note] Event Scheduler: Loaded 0 events

120701  4:21:44 [Note] mysqld: ready for connections.

Version: '5.5.25-log'  socket: '/tmp/mysql.sock'  port: 3306  MySQL Community Server (GPL)

 

[mysql@bspdev mysql-5.5.25-linux2.6-i686]$

 

 

 

從日誌資訊上看,基本沒有什麼大問題,除了一個warning內容。下面我們嘗試連線使用者。

 

 

[mysql@bspdev mysql-5.5.25-linux2.6-i686]$ mysql -u root

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 1

Server version: 5.5.25-log MySQL Community Server (GPL)

 

Copyright (c) 2000, 2011, 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> show databases; --連線成功,執行命令成功;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| mysql              |

| performance_schema |

| test               |

+--------------------+

4 rows in set (0.00 sec)

 

mysql>

 

 

說明MySQL執行狀態正常。下面是使用mysqladmin管理程式進行伺服器狀態查詢和關閉操作。

 

 

mysql@bspdev mysql-5.5.25-linux2.6-i686]$ mysqladmin -u root status

Uptime: 66  Threads: 1  Questions: 4  Slow queries: 0  Opens: 33  Flush tables: 1  Open tables: 26  Queries per second avg: 0.060

[mysql@bspdev mysql-5.5.25-linux2.6-i686]$ mysqladmin -u root shutdown

120701  4:23:16 [Note] mysqld: Normal shutdown

 

120701  4:23:16 [Note] Event Scheduler: Purging the queue. 0 events

120701  4:23:16  InnoDB: Starting shutdown...

120701  4:23:17  InnoDB: Shutdown completed; log sequence number 1595675

120701  4:23:17 [Note] mysqld: Shutdown complete

 

[1]+  Done                    mysqld

 

 

至此,我們起碼是將Mysql伺服器安裝配置上,並且可以正常的進行訪問。但是,還有一些額外的問題沒有得到徹底解決,比如登入密碼、告警日誌中Warning資訊等。我們留待下篇繼續研究。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17203031/viewspace-734498/,如需轉載,請註明出處,否則將追究法律責任。

相關文章