Linux--5 mariadb和redis的安裝

1、MYSQL(mariadb)

  MariaDB數據庫管理系統是MySQL的一個分支,主要由開源社區在維護,採用GPL受權許可。php

  開發這個分支的緣由之一是:甲骨文公司收購了MySQL後,有將MySQL閉源的潛在風險,所以社區採用分支的方式來避開這個風險。python

  MariaDB的目的是徹底兼容MySQL,包括API和命令行,使之能輕鬆成爲MySQL的代替品。mysql

  Red Hat Enterprise Linux/CentOS 7.0 發行版已將默認的數據庫從 MySQL 切換到 MariaDB。linux

一、安裝方式的比較

  1)咱們知道linux上安裝軟件的方式有以下幾種:

    - 源碼編譯安裝nginx

    - 下載rpm包安裝redis

    - yum安裝sql

  2)yum和源碼編譯安裝的區別?

    - 路徑有區別,yum安裝的軟件是他自定義的,源碼編譯安裝的軟件./configure --preifx=軟件安裝的絕對路徑;數據庫

    - yum倉庫的軟件,版本可能比較低,而源碼編譯安裝,版本可控;apache

    - 編譯安裝的軟件,支持第三方功能擴展./configure  這裏能夠加上不少參數,定製功能;vim

  yum倉庫之間的區別?

    - 咱們以前使用過阿里雲的yum倉庫,其中有咱們須要的一些軟件包;

    - 假設要下載mysql軟件,則mysql官網,也會提供rpm包,源碼包,以及yum源,供給下載;

二、安裝MariaDB的步驟

  阿里雲提供的yum倉庫和epel源倉庫,它們都也有mariadb,可是版本可能會很低,因此咱們下面就選用mariadb的官方yum源。

  第一步:添加 MariaDB yum 倉庫

1
vi  / etc / yum.repos.d / MariaDB.repo            編輯建立mariadb.repo倉庫文件
將下面代碼寫入建立的MariaDB.repo倉庫中,即配置官方的mariadb的yum源
  [mariadb]
  name = MariaDB
  baseurl = http://yum.mariadb.org/10.1/centos7-amd64
  gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
  gpgcheck=1

  第二步:在 CentOS 7 中使用yum命令安裝 MariaDB

   當 MariaDB 倉庫地址添加好後,你能夠經過下面的一行命令輕鬆安裝 MariaDB。

1
yum install MariaDB - server MariaDB - client  - y     安裝mariadb服務端和客戶端

    注意:因爲是國外鏡像源,所以下載速度可能很慢

    若不想使用MariaDB官方的yum源,而選擇使用阿里雲的yum源中的mariadb,則將上述的Mariadb.repo刪除,並清空yum緩存,而後使用以下命令從阿里雲的yum下載

1
yum install mariadb - server  mariadb  - y           注意阿里雲的包名是小寫,官方是大寫

  第三步:啓動mariadb相關命令

1
2
3
4
systemctl start mariadb           #啓動MariaDB
systemctl stop mariadb            #中止MariaDB
systemctl restart mariadb         #重啓MariaDB
systemctl enable mariadb          #設置開機啓動

    此時數據庫客戶端即可以去鏈接數據庫,以下:

  第四步:初始化mysql

    在確認 MariaDB 數據庫軟件程序安裝完畢併成功啓動後請不要當即使用。爲了確保數據庫的安全性和正常運轉,須要先對數據庫程序進行初始化操做。確保mariadb服務器啓動後,執行以下命令初始化:

1
mysql_secure_installation

    這個初始化操做涉及下面 5 個步驟:

      - 設置 root 管理員在數據庫中的密碼值(注意,該密碼並不是 root 管理員在linux系統中的密碼,這裏的密碼值默認應該爲空,可直接按回車鍵)。

      - 設置 root 管理員在數據庫中的專有密碼。

      - 隨後刪除匿名帳戶,並使用 root 管理員從遠程登陸數據庫,以確保數據庫上運行的業

務的安全性。

      - 刪除默認的測試數據庫,取消測試數據庫的一系列訪問權限。

      - 刷新受權列表,讓初始化的設定當即生效。

    具體效果以下圖:

三、設置mysql的中文編碼支持,修改/etc/my.cnf

  進入數據庫,輸入 \s 查看數據庫編碼,以下圖:

1
vi  / etc / my.cnf           編輯文件 / etc / my.cnf,在[mysqld]下邊寫入下面兩行代碼
  [mysqld]
  character-set-server=utf8
  collation-server=utf8_general_ci
