MariaDB數據庫管理系統是MySQL的一個分支,主要由開源社區在維護,採用GPL受權許可。 開發這個分支的緣由之一是:甲骨文公司收購了MySQL後,有將MySQL閉源的潛在風險,所以社區採用分支的方式來避開這個風險。 MariaDB的目的是徹底兼容MySQL,包括API和命令行,使之能輕鬆成爲MySQL的代替品。
Red Hat Enterprise Linux/CentOS 7.0 發行版已將默認的數據庫從 MySQL 切換到 MariaDB。python
找到yum倉庫目錄,建立repo文件mysql
一、首先在 RHEL/CentOS 和 Fedora 操做系統中添加 MariaDB 的 YUM 配置文件 MariaDB.repo 文件。 #編輯建立mariadb.repo倉庫文件 vi /etc/yum.repos.d/MariaDB.repo
二、添加repo倉庫配置 [mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.1/centos7-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1
3.此時yum會自動的加載這個repo文件,讀取內容
4.下載mariadb數據庫,服務端和客戶端 yum install MariaDB-server MariaDB-client
啓動mariadb相關命令sql
mariadb數據庫的相關命令是: systemctl start mariadb #啓動MariaDB systemctl stop mariadb #中止MariaDB systemctl restart mariadb #重啓MariaDB systemctl enable mariadb #設置開機啓動
啓動後正常使用mysql數據庫
systemctl start mariadb
在確認 MariaDB 數據庫軟件程序安裝完畢併成功啓動後請不要當即使用。爲了確保數據 庫的安全性和正常運轉,須要先對數據庫程序進行初始化操做。這個初始化操做涉及下面 5 個 步驟。 ➢ 設置 root 管理員在數據庫中的密碼值(注意,該密碼並不是 root 管理員在系統中的密 碼,這裏的密碼值默認應該爲空,可直接按回車鍵)。 ➢ 設置 root 管理員在數據庫中的專有密碼。 ➢ 隨後刪除匿名帳戶,並使用 root 管理員從遠程登陸數據庫,以確保數據庫上運行的業 務的安全性。 ➢ 刪除默認的測試數據庫,取消測試數據庫的一系列訪問權限。 ➢ 刷新受權列表,讓初始化的設定當即生效。
確保mariadb服務器啓動後,執行命令初始化vim
mysql_secure_installation
中文編碼設置,編輯mysql配置文件/etc/my.cnf,下入如下內容centos
\s #查看數據庫編碼 #修改mysql的配置文件,讓它支持中文 #經過yum安裝的配置文件在/etc/my.cnf 配置內容以下: #服務端的編碼添加以下內容 [mysqld] character-set-server=utf8 collation-server=utf8_general_ci #客戶端的編碼以下 [client] default-character-set=utf8 [mysql] default-character-set=utf8
重啓mariadb生效編碼安全
systemctl restart mariadb
生產環境裏不會死磕root用戶,爲了數據庫的安全以及和其餘用戶協同管理數據庫,就須要建立其餘數據庫帳戶,而後分配權限,知足工做需求。服務器
#修改mysql密碼 MariaDB [(none)]> set password = PASSWORD('redhat123');
MariaDB [(none)]> create user yuchao@'127.0.0.1' identified by 'redhat123'; MariaDB [(none)]> use mysql; MariaDB [mysql]> select host,user,password from user where user='yuchao';
切換普通用戶yuchao,查看數據庫信息,發現沒法看到完整的數據庫列表架構
[root@master ~]# mysql -uyuchao -p -h 127.0.0.1 MariaDB [(none)]> show databases;
mysql使用grant命令對帳戶進行受權,grant命令常見格式以下併發
grant 權限 on 數據庫.表名 to 帳戶@主機名 對特定數據庫中的特定表受權 grant 權限 on 數據庫.* to 帳戶@主機名 對特定數據庫中的全部表給與受權 grant 權限1,權限2,權限3 on *.* to 帳戶@主機名 對全部庫中的全部表給與多個受權 grant all privileges on *.* to 帳戶@主機名 對全部庫和全部表受權全部權限
退出數據庫,使用root登陸,開始權限設置
[root@master ~]# mysql -uroot -p MariaDB [(none)]> use mysql; MariaDB [(none)]> grant all privileges on *.* to yuchao@127.0.0.1; MariaDB [mysql]> show grants for yuchao@127.0.0.1;
移除權限
MariaDB [(none)]> revoke all privileges on *.* from yuchao@127.0.0.1;
權限配置
遠程鏈接設置哦設置全部庫,全部表的全部權限,賦值權限給全部ip地址的root用戶 mysql > grant all privileges on *.* to root@'%' identified by 'password'; #建立用戶 mysql > create user 'username'@'%' identified by 'password'; #刷新權限 flush privileges;
備份命令: mysqldump -uroot -p --all-databases > /opt/alldb.sql #恢復數據的命令 方式1: 進入數據庫後,用source命令讀取sql文件 [mysql] > source /opt/alldb.sql 方式2: 用登陸命令導入數據 mysql -uroot -p < /opt/alldb.sql
MySQL數據庫的主從複製方案,是其自帶的功能,而且主從複製並非複製磁盤上的數據庫文件,而是經過binlog日誌複製到須要同步的從服務器上。
MySQL數據庫支持單向、雙向、鏈式級聯,等不一樣業務場景的複製。在複製的過程當中,一臺服務器充當主服務器(Master),接收來自用戶的內容更新,而一個或多個其餘的服務器充當從服務器(slave),接收來自Master上binlog文件的日誌內容,解析出SQL,從新更新到Slave,使得主從服務器數據達到一致。
主從複製的邏輯有如下幾種
一主一從,單向主從同步模式,只能在Master端寫入數據
一主多從
雙主主複製邏輯架構,此架構能夠在Master1或Master2進行數據寫入,或者兩端同事寫入(特殊設置)
在生產環境中,MySQL主從複製都是異步的複製方式,即不是嚴格的實時複製,可是給用戶的體驗都是實時的。 MySQL主從複製集羣功能使得MySQL數據庫支持大規模高併發讀寫成爲可能,且有效的保護了服務器宕機的數據備份。
應用場景
利用複製功能當Master服務器出現問題時,咱們能夠人工的切換到從服務器繼續提供服務,此時服務器的數據和宕機時的數據幾乎徹底一致。 複製功能也可用做數據備份,可是若是人爲的執行drop,delete等語句刪除,那麼從庫的備份功能也就失效了.
主從機制實現原理
環境準備,兩臺機器分別安裝好mariadb數據庫
機器1:192.168.61.130 (master機器) 1.修改mysql的配置文件,開啓binlog日誌功能 vim /etc/my.cnf,寫入以下信息 [mysqld] # 服務的惟一標識(主從之間都必須不一樣) server-id=1 # 啓動二進制日誌名稱爲mysql-bin log-bin=s20mysql-bin 2.重啓數據庫生效binlog日誌文件 systemctl restart mariadb 3.在主庫上,建立一個用戶,用於主從複製 create user 'songzhixue'@'%' identified by '123456'; 4.給這個songzhixue帳號,授予slave的身份 grant replication slave on *.* to 'songzhixue'@'%'; 5.進行鎖表,防止數據寫入 flush table with read lock; 6.導出此時的主庫數據,發送給從庫,保證起點一致性 mysqldump -uroot -p --all-databases > /tmp/alldb.sql scp /tmp/alldb.sql root@192.168.16.49:/tmp/ 7.當從庫配置好複製以後,回到這裏解鎖,寫入數據,查看從庫數據是否寫入
機器2:192.168.61.131 (slave主機) 1.修改從庫機器的配置文件,開啓id,以及只讀模式 vim /etc/my.cnf 以下 [mysqld] server-id=1000 # 只讀模式 read-only=true 2.重啓從庫 systemctl restart mariadb 3.一條命令,創建主從之間的複製關係 #查看主庫的狀態【show master status】 MariaDB [(none)]> show master status; +---------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +---------------------+----------+--------------+------------------+ | s20mysql-bin.000001 | 627 | | | +---------------------+----------+--------------+------------------+ 1 row in set (0.01 sec) #File是二進制日誌文件名,Position 是日誌開始的位置。從庫是根據主庫的日誌來複制的; #配置下面的參數 #主庫的ip change master to master_host='192.168.61.130', #主庫建立的用於主從複製的用戶名 master_user='songzhixue', #主庫建立的用於主從複製的密碼 master_password='123456', #二進制日誌文件名 master_log_file='s20mysql-bin.000001', #日誌開始的位置 master_log_pos=627; 4.開啓從庫的slave功能 # 防火牆必須在關閉的狀態下才能夠執行下面的命令 stop salve; start salve; 5.查看從庫的狀態,檢測是否複製成功 show slave status\G MariaDB [(none)]> show slave status\G; *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.61.130 Master_User: songzhixue Master_Port: 3306 Connect_Retry: 60 Master_Log_File: s20mysql-bin.000001 Read_Master_Log_Pos: 813 Relay_Log_File: bogon-relay-bin.000003 Relay_Log_Pos: 726 Relay_Master_Log_File: s20mysql-bin.000001 Slave_IO_Running: Yes Slave_SQL_Running: Yes 查看以下兩個參數是不是yes,主從複製即爲正確 Slave_IO_Running: Yes Slave_SQL_Running: Yes
1
2
3
|
root
# 表示liunx上的用戶名
-
p
#指定密碼
-
h
# 指定鏈接的主機地址
|