謝煙客---------二進位制安裝MariaDB,管理關係型資料庫的基本元件

語言: CN / TW / HK

特性、二進位制安裝方法、安裝生成的程式、MariaDB程式的組成、SQL介面、關係型資料庫的元件、管理資料庫元件、資料型別、修飾


MariaDB,開源RDBMS的實現


特性、

wKiom1nPW13RHhNcAABdUlrZ-Qc574.png


安裝MariaDB方法、

wKioL1nPWz2CO5UqAAAIle96XtA180.png

    CentOS 6: 通用二進位制格式安裝MariaDB

        1、獲取原始碼
            官方站點:www.mariadb.org
        2、安裝MariDB
            1)新增使用者
            2)準備資料庫
            3)展開及配置
        3、測試啟動服務並登陸MariaDB
        4、安全初始化
        5、通用配置


    1、獲取原始碼    
    2、安裝MariaDB
        1) 新增使用者: 
            # groupadd -r -g 306 mysql
            # useradd -r -g 306 -u 306 mysql

        2) 準備資料庫:
            # btrfs
            # lvm2 快照,資料庫備份

            # fdisk -l /dev/[sh]d[a-z] //檢視所有磁碟
            # fdisk /dev/sda            //管理指定磁碟
            # partx -a /dev/sda
            # partx -a /dev/sda

            # pvcreate /dev/sda3
            # vgcreate vg0 /dev/sda3
            # lvcreate -L 10G -n mylv vg0

            # 檢視可被格式的檔案系統型別
                # cat /proc/filesystems
                    **沒有xfs,xfs比ext檔案易擴充套件,易用
            # 檢視模組
                # lsmod

            # 安裝使用xfs檔案系統
                # yum search xfs     //xfsprogs.i686 : Utilities for managing the XFS filesystem
                    檔案系統組成: 模組、使用者空間的管理工具、POSIX
                # yum -y install xfsprogs

            # 安裝後檢視核心中的模組
                # rpm -ql xfsprogs //只提供程式,並未提供模組
                # modinfo xfs      //沒有此模組
                # modprobe xfs     //如果有則可以安裝

            # mke2fs -t ext4 /dev/vg0/mylv 
            # vim /etc/fstab
                /dev/vg0/mylv  /mydata/data   ext4    defaults    1 2
            # mkdir -p /mydata/data
            # chown mysql.mysql /mydata/data
            # mount -a

        3) 展開及配置:
            展開:
                # tar xf mariadb-5.5.57-linux-i686.tar.gz -C /usr/local/

                # cd /usr/local/
                # ls  //檢視檔案
                # ln -sv mariadb-5.5.57-linux-i686 mysql
                # ll  //檢視連結
                # cd mysql 
                # ll    //檢視許可權
                # chown -R mysql.mysql ./*
                # ll    //確認

            元資料生成:
                # scripts/mysql_install_db --help    
                    --user=user_name 
                    --basedir=path    //指明mariadb的安裝目錄
                    --datadir=path    //MariaDB的資料庫的目錄
                    --defaults-extra-file=name   //配置檔案

                # /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --user=mysql --datadir=/mydata/data/ 

                # ls /mydata/data  //檢視檔案是否生成

            準備配置檔案:
                配置檔案讀取路徑: /etc/my.cnf --> /etc/mysql/my.cnf --> --default-extra-file --> ~/.my.cnf
                # mkdir /etc/mysql
                # ls support-files/  //檢視提供的檔案
                    1) my*.cnf       //均為配置 large(512M記憶體), meduim(256M), small(64M) 記憶體4G innodb-heavy-4G.cnf
                    2) mysql.server //提供的服務指令碼

                # cp support-files/my-large.cnf /etc/mysql/my.cnf

                    修改配置檔案: 配置檔案類ini格式, 相同配置段出現多次時,最後一個配置段為最終生效段.

                [client]
                #password       = your_password
                port            = 3306
                socket          = /tmp/mysql.sock  //客戶端通過/tmp/mysql.sock與服務端通訊
                [mysqld]
                port            = 3306             //服務端監聽的埠
                socket          = /tmp/mysql.sock  //服務端監聽在unix socket
                # Try number of CPU's*2 for thread_concurrency   執行緒數為CPU核心數的2倍
                thread_concurrency = 4

                --------
                datadir = /mydata/data             //資料庫的目錄
                innodb_file_per_table = on         //innodb的特性,每個檔案當作一個表
                skip_name_resolve = on             //跳過IP-->反解為主機名.授權只基於IP即可,加速

            準備服務指令碼
                # ls support-files/                //檢視服務指令碼的位置及許可權
                # cp support-files/mysql.server /etc/rc.d/init.d/mysqld
                # chkconfig --add mysqld
                # chkconfig --list mysqld

        4)測試啟動服務
            # ss -tnl //檢視3306埠是否被佔用
            # service mysqld start

            /usr/local/mysql/bin/mysqld_safe_helper: Can't create/write to file '/var/log/mysqld.log' (Errcode: 13)
            # touch /var/log/mysqld.log
            # chown root.mysql /var/log/mysqld.log
            # chmod 660 /var/log/mysqld.log

            # /usr/local/mysql/bin/mysql
            MariaDB [(none)]> 

        5)    安全初始化
                MariaDB [(none)]> SELECT User,Host,Password FROM mysql.user;
                +------+-----------------------+----------+
                | User | Host                  | Password |
                +------+-----------------------+----------+
                | root | localhost             |          |
                | root | localhost.localdomain |          |
                | root | 127.0.0.1             |          |
                | root | ::1                   |          |
                |      | localhost             |          |
                |      | localhost.localdomain |          |
                +------+-----------------------+----------+
                6 rows in set (0.00 sec)
                注意:在本地主機上root,及一個匿名使用者沒有對應的密碼

                # /usr/local/mysql/bin/mysql_secure_installation 

                #  /usr/local/mysql/bin/mysql -uroot -hlocalhost -pmagedu
                MariaDB [(none)]> 

        6)通用配置
            檢視安裝目錄
            # ls /usr/local/mysql
            bin      data               include         lib  mysql-test  scripts  sql-bench
            COPYING  EXCEPTIONS-CLIENT  INSTALL-BINARY  man  README      share    support-files

            1、匯出PATH變數
                # vim /etc/profile.d/mysql.sh
                    export PATH=/usr/local/mysql/bin:$PATH
                # . /etc/profile.d/mysql.sh
            2、匯出庫檔案
                # vim /etc/ld.so.conf.d/mysql.conf
                /usr/local/mysql/lib
                # ldconfig [-v]
            3、匯出標頭檔案
                # ln -sv /usr/local/mysql/include /usr/include/mysql
            4、匯出man手冊
                # vim /etc/man.config
                MANPATH /usr/local/mysql/man