1
systemctl restart mariadb         重啓mariadb服務,讀取my.cnf新配置

  登陸數據庫,再次\s查看字符編碼,此時都爲utf8,以下圖:

  注意:此時若編碼問題還沒解決,那問題應該是數據庫建立時沒有指定編碼,默認了非utf8編碼,按以上方法修改完/etc/my.cnf文件後再進行建立的數據庫編碼就是utf8了。

1
MariaDB [(none)]> show create database s15;     查看數據庫s15的編碼

四、mysql基本命令

1
MariaDB [(none)]>  set  password  =  PASSWORD( 'redhat123' );         修改mysql密碼

  生產環境裏不會死磕root用戶,爲了數據庫的安全以及和其餘用戶協同管理數據庫,就須要建立其餘數據庫帳戶,而後分配權限,知足工做需求       

1
2
3
MariaDB [(none)]> create user wll@ '127.0.0.1'  identified by  'wll123' ;  建立用戶wll
MariaDB [(none)]> use mysql;              切換到mysql數據庫下,其中user表存放用戶信息
MariaDB [mysql]> select host,user,password  from  user where user = 'wll' ; 查看用戶信息

  切換普通用戶wll,查看數據庫信息,發現沒法看到完整的數據庫列表

1
2
[root@master ~] # mysql -uwll -p -h 服務器地址           以普通用戶wll身份登陸數據庫
MariaDB [(none)]> show databases;      查看數據庫信息,沒法看到完整的數據庫列表

五、數據庫權限設置

  1)mysql使用grant命令對帳戶進行受權,grant命令常見格式以下:

  grant 權限 on 數據庫.表名 to 帳戶@主機名;   對特定數據庫中的特定表受權
  grant 權限 on 數據庫.* to 帳戶@主機名;     對特定數據庫中的全部表受權
  grant 權限1,權限2,權限3 on *.* to 帳戶@主機名;  對全部庫中的全部表給予多個受權
  grant all privileges on *.* to 帳戶@主機名;      對全部庫和全部表受權全部權限

    使用root用戶登陸,進行權限設置

1
[root@localhost ~] # mysql -uroot -p

    授予用戶wll操做全部數據庫的全部表的全部權限

1
2
3
4
MariaDB [(none)]> grant  all  privileges on  * . *  to wll@ 127.0 . 0.1 ;  
MariaDB [(none)]> flush privileges;              刷新權限表
MariaDB [(none)]> use mysql;
MariaDB [mysql]> show grants  for  wll@ 127.0 . 0.1 ;

  2)受權配置

    遠程鏈接設置,設置全部庫,全部表的全部權限,賦值權限給全部ip地址的root用戶

1
2
3
> grant  all  privileges on  * . *  to root@ '%'  identified by  'password' ;
> create user  'username' @ '%'  identified by  'password' ;     建立用戶
> flush privileges;            刷新權限

六、數據庫備份與恢復

  mysqldump命令用於備份數據庫數據,導出當前數據庫中的全部db到一個文件,以下:

1
[root@localhost ~] # mysqldump -u root -p --all-databases > /tmp/db.dump

  進入mariadb數據庫,刪除一個db,以下:

1
2
[root@localhost ~] # mysql -uroot -p
MariaDB [(none)]> drop database s15;

  進行數據恢復,把剛纔重定向備份的數據庫文件導入到mysql中,再查看數據庫顯示已經恢復

  方式一:經過命令方式導入

1
[root@localhost ~] # mysql -uroot -p < /tmp/db.dump

  方式二:登陸數據庫後經過source導入

1
2
[root@localhost ~] # mysql -uroot -p
MariaDB [(none)]> source  / tmp / db.dump

 

