Linux網站架構系列之Mysql—-部署篇


原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章 原始出處 、作者信息和本聲明。否則將追究法律責任。http://nolinux.blog.51cto.com/4824967/1321079


  MySQL是一個關系型數據庫管理系統,由瑞典MySQL AB公司開發,目前屬于Oracle公司。MySQL所使用的SQL語言是用于訪問數據庫的最常用標準化語言。由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,一般中小型網站的開發都選擇MySQL作為網站數據庫。由于其社區版的性能卓越,搭配PHP和Apache可組成良好的開發環境。本篇將為大家講解mysql的簡單部署。

mysql的分為四個版本:

Alpha版:一般只在軟件開發公司內部運行,不對外公開。
Beta版:完成功能的開發和所有的測試工作之后的產品,不會存在較大的漏洞和BUG,并且邀請和提供給用戶體驗與測試,以便更全面地測試軟件的不足之處或存在的問題。
RC版:屬于生產環境發布之前的一個小版本或稱候選版本,是測試Beta版本二收集到的BUG或不足之處,根據手機到的信息而進行修復和完善之后的產品。
GA版本:軟件產品正式發布的版本,也成生產版本的產品。

并且mysql為了更好發展將版本路線分為了三條。

第一條產品線:從5.0版本升級到5.1的系列版本,繼續完善與改進其用戶體驗和性能,同時增加新功能。
第二條產品線:為了更好的整合MySQL AB公司,社區和新功能。版本編號從5.4開始,目前發展到5.6。
第三條產品線:為了更好推廣MySQL Cluster 版本,從6.0版本開始,目前發展到7.3版本。

由于mysql不同產品線之間的編譯安裝方法還有差別,因此本篇將分別為大家講解mysql的5.1.7版本和5.6.13版本的簡單部署。

5.1.7版本

環境
CentOS6.4 x86_64位 采用最小化安裝,系統經過了基本優化
selinux為關閉狀態,iptables為無限制模式
ip:192.168.1.113/24
mysql版本:mysql-5.1.70
源碼包存放位置:/server/tools
源碼包編譯安裝位置:/etc/local/軟件名稱
數據庫存放位置:/mydata

一、準備工作

1、開發環境部署

[root@c64-web ~]# yum groupinstall "Development tools" "Server Platform Development" -y #安裝這兩個開發環境的軟件包組
[root@c64-web ~]# yum install pcre* -y #安裝pcre兼容的正則表達式

2、創建用戶及目錄

[root@c64-web ~]# useradd -s /sbin/nologin -M mysql #創建mysql用戶,并加入mysql組,不創建家目錄,關閉登陸
[root@c64-web ~]# mkdir /mydata  #創建數據庫存放目錄
[root@c64-web ~]# chown -R mysql.mysql /mydata

3、下載源碼包

[root@c64-web ~]# cd /server/tools
[root@c64-web tools]# wget http://mysql.ntu.edu.tw/Downloads/MySQL-5.1/mysql-5.1.70.tar.gz

二、編譯安裝

準備工作已經做好了,現在我們就開始編譯安裝mysql。

[root@c64-web tools]# tar zxf mysql-5.1.70.tar.gz
[root@c64-web tools]# cd mysql-5.1.70
[root@c64-web mysql-5.1.70]# ./configure \
--prefix=/usr/local/mysql \     #設定mysql安裝路徑,默認為/usr/local
--with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock \  #指定Mysql socket文件存放目錄
--localstatedir=/mydata \       #設定mysql的數據文件存放位置
--enable-assembler \            #允許使用匯編模式(優化性能)
--enable-thread-safe-client \   #以線程方式編譯客戶端
--with-mysqld-user=mysql \      #指定MySQL運行的系統用戶
--with-big-tables \             #啟用大表支持
--without-debug \               #使用非debug模式
--with-pthread \                #強制使用pthread線程序庫編譯
--with-extra-charsets=complex \ #復雜字符集支持
--with-readline \               #使用系統readline代替捆綁副本。
--with-ssl \                    #啟用ssl加密
--with-embedded-server \        #構建嵌入式MySQL庫 (libmysqld.a)
--enable-local-infile \         #讓mysql支持從本地加載數據庫(默認關閉)
--with-plugins=partition        #mysql分區功能支持
--with-plugins=innobase \       #innobas存儲引擎支持
--with-mysqld-ldflags=-all-static \    #服務器使用靜態庫(優化性能)
--with-client-ldflags=-all-static      #客戶端使用靜態庫(優化性能)
[root@c64-web mysql-5.1.70]# make && make install