MariaDB程式組成

        # ls /usr/local/mysql/bin
        
        1、服務端程式
            mysqld_safe[ps命令即可查詢:"執行緒安全的mysql"] 
            mysqld_multi["多個mysql,使用不同的埠"] 

        mysql協議:資料儲存協議:C/S架構
            實現: mysqld
            程序間的通訊:
                同主機通訊:unix socket、message queue(signal)、share memory、semphor(旗語)
                跨主機:socket、rpc

        mysqld同主機:基於unix socket通訊
            伺服器監聽在: server地址: localhost, 127.0.0.1
                二進位制安裝:/tmp/mysql.sock
                rpm安裝: /var/lib/mysql/mysql.sock

        2、客戶端程式
            mysql           CLI、GUI(phpMyadmin)
            mysqladmin 
            mysqlbinlog        二進位制日誌管理
            mysqldump

        客戶端程式: mysql使用
            mysql [-uUSERNAME] [-hHOST] [-pPASSWORD] 

                注意:
                    1、mysql使用者名稱: 'USERNAME'@'HOST'
                        HOST:支援萬用字元:
                            % 任意長度任意字元
                            _ 任意單個字元

                            例如: 172.16.0.0/16網路用萬用字元表示
                                172.16.%
                                172.16.0.%
                                172.16.%.%
                    2、不給-u: 預設使用者名稱為root
                       不給-h: 預設HOST為localhost或127.0.0.1
                       不給-p: 預設PASSWORD為空



SQL介面

    SQL介面: 與mysqld相互
        MariaDB [(none)]> 

        客戶端命令:本地執行
            命令名 簡寫格式
            help      (\?) //獲取幫助
            clear     (\c) //清空輸入的內容
            ego       (\G) 垂直顯示結果
            quit      (\q) //退出mysql,
            status    (\s) //檢視伺服器的狀態資訊
            system    (\!) //執行shell命令
            use       (\u) use DB, 設定預設資料庫


        服務端命令:在伺服器端執行並取回,命令有結束符";"
            > SELECT VERSION();
                呼叫函式並執行
            > SELECT 1+1;
            > SELECT 0.99^365
            > SELECT 1.0^365


關係型資料庫的元件、

wKiom1nPkobz1XppAABkhiXZ0bY192.png



管理關係型資料庫的基本元件

注意:寫的格式統一,因為mysql快取是根據MD5值儲存快取。如果兩次輸入的字母大小寫不同時,其MD5值不同。


獲取命令幫助:

wKiom1nPtTCyBkjAAAAL9iddHa8629.png


資料庫管理

wKiom1nPt3qRQsn_AABG9d-6hi4801.png


表管理

wKioL1nPuZ-Ca40nAABppPrna6Q416.png


資料型別、


資料型別: datatype
    字元:
        定長字元:
            不區分大小寫 char(#) 用或不用,給1個佔10個
            區分大小寫

        變長字元: 
            不區分大小寫 varchar(#) 有結束符,佔用一個, 給1個,佔2個
            區分大小寫

        物件儲存:大文字儲存
            TEXT 不區分 
            BLOB  區分

        內建:
            ENUM   列舉
            SET    集合

    數值:    
        精確:整型[int]、十進位制[decimal]
            int
                tinyint   1byte
                smallint  2bytes
                mediumint 3bytes
                int       4bytes
                bigint       8bytes  範圍: 0 - 2^64-1
        近似: 單精度浮點[float]、雙精度浮點[double]
        
修飾
NOT NULL 
NULL