第一章·MySQL介紹及安裝

一.DBA工做內容及課程體系

二.MySQL課程體系介紹

三.DBA的職業素養

四.MySQL簡介及安裝

4.1 什麼是數據?

數據(data)是事實或觀察的結果,是對客觀事物的邏輯概括,是用於表示客觀事物的未經加工的的原始素材。
數據能夠是連續的值,好比聲音、圖像,稱爲模擬數據。也能夠是離散的,如符號、文字,稱爲數字數據。
在計算機系統中,數據以二進制信息單元0,1的形式表示。html

數據的定義: 數據是指對客觀事件進行記錄並能夠鑑別的符號,是對客觀事物的性質、狀態以及相互關係等進行記載的物理符號或這些物理符號的組合。它是可識別的、抽象的符號。*mysql

4.2 什麼是數據庫管理系統

DBMS(database management system)
linux

4.3 數據庫管理系統種類

4.3.1 RDBMS

以多張二維表的方式來存儲,又給多張表創建了必定的關係(關係型數據庫)c++

4.3.2 NoSQL

左邊rdbms右邊nosql 不少以json格式進行存儲數據的(mogodb)
web

4.3.3 RDMS與NoSQL對比

功能性能對比:
redis

特色對比:
關係型數據庫(RDBMS)的特色:sql

  • 1.二維表
  • 2.典型產品Oracle傳統企業,MySQL互聯網企業
  • 3.數據存取是經過SQL(Structured Query Language結構化查詢語言)
  • 4.最大特色數據安全性方面強(ACID)

非關係型數據庫(NoSQL:Not only SQL)的特色:mongodb

  • 1.不是否認關係型數據庫,而是作關係型數據庫的補充。
  • 2.想作老大,先學會作老二。

時代特色對比:數據庫

    1. web1.0時代

1.1 企業提供內容,用戶瀏覽,因此關係型數據庫夠用,併發並不高,因此不須要nosql。json

    1. web2.0時代

2.1 核心是企業提供平臺,用戶參與提供內容,這個時代關係型數據庫沒法知足需求了。

    1. 2003NoSQL出現

3.1 memcache的誕生,關注的點是性能,可是針對安全性能關注比較低,隨着安全性能需求不斷提高,因此有了redis。

    1. redis的特色

4.1 依然高性能高併發
4.2 數據持久化功能
4.3 支持多數據類型,主從複製和集羣
4.4 管理再也不使用SQL了

4.3.4 NoSQL特性總覽

    1. 不是否認關係型數據庫,而是作關係型數據庫的補充,如今也有部分替代的趨勢mongodb。
    1. 關注高性能,高併發,靈活性,忽略和上述無關的功能。
    1. 如今也在提高安全性和使用功能。
    1. 典型產品:redis(持久化緩存,兩個半天)、MongoDB(最接近關係型數據庫的NoSQL)、memcached。
    1. 管理不適用SQL管理,而是用一些特殊的API或數據接口。

4.3.5 NoSQL的分類、特色、典型產品

  • 1.鍵值(KV)存儲:memcached、redis
  • 2.列存儲(column-oriented):HBASE(新浪、360)Cassandra(200臺服務器集羣)
  • 3.文檔數據庫(document-oriented):MongoDB(最接近關係型數據庫的NoSQL)
  • 4.圖形存儲(Graph):Neo4j

數據庫排行點擊查看排行網站

4.3.6 數據庫產品介紹

Oracle公司產品介紹

大版本 經典版本號
7 7.3.4
8i(internet) 8.1.7
9i 9.2.0.8
10g(grid) 10.2.0.4
11g 11.2.0.三、11.2.0.4
12c(cloud) None
18c None

Oracle的市場應用

  • 1.市場份額第一,趨勢遞減
  • 2.市場空間傳統企業
  • 3.傳統企業也在互聯網化

MySQL數據庫版本介紹

- 1.0
- 5.1
- 5.5
- 5.6
- 5.7
- 8.0

MySQL的市場應用

  • 1.中、大型互聯網公司
  • 2.市場空間:互聯網領域第一
  • 3.趨勢明顯
  • 4.同源產品:MariaDB、PerconaDB

其餘公司產品介紹

    1. 微軟:SQLserver
      1.1 微軟和sysbase合做開發的產品,後來本身開發,windows平臺
      1.2 3、四線小公司,傳統行業在用
    1. IBM:DB2
      2.1 市場佔有量小
      2.2 目前只有:國有銀行(人行,中國銀行,工商銀行等)、中國移動應用
    1. PostgreSQL
    1. MongoDB
    1. Redis

企業使用數據庫狀況

    1. 中國銀行
    1. 中國工商銀行
    1. 江蘇銀行
    1. 浦發銀行
    1. 中國光大銀行

      誰說金融公司不能用MySQL???????

4.4 MySQL發展史

a. 1979年,報表工具Unireg出現。

b. 1985年,以瑞典David Axmark爲首,成立了一家公司(AB前身),ISAM引擎出現。