執行了上面的操作之后,mysql-5.1.7版本就編譯安裝成功了。

下面為快速復制,編譯配置文本:

[root@c64-web mysql-5.1.70]# ./configure –prefix=/usr/local/mysql-5.1.70 –with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock –localstatedir=/mydata –enable-assembler –enable-thread-safe-client –with-mysqld-user=mysql –with-big-tables –without-debug –with-pthread –with-extra-charsets=complex –with-readline –with-ssl –with-embedded-server –enable-local-infile –with-plugins=partition –with-plugins=innobase –with-mysqld-ldflags=-all-static –with-client-ldflags=-all-static

1、創建目錄軟鏈接

mysql安裝完成之后,我們要先為編譯安裝好的目錄添加軟鏈接。此操作在生產環境中為重要調優參數,添加這條軟鏈接的目的有兩點:1、方便人類使用。2、便于以后升級版本。

[root@c64-web mysql-5.1.70]# cd /root
[root@c64-web ~]# ln -s /usr/local/mysql-5.1.70 /usr/local/mysql

2、創建其它相應目錄及權限設置

[root@c64-web ~]# mkdir /mydata   #建立mysql數據文件目錄
[root@c64-web ~]# chown -R mysql /mydata  #授權mysql用戶訪問mysql數據庫目錄

3、獲取Mysql主配置文件并修改

由于mysql的主配置文件,編譯安裝之后默認是沒有的。因此我們需要在mysql的編譯包中,選擇預支的*.cnf結尾的配置文件將其復制到我們的/etc/目錄下。

[root@c64-web ~]# ll /server/tools/mysql-5.1.70/support-files/*.cnf
-rw-r--r-- 1 root root 4714 11月 6 02:25 /server/tools/mysql-5.1.70/support-files/my-huge.cnf
-rw-r--r-- 1 root root 19763 11月 6 02:25 /server/tools/mysql-5.1.70/support-files/my-innodb-heavy-4G.cnf
-rw-r--r-- 1 root root 4688 11月 6 02:25 /server/tools/mysql-5.1.70/support-files/my-large.cnf
-rw-r--r-- 1 root root 4699 11月 6 02:25 /server/tools/mysql-5.1.70/support-files/my-medium.cnf
-rw-r--r-- 1 root root 2467 11月 6 02:25 /server/tools/mysql-5.1.70/support-files/my-small.cnf  #中小型公司用這個即可
[root@c64-web mysql-5.1.70]# /bin/cp /server/tools/mysql-5.1.70/support-files/my-small.cnf /etc/my.cnf
修改mysql的主配置文件/etc/my.cnf,添加如下1行
datadir=/mydata  #我們自定義的數據庫存放目錄

4、讓系統識別源碼包安裝的軟件

a)將mysql的庫文件路徑加入系統的庫文件搜索路徑中

方法一:直接做軟鏈接

[root@c64-web ~]# ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql

方法二:利用ldconfig導入系統庫(推薦)

[root@c64-web ~]# echo "/usr/local/mysql/lib" >> /etc/ld.so.conf.d/mysql.conf
[root@c64-web ~]# ldconfig

b)輸出mysql的頭文件到系統頭文件

[root@c64-web ~]# ln -s /usr/local/mysql/include/mysql /usr/include/mysql

c)配置mysql命令全局使用路徑

[root@c64-web ~]# echo "PATH=/usr/local/mysql/bin:$PATH" >>/etc/profile
[root@c64-web ~]# source /etc/profil

5、以mysql用戶的身份初始化數據庫并啟動

[root@c64-web ~]# /usr/local/mysql/bin/mysql_install_db --basedir=/usr/local/mysql --datadir=/mydata --user=mysql  #初始化mysql數據庫文件
WARNING: The host 'c64-web' could not be looked up with resolveip.
This probably means that your libc libraries are not 100 % compatible
with this binary MySQL version. The MySQL daemon, mysqld, should work
normally with the exception that host name resolving will not work.
This means that you should use IP addresses instead of hostnames
when specifying MySQL privileges !   #此警告我們可以通過在/etc/hosts文件中修改127.0.0.1后面的localhost為當前c64-web來消除。
Installing MySQL system tables...
131108 18:07:26 [Warning] '--skip-locking' is deprecated and will be removed in a future release. Please use '--skip-external-locking' instead.   #這里的警告無需理會
OK
Filling help tables...
131108 18:07:27 [Warning] '--skip-locking' is deprecated and will be removed in a future release. Please use '--skip-external-locking' instead.   #這里的警告無需理會
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:
/usr/local/mysql/bin/mysqladmin -u root password 'new-password'
/usr/local/mysql/bin/mysqladmin -u root -h lhh password 'new-password'
#教你如何創建root用戶進入mysql數據庫的密碼
Alternatively you can run:
/usr/local/mysql/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 /usr/local/mysql ; /usr/local/mysql/bin/mysqld_safe &
#上面的即為開啟命令中的一種,后面的&為放入后臺執行的意思
You can test the 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/mysqlbug script!
#以上為初始化創建mysql數據庫文件時產生的信息。
[root@lhh mydata]# cd /usr/local/mysql ; /usr/local/mysql/bin/mysqld_safe &
[1] 7146
131108 18:50:37 mysqld_safe Logging to '/mydata/lhh.err'.
131108 18:50:37 mysqld_safe Starting mysqld daemon with databases from /mydata   #此處需要敲擊回車才能回到命令輸入界面。