2、mysql主從複製

 

  MySQL數據庫的主從複製方案,是其自帶的功能,而且主從複製並非複製磁盤上的數據庫文件,而是經過binlog日誌複製到須要同步的從服務器上。

 

  MySQL數據庫支持單向、雙向、鏈式級聯等不一樣業務場景的複製。在複製的過程當中,一臺服務器充當主服務器(Master),接收來自用戶的內容更新,而一個或多個其餘的服務器充當從服務器(slave),接收來自Master上binlog文件的日誌內容,解析出SQL,從新更新到Slave,使得主從服務器數據達到一致。

 

  主從複製的邏輯有如下幾種:

 

  1)一主一從,單向主從同步模式,只能在Master端寫入數據;

 

 

  2)一主多從;

 

 

   3)雙主複製邏輯架構,此架構能夠在Master1或Master2進行數據寫入,或者兩端同時寫入(特殊設置);

 

 

 

  在生產環境中,MySQL主從複製都是異步的複製方式,即不是嚴格的實時複製,可是給用戶的體驗都是實時的。MySQL主從複製集羣功能使得MySQL數據庫支持大規模高併發讀寫成爲可能,且有效的保護了服務器宕機的數據備份。

 

  應用場景:利用複製功能當Master服務器出現問題時,咱們能夠人工的切換到從服務器繼續提供服務,此時服務器的數據和宕機時的數據幾乎徹底一致。複製功能也可用做數據備份,可是若是人爲的執行drop,delete等語句刪除,那麼從庫的備份功能也就失效了。

 

  主從機制實現原理,以下圖:

 

 

    1)master將改變記錄到二進制日誌(binary log)中(這些記錄叫作二進制日誌事件,binary log events);

 

    2)slave將master的binary log events拷貝到它的中繼日誌(relay log);

 

    3)slave重作中繼日誌中的事件,將改變反映它本身的數據;

 

  練習主從複製架構:mysql的主從複製架構,須要準備兩臺機器,而且能夠通訊,安裝好2個mysql,保持版本一致性。

 

1
mysql  - V                    # 查看數據庫版本

 

一、master主庫配置

 

1
2
systemctl status mariadb                 # 查看數據庫狀態
systemctl stop mariadb                   # 若數據庫開啓,則中止mariadb服務

 

  在主庫的配置文件/etc/my.cnf文件中寫入開啓主庫的參數

 

1
vi  / etc / my.cnf                        # 編輯配置文件/etc/my.cnf,寫入下面兩行代碼

 

server-id=1                           # 一個標註,表明主庫的身份id
log-bin=s15mysql-bin                   # 那個binlog的文件名

 

1
2
3
[root@localhost ~] # systemctl restart mariadb           # 重啓mairadb,讀取配置文件
[root@localhost ~] # mysql -uroot -p                      # 登陸數據庫
MriaDB [(none)]> show master status;            # 查看日誌文件的名字,以及數據起始點

 

二、master主庫添加從庫帳號

 

  建立用於主從數據同步的帳戶

 

1
MriaDB [(none)]> create user  'yuanhao' @ '%'  identified by  'passwd' ;

 

  授予主從同步帳號的,複製數據的權限

 

1
MriaDB [(none)]> grant replication slave on  * . *  to  'yuanhao' @ '%' ;

 

  進行數據庫的鎖表,防止數據寫入,從庫導入數據後解鎖

 

1
2
MriaDB [(none)]> flush table with read lock;        # 鎖表
MriaDB [(none)]> unlock tables;                      # 解鎖表,從庫同步完數據後解鎖

 

  將數據導出

 

1
[root@localhost ~] # mysqldump -u root -p --all-databases >  /tmp/zhucong.dump

 

  而後將主庫的數據,發送給從庫

 

1
[root@localhost ~] # scp /tmp/zhucong.dump root@從庫:/tmp/

 

三、slave從庫配置

 

  編輯配置文件/etc/my.cnf,寫入從庫的身份信息

 

1
vi  / etc / my.cnf            # 編輯文件,寫入下面代碼

 

[mysqld]
server-id=10              # 標註從庫身份,區別開主庫便可

 

  檢查一下主庫和從庫的參數信息

 

1
2
MriaDB [(none)]> show variables like  'server_id' ;        # 查看server_id
MriaDB [(none)]> show variables like  'log_bin' ;        # 查看是否開啓log_bin

 

  登陸從庫的mysql,導入主庫的數據,保持數據一致性,執行完畢後即可解鎖了

 

  方式一:

 

1
2
[root@localhost ~] # mysql -uroot -p
MriaDB [(none)]> source  / tmp / zhucong.dump

 

  方式二:

 

1
[root@localhost ~] # mysql -uroot -p < /tmp/zhucong.dump

 

  注意:導入前可先將從庫中數據刪除以確保數據一致!

 

  經過一條命令,開啓主從同步

 

1
2
3
4
5
MriaDB [(none)]> change master to master_host = '192.168.13.78' ,
- > master_user = 'yuanhao' ,
- > master_password = 'passwd' ,
- > master_log_file = 's15mysql-bin.000001' ,
- > master_log_pos = 571 ;

 

  開啓從庫的slave同步

 

1
MriaDB [(none)]> start slave;

 

  查看主從同步的狀態

 

1
MriaDB [(none)]> show slave status\G;

 

  查看兩條參數 ,確保主從正常

 

1
2
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

 