c. 1990年,提供SQL支持。

d. 1999年-2000年,MySQL AB公司成立,並公佈源碼,開源化。

e. 2000年4月BDB引擎出現,支持事物。

f. 2008年1月16日 MySQL被Sun公司收購。

g. 2009年4月20日Oracle收購Sun公司,MySQL轉入Oracle門下。

4.5 MySQL正在推進世界

4.6 MySQL簡介及產品線

4.6.1 MySQL簡介(特色)

    1. 開源
    1. 社區版免費
    1. 簡單、使用方便、可靠
    1. 穩定、安全
    1. 社區活躍

4.6.2 MySQL產品線

產品線1:

1) 3.26版本 --- 5.2版本

a. 正宗後代

b. CentOS五、6中默認都是5.1版本

c. CentOS7中默認是MariaDB


2) 5.5 --- 5.7 --- 8.0版本

a. 借鑑社區好的貢獻,進一步開發的版本

b. 主流版本:5.5 5.6 5.7

c. 講課版本:5.6


3) MySQL Cluster 6.0版本 & 更高

a. 相似於Oracle RAC(雙主),硬件要求高

b. 通常各大網站沒有人用

產品線2:

1) MariaDB
2) PerconaDB 第三方 Xtrabackup PerconaDB

4.7 MySQL安裝

4.7.1 MySQL安裝方式

rpm、yum安裝

  • 安裝方便、安裝速度快,沒法定製

二進制

  • 不須要安裝,解壓便可使用,不能定製功能

編譯安裝

  • 可定製,安裝慢
  • 四個步驟:
    1 解壓(tar)
    2 生成(./configure)cmake
    3 編譯(make)
    4 安裝(make install)
  • 5.5版本以前:tar ./configure make make install
  • 5.5版本以後:cmake gmake

先編譯,而後定製rpm包,製做yum倉庫,而後yum安裝

  • 簡單,速度快,可定製,比較複雜,製做時間極長

企業中選擇的安裝方式

  • 中小型企業:以上方式均可以,運維偏向編譯,dba偏向二進制 運維也偏向二進制
  • 大型企業:能夠選擇: 先編譯而後定製rpm包,製做yum倉庫,而後yum安裝

4.7.2 編譯安裝MySQL

#cmake
#定製功能:存儲引擎、字符集、壓縮
#定製安裝位置、數據存放位置、文件位置(socket)
#克隆一個模板機(使用CentOS6),克隆完作快照
#IP 10.0.0.51 主機名db01


#下載源
[root@db01 ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@db01 ~]# wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo

#安裝依賴
[root@db01 ~]# yum install -y ncurses-devel libaio-devel autoconf cmake gcc gcc-c++ glibc
 
#下載源碼包和解壓
[root@db01 ~]# wget -q https://downloads.mysql.com/archives/get/file/mysql-5.6.40.tar.gz
[root@db01 ~]# tar xf mysql-5.6.40.tar.gz
 
#進入源碼目錄
[root@db01 ~]# cd mysql-5.6.40/

#建立目錄
[root@db01 mysql-5.6.40]# mkdir /application


#生成編譯文件
[root@db01 mysql-5.6.40]# cmake . -DCMAKE_INSTALL_PREFIX=/application/mysql-5.6.40 \
-DMYSQL_DATADIR=/application/mysql-5.6.40/data \
-DMYSQL_UNIX_ADDR=/application/mysql-5.6.40/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITH_ZLIB=bundled \
-DWITH_SSL=bundled \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLE_DOWNLOADS=1 \
-DWITH_DEBUG=0

#編譯
[root@db01 mysql-5.6.40]# make

#安裝
[root@db01 mysql-5.6.40]# make install

#建立 mysql 用戶
[root@db01 mysql-5.6.40]# useradd mysql -s /sbin/nologin -M

#作軟鏈接
[root@db01 mysql-5.6.40]# ln -s /application/mysql-5.6.40/ /application/mysql

#進入其餘文件目錄
[root@db01 mysql-5.6.40]# cd /application/mysql/support-files/

#拷貝 mysql 的配置文件
[root@db01 support-files]# cp my-default.cnf /etc/my.cnf
cp: overwrite ‘/etc/my.cnf’? y

#拷貝啓動腳本
[root@db01 support-files]# cp mysql.server /etc/init.d/mysqld

#進入初始化目錄
[root@db01 support-files]# cd /application/mysql/scripts/

#初始化 mysql
[root@db01 scripts]# ./mysql_install_db --user=mysql --basedir=/application/mysql --datadir=/application/mysql/data

#建立socket文件的存放目錄tmp
[root@db01 scripts]# mkdir /application/mysql-5.6.40/tmp

#受權:socket文件目錄沒有權限
[root@db01 scripts]# chown -R mysql.mysql /application/mysql*

#添加環境變量(沒有mysql命令,須要添加環境變量)
[root@db01 scripts]# cat /etc/profile.d/mysql.sh
export PATH="/application/mysql/bin:$PATH"
[root@db01 scripts]# source /etc/profile

