MariaDB數據庫管理系統是MySQL的一個分支,主要由開源社區在維護,採用GPL受權許可。php
開發這個分支的緣由之一是:甲骨文公司收購了MySQL後,有將MySQL閉源的潛在風險,所以社區採用分支的方式來避開這個風險。python
MariaDB的目的是徹底兼容MySQL,包括API和命令行,使之能輕鬆成爲MySQL的代替品。mysql
Red Hat Enterprise Linux/CentOS 7.0 發行版已將默認的數據庫從 MySQL 切換到 MariaDB。linux
- 源碼編譯安裝nginx
- 下載rpm包安裝redis
- yum安裝sql
- 路徑有區別,yum安裝的軟件是他自定義的,源碼編譯安裝的軟件./configure --preifx=軟件安裝的絕對路徑;數據庫
- yum倉庫的軟件,版本可能比較低,而源碼編譯安裝,版本可控;apache
- 編譯安裝的軟件,支持第三方功能擴展./configure 這裏能夠加上不少參數,定製功能;vim
yum倉庫之間的區別?
- 咱們以前使用過阿里雲的yum倉庫,其中有咱們須要的一些軟件包;
- 假設要下載mysql軟件,則mysql官網,也會提供rpm包,源碼包,以及yum源,供給下載;
阿里雲提供的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 管理員從遠程登陸數據庫,以確保數據庫上運行的業
務的安全性。
- 刪除默認的測試數據庫,取消測試數據庫的一系列訪問權限。
- 刷新受權列表,讓初始化的設定當即生效。
具體效果以下圖:
進入數據庫,輸入 \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的編碼
|
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
|
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
|
Redis 是一個開源(BSD許可)的,內存中的數據結構存儲系統,它能夠用做數據庫、緩存和消息中間件。
Redis是VMware開發的開源免費的KV型NoSql緩存產品;
Redis具備很好的性能,最多能夠提供10萬次/秒的讀寫;
目前新浪微博團隊組建了世界上最大規模的Redis集羣;
高速緩存介紹:
- 高速緩存利用內存保存數據,讀寫速度遠超硬盤;
- 高速緩存能夠減小I/O操做,下降I/O壓力;
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
-
v
"^#"
redis.conf | grep
-
v
"^$"
# 過濾出文件中的非空白行和非註釋行
|
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存取數據了,以下: