1. 程式人生 > >2018-2-26 Linux學習筆記

2018-2-26 Linux學習筆記

11.1 LAMP架構介紹 11.2 MySQL_MariaDB介 11.3/4/5 MySQL安裝

11.1 LAMP架構介紹
  • Linux+Apache(httpd)+MySQL+PHP
    Linux: 操作系統
    Apache: 提供Web服務的軟件,真正名字叫httpd
    MySQL: 存儲數據,字符串的數據庫
    PHP: 用C開發,類似shell但比shell高級,通常用於做網站
    技術分享圖片
  • Apache,MySQL,PHP三個角色可以在一臺機器上,也可以分開,但Apache(httpd)和PHP要在一起,因為PHP是以一個模塊的形式存在Apache上的.

  • 靜態請求: 直接由webserver處理的請求,比如圖片,js,css等.
    用戶<-->Apache<-->靜態文件
  • 動態請求: 需要和數據庫打交道的請求.
    用戶<-->Apache<-->PHP模塊<-->MySQL

11.2 MySQL_MariaDB介紹

  • MySQL是一個關系型數據庫,由mysql ab公司開發,mysql在2008年被sun公司收購(10億美元),2009年sun公司被oracle公司收購(74億美元).MySQL官網https://www.mysql.com.MySQL5.6變化比較大,5.7性能上有很大提升.

  • Mariadb為MySQL的一個分支,官網https://mariadb.com
  • Mariadb主要由SkySQL公司(現更名為MariaDB公司)維護,SkySQL公司由MySQL原作者帶領大部分原班人馬創立.
  • Mariadb5.5版本對應MySQL的5.5,10.0對應MySQL5.6

  • MySQL各個版本:
    Community社區版本
    Enterprise企業版
    GA(Generally Available)通用版本,在生產環境中用的
    DMR(Development Milestone Release)開發裏程碑發布版
    RC(Release Candidate)發行候選版本
    Beta開放測試版本
    Alpha內部測試版本

11.3/4/5 MySQL安裝

  • MySQL的幾個常用安裝包: rpm,源碼,二進制免編譯.

  • 二進制免編譯包是在其他Linux機器已經編譯後打包的,安裝時無需再編譯,與rpm包安裝類似,但勝於rpm包的一點是它能指定安裝的路徑,而rpm包不能指定.
  • 二進制免編譯包可不足之處是性能可能不能保證,如果追求性能建議用源碼安裝方式.

  • 二進制免編譯包安裝MySQL簡要步驟:
    cd /usr/local/src
    wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz #下載MySQL二進制免編譯包
    tar zxvf mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz #解壓安裝包
    mv mysql-5.6.36-linux-glibc2.5-x86_64 /usr/local/mysql #將安裝包移動到/usr/local/mysql目錄下
    cd /usr/local/mysql
    useradd mysql #創建mysql用戶
    mkdir /data/ #創建數據庫目錄
    ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql #初始化,指定數據庫用戶和目錄(這是一個perl腳本)
    cp support-files/my-default.cnf /etc/my.cnf #拷貝配置文件
    cp support-files/mysql.server /etc/init.d/mysqld #拷貝啟動腳本
    vi /etc/init.d/mysqld
    定義basedir和datadir
    basedir=/usr/local/mysql
    datadir=/data/mysql
    /etc/init.d/mysqld start #啟動mysql服務
  • 運行./scripts/mysql_install_db --user=mysql --datadir=/data/mysql進行初始化後,如何知道是否成功呢?簡單說一是看是否有2個OK(如下圖);二是立刻運行echo $?查看剛運行的初始化命令返回值是否為0(0成功,1失敗).
    技術分享圖片
  • 可用如下命令讓mysqld能開機啟動
    chkconfig --add mysqld #將mysqld加入到啟動列表中以便能開機啟動
    技術分享圖片
  • 安裝過程(主要是初始化那一行命令)中遇到的問題:
  • 問題1:
    -bash: ./scripts/mysql_install_db: /usr/bin/perl: 壞的解釋器: 沒有那個文件或目錄
    解決方法:
    yum install perl -y

  • 問題2:
    [root@kh-01 mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
    Installing MySQL system tables..../bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
    解決方法:
    yum install libaio* -y

  • 安裝包時遇到缺少某些模塊/包問題的一般思路,比如如下錯誤提示:
    FATAL ERROR: please install the following Perl modules before executing ./scripts/mysql_install_db:
    Data::Dumper
    方法一:
    先模糊搜索可能的安裝包-->安裝搜索到的安裝包-->再次執行,若不報錯則說明安裝正確.
    yum list|grep perl|grep -i dumper
    方法二:
    網上搜索該問題
    www.baidu.com
    www.bing.com
    www.google.com

  • 命令行啟動mysql服務(了解):
    /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --datadir=/data/mysql &
    關閉mysql服務(了解):
    killall mysqld
    註(重要): 不要用kill pid形式來關閉mysql服務,因為有可能造成數據丟失;而用killall會先停止當前寫/讀操作,將緩存中未同步到磁盤中的數據同步到磁盤後,再停止mysql服務.

  • mysql的兩個引擎(此處先做了解則可):
    innodb
    myisam

2018-2-26 Linux學習筆記