#啓動 mysql
[root@db01 scripts]# /etc/init.d/mysqld start
Starting MySQL. SUCCESS!

3. 用腳本的systemctl啓動,和開機自啓動
[root@db01 scripts]# cat /usr/lib/systemd/system/mysqld.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=https://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/application/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000

#先停掉服務
[root@db01 ~]# /etc/init.d/mysqld stop 
Shutting down MySQL.. SUCCESS!
 
#啓動服務
[root@db01 ~]# systemctl start mysqld 

#開機自啓動
[root@db01 ~]# systemctl enable mysqld 

4.給數據庫設置密碼
[root@db01 ~]# mysqladmin -uroot -p password "123"
Enter password:   ---此處按回車便可,由於安裝完MySQL密碼爲空
Warning: Using a password on the command line interface can be insecure.
 
#登陸數據庫
[root@db01 ~]# mysql -uroot -p123



#MySQL基本操做及基本優化
#查看庫
mysql> show databases;

#刪庫
mysql> drop database test;

#使用庫
mysql> use mysql

#查看錶
mysql> show tables;

#查看當前所在庫
mysql> select database();

#查看mysql用戶
mysql> select user,host from user;
mysql> select user,host,password from user;

#刪除用戶
mysql> select user,host from user;
mysql> drop user ''@'db02';
mysql> drop user root@db02;
mysql> drop user root@'::1';
mysql> drop user root@'127.0.0.1';

4.7.3 二進制安裝MySQL

下載:二進制包
[root@db01 ~]# wget https://downloads.mysql.com/archives/get/file/mysql-5.6.42-linux-glibc2.12-x86_64.tar.gz

1.解壓
[root@db01 ~]# tar xf mysql-5.6.40-linux-glibc2.12-x86_64.tar.gz

2.移動安裝目錄
[root@db01 ~]# mv mysql-5.6.40-linux-glibc2.12-x86_64 /usr/local/mysql-5.6.40

3.軟連接
[root@db01 ~]# ln -s /usr/local/mysql-5.6.40 /usr/local/mysql

[root@db01 ~]# ll /usr/local/
lrwxrwxrwx.  1 root root  23 7月   9 01:22 mysql -> /usr/local/mysql-5.6.40
drwxr-xr-x. 13 root root 191 7月   9 01:19 mysql-5.6.40

4.建立mysql用戶
[root@db01 ~]# useradd mysql -r

5.進入配置文件和腳本目錄
[root@db01 mysql]#  cd /usr/local/mysql/support-files

6.拷貝配置文件
[root@db01 support-files]# cp my-default.cnf /etc/my.cnf
cp:是否覆蓋"/etc/my.cnf"? y

7.拷貝啓動腳本
[root@db01 support-files]# cp mysql.server /etc/init.d/mysqld

8.進入初始化目錄
[root@db01 scripts]# cd /usr/local/mysql/scripts

9.執行初始化
[root@db01 scripts]# ./mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

--user:指定用戶
--basedir:指定mysql的安裝目錄
--datadir:指定mysql存放數據的目錄(庫,表,表空間,表結構)


正經的mysql:
    information_schema
    performance_schema
    mysql
    test
    
初始化成功:
1.兩個OK
2.查看data目錄是否有數據庫文件  
[root@db01 scripts]# ll /usr/local/mysql/data/
總用量 110600
-rw-rw----. 1 mysql mysql 12582912 7月   9 01:34 ibdata1
-rw-rw----. 1 mysql mysql 50331648 7月   9 01:34 ib_logfile0
-rw-rw----. 1 mysql mysql 50331648 7月   9 01:34 ib_logfile1
drwx------. 2 mysql mysql     4096 7月   9 01:34 mysql
drwx------. 2 mysql mysql     4096 7月   9 01:34 performance_schema
drwxr-xr-x. 2 mysql mysql       20 7月   9 01:19 test


10.啓動MySQL
若是是自定義二進制安裝:須要修改腳本目錄
[root@db03 scripts]# sed -i 's#/usr/local#/application#g' /etc/init.d/mysqld /application/mysql/bin/mysqld_safe

[root@db01 scripts]# /etc/init.d/mysqld start
提示:日誌記錄的位置.
Starting MySQL.Logging to '/usr/local/mysql/data/db01.err'.
SUCCESS! 

11.添加環境變量
[root@db01 scripts]# vim /etc/profile.d/mysql.sh
export PATH="/usr/local/mysql/bin:$PATH"

12.加載環境變量
[root@db01 scripts]# source /etc/profile

13.檢查MySQL進程
[root@db01 scripts]# ps -ef|grep [m]ysql

14.檢查MySQL端口
[root@db01 scripts]# netstat -lntup|grep 3306

15.CentOS7管理方式:

編輯mysqld啓動腳本
[root@db01 scripts]# vim /usr/lib/systemd/system/mysqld.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=https://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
相關文章
相關標籤/搜索