mysql數據庫啟動的另外一種方法

[root@c64-web ~]# /bin/cp /server/tools/mysql-5.1.70/support-files/mysql.server /etc/init.d/mysqld    #拷貝mysql啟動腳本mysql命令路徑
[root@c64-web ~]# chmod 700 /etc/init.d/mysqld      #使腳本可執行
[root@c64-web ~]# /etc/init.d/mysqld start    #這是啟動數據庫方法之一
[root@c64-web ~]# /etc/init.d/mysqld stop     #關閉數據庫的方法
[root@c64-web ~]# killalll mysqld #關閉數據庫的另外一種方法

6、檢查mysql數據庫是否啟動:

[root@c64-web ~]# netstat -lnt|grep 3306
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN

可以看到,我們的mysql服務已經啟動起來了。這里如果發現3306端口沒起來,請tail -100 /usr/local/mysql/data/機器名.err 檢查日志報錯進行調試。

7、設置初始賬戶,并登陸后臺

在上面,初始化創建mysql數據庫的時候,已經給我們提到了如何給mysql數據庫賬號設置密碼,下面我們就進行操作。

[root@c64-web ~]# mysqladmin -u root password 123456   #設置密碼
[root@c64-web ~]# history -c  #設置之后注意清除歷史記錄,防止密碼泄露
[root@c64-web ~]# mysql -u root -p    #連接數據庫查看
Enter password:   #這里輸入剛才設置的密碼
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.1.70 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> show databases;   #查看現有的數據庫
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| test |
+--------------------+
3 rows in set (0.00 sec)
mysql> select user();    #查看現有用戶
+----------------+
| user() |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec)
mysql> quit   #退出
Bye

到此,我們mysql-5.1.17的部署就已經完成了,下面將是5.6.13的部署。

5.6.13版本

mysql的第二條產品線和第一條產品線的產品主要在數據存儲引擎和編譯安裝的方法上有點區別,因此這里我就主要對編譯安裝的部分進行講解,其它地方都是大同小異的。

mysql-5.6.13源碼包下載地址:http://mysql.ntu.edu.tw/Downloads/MySQL-5.6/mysql-5.6.13.tar.gz

一、更改編譯配置工具為cmake

注意下面mysql-5.6.x系列版本在編譯配置時,放棄了用./configure,進而使用到了cmake,因此我們需要先安裝cmake這個工具,下面才能執行編譯配置。

二、編譯參數更改

mysql-5.6.x系列版本綜合性的編譯參數詳解:

[root@c64-web mysql-5.6.13]# cmake
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \          #指定mysql安裝目錄
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \                #Unix socket文件路徑,自定義此路徑防報錯
-DDEFAULT_CHARSET=gbk \                            #默認字符
-DDEFAULT_COLLATION=gbk_chinese_ci \               #校驗字符
-DEXTRA_CHARSETS=all \                             #安裝所有擴展字符集
-DWITH_MYISAM_STORAGE_ENGINE=1 \                   #安裝myisam存儲引擎
-DWITH_INNOBASE_STORAGE_ENGINE=1 \                 #安裝innodb存儲引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \                  #安裝archive存儲引擎
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \                #安裝blackhole存儲引擎
-DWITH_MEMORY_STORAGE_ENGINE=1 \                   #安裝memory存儲引擎
-DWITH_FEDERATED_STORAGE_ENGINE=1                  #安裝frderated存儲引擎
-DWITH_READLINE=1 \                                #快捷鍵功能
-DENABLED_LOCAL_INFILE=1 \                         #允許從本地導入數據
-DMYSQL_DATADIR=/usr/local/mysql/data \            #數據庫存放目錄
-DMYSQL_USER=mysql \                               #數據庫屬主
-DMYSQL_TCP_PORT=3306 \                            #數據庫端口
-DSYSCONFDIR=/etc \                                #MySQL配輯文件
-DWITH_SSL=yes                                     #數據庫SSL