3、redis

 

  Redis 是一個開源(BSD許可)的,內存中的數據結構存儲系統,它能夠用做數據庫、緩存和消息中間件。

 

  Redis是VMware開發的開源免費的KV型NoSql緩存產品;

 

  Redis具備很好的性能,最多能夠提供10萬次/秒的讀寫;

 

  目前新浪微博團隊組建了世界上最大規模的Redis集羣;

 

 

  高速緩存介紹:

 

    - 高速緩存利用內存保存數據,讀寫速度遠超硬盤;  

 

    - 高速緩存能夠減小I/O操做,下降I/O壓力;

 

 

一、yum安裝(前提是要配置好阿里雲yum源,epel源)

 

1
yum  list  redis             # 查看是否有redis包,以下圖

 

 

1
2
3
4
5
6
yum install redis  - y           # 安裝redis
systemctl start redis         # 啓動redis服務端,注意:使用yum安裝的可使用systemctl
netstat  - tunlp|grep redis     # 查看redis端口狀態,如有結果則表示已經開啓redis服務
redis - cli                # redis 客戶端工具
127.0 . 0.1 : 6379 > ping
PONG

 

  進入交互式環境,執行ping,返回pong表示安裝成功,以下圖:

 

 

二、源碼編譯安裝

  編譯安裝的優點是:

 

    - 編譯安裝時能夠指定擴展的module(模塊),php、apache、nginx都是同樣有不少第三方擴展模塊,如mysql,編譯安裝時候,若是須要就定製存儲引擎(innodb,仍是MyIASM);

 

    - 編譯安裝能夠統一安裝路徑,linux軟件約定安裝目錄在/opt/下面;

 

    - 軟件倉庫版本通常比較低,編譯源碼安裝能夠根據需求,安裝最新的版本;

 

  第一步:下載redis源碼包

 

1
[root@localhost opt] # wget http://download.redis.io/releases/redis-4.0.10.tar.gz

 

  第二步:解壓縮

 

1
[root@localhost opt] # tar -zxf redis-4.0.10.tar.gz

 

  第三步:切換redis源碼目錄

 

1
2
[root@localhost opt] # cd redis-4.0.10
[root@localhost redis - 4.0 . 10 ] # ls           # 查看redis-4.0.10中文件

 

  注意:上面解壓縮源碼包後已經有了Makefile文件,以下圖,因此下一步直接執行make編譯便可

 

 

  第四步:編譯源文件

 

1
[root@localhost redis - 4.0 . 10 ] # make && make install

 

  第五步:指定配置文件/opt/redis-4.0.10/redis.conf啓動redis

 

1
[root@localhost redis - 4.0 . 10 ] # redis-server redis.conf     啓動redis,以下圖:

 

 

  咱們發現啓動redis服務器,終端hung住,要再開一個終端進行redis操做,咱們能夠經過開啓redis的後臺服務,使開啓redis再也不獨佔一個終端,這隻須要咱們修改redis.conf文件中的daemonize參數爲yes,以下:

 

  vim /opt/redis-4.0.10/redis.conf           # 編譯redis的配置文件
  將文件中的daemonize no    改成 daemonize yes

 

  注意:因爲發現有些同窗,在使用雲服務器時,安裝的redis3.0+版本都關閉了protected-mode(保護模式),於是都遭遇了挖礦病毒的攻擊,使得服務器99%的佔用率!!

 

  所以咱們在使用redis時候,最好更改默認端口,而且使用redis密碼(redis沒有用戶概念,redis只有密碼)登陸。配置文件redis.conf中的默認參數配置以下:

 

1
grep  - "^#"   redis.conf |  grep   - "^$"           # 過濾出文件中的非空白行和非註釋行

 

 

  1)更改bind參數,讓redis能夠遠程訪問

 

  bind 0.0.0.0

 

  2)更改redis的默認端口

 

  port 6380      # 也能夠改成其餘端口

 

  3)使用redis的密碼進行登陸

 

  requirepass xxx                   設置登陸redis的密碼是xxx
  注意:redis.conf文件中requirepass是註釋掉的參數,放開註釋,後邊寫上密碼便可

 

  第六步:經過新的端口和密碼登陸redis

 

  方式一:

 

1
2
3
[root@localhost ~] # redis-cli -p 6380             # 登陸redis服務器
127.0 . 0.1 : 6380 > auth xxx                      # 登陸後,auth和剛設置的密碼便可登陸redis
OK           

 

  方式二(交互式的參數登陸數據庫,暴漏密碼,不安全):

 

1
[root@localhost ~] # redis-cli -p 6380 -a xxx

 

  第七步:使用redis

 

    登陸後就可使用redis存取數據了,以下:

 

相關文章
相關標籤/搜索