下面為快捷復制執行命令:

[root@c64-web mysql-5.6.13]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=gbk -DDEFAULT_COLLATION=gbk_chinese_ci -DEXTRA_CHARSETS=all -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_DATADIR=/mydata -DMYSQL_USER=mysql -DMYSQL_TCP_PORT=3306 -DSYSCONFDIR=/etc -DWITH_SSL=yes

執行之后,還是用make&&make install 來執行編譯安裝。

三、主配置文件調整

在5.6.X系列的版本中,mysql的主配置文件發生了變化。可以看到,mysql-5.6.13版本中取消了原來的my-huge.cnf,my-large.cnf,my-small.cnf模版,同時取而代之是my.cnf 或者是my-default.cnf一個配置模板。

[root@c64-web mysql-5.6.13]# ll /server/tools/mysql-5.6.13/support-files/*.cnf
-rw-r--r--. 1 root root 1126 Nov  8 01:37 /server/tools/mysql-5.6.13/support-files/my-default.cnf
[root@c64-web mysql-5.6.13]# /bin/cp /server/tools/mysql-5.6.13/support-files/my-default.cnf /etc/my.cnf

并且,模板文件里需要配置的地方很少。這是因為mysql-5.6.x系列將以前許多默認值設置不合理的參數都進行了調整,并且采用了一種out-of-box的思維,即有些值是固定的,有些值是啟動時,根據其他參數或者服務器的配置來自動設置的,所以不需要初始指定很多值。

主要的區別就是這三點了,其它的操作和5.1.13基本一致,這里就不再重復寫一遍了。希望大家本篇博文能對大家有幫助。

轉自:http://nolinux.blog.51cto.com/4824967/1321079

原創文章,作者:s19930811,如若轉載,請注明出處:http://www.www58058.com/2009

(0)
s19930811s19930811
上一篇 2015-04-01
下一篇 2015-04-02

相關推薦

  • 8月9日sed(更新版)

    sed命令及vim基礎使用命令 處理文本的工具sed stream editor,行編輯器    sed是一種流編輯器,它一次處理一行內容。處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”(pattern space),接著用sed命令處理緩沖區中的內容,處理完成后,把緩沖區的內容送往屏幕。接著處理下一行,這樣不斷重復,直到文件末尾。文件內容并沒有…

    Linux干貨 2016-08-15
  • 文件歸檔,shell循環和函數運用

    文件歸檔 tar (1)  創建歸檔 tar -c -f / PATH/TO/SOMEFILE .tar FILE… tar cf / PATH/TO/SOMEFILE .tar FILE… (2)  查看歸檔文件中的文件列表 tar -t -f  /PATH/TO/SOMEFILE .tar (3) &…

    Linux干貨 2016-08-21
  • linux系統自動化安裝和selinux

    系統自動化安裝: Anaconda 安裝系統分成三個階段:  安裝前配置階段安裝過程使用的語言鍵盤類型安裝目標存儲設備Basic Storage :本地磁盤特殊設備:iSCSI設定主機名配置網絡接口時區管理員密碼x設定分區方式及MBR 的安裝位置創建一個普通用戶選定要安裝的程序包 創建引導光盤:#cp /media/cdrom/isoli…

    Linux干貨 2017-04-06
  • 第四周

    第四周blog 第四周blog 1 復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 cp -r /etc/skel /home/tuser1 ; chmod -R go-r /home/tuser…

    Linux干貨 2016-12-23
  • 馬哥教育21期網絡班—第二周課程+練習

    目錄管理類命令: mkdir, rmdir, tree mkdir mkdir [options] /path/to/somewhere -p: 存在于不報錯,且可自動創建所需的各目錄; -v: 顯示詳細信息 -m MODE: 創建目錄時直接指定權限; tree tree:  需要安裝  yum -y install …

    Linux干貨 2016-06-29

評論列表(2條)

  • 菱鎂板
    菱鎂板 2015-04-05 16:08

    好文章,內容文從字順.禁止此消息:nolinkok@163.com

  • 西門塔爾牛
    西門塔爾牛 2015-04-06 10:59

    好文章,內容一氣呵成.禁止此消息:nolinkok@163.com

欧美性久久久久