1 鏈接數據庫html
mysql -u root -p -h 127.0.0.1
mysql -u root -p -h 192.168.12.60
2 授予遠程鏈接的權限mysql
grant all privileges on *.* to root@"%" identified by "centos"
3 修改root用戶的密碼redis
先進入mysql的交互式模式
set password = PASSWORD('centos');
4 建立mysql用戶sql
create user liulaoshi@"%" identified by "lls666"
5 給予劉老師查詢全部庫和全部表的權限數據庫
grant select on *.* to liulaoshi@"%" identified by "lls666"
6.查詢mysql庫中的用戶信息vim
use mysql; select host,user,password from user;
7.再給劉老師建立全部庫和全部表的權限, 再給修改權限,再加上刪除權限centos
grant create on *.* to liulaoshi@"%" identified by "lls666" grant update on *.* to liulaoshi@"%" identified by "lls666" grant delete on *.* to liulaoshi@"%" identified by "lls666"
8 授予mysql權限的語法服務器
mysql使用grant命令對帳戶進行受權,grant命令常見格式以下 grant 權限 on 數據庫.表名 to 帳戶@主機名 對特定數據庫中的特定表受權 grant 權限 on 數據庫.* to 帳戶@主機名 對特定數據庫中的全部表給與受權 grant 權限1,權限2,權限3 on *.* to 帳戶@主機名 對全部庫中的全部表給與多個受權 grant all privileges on *.* to 帳戶@主機名 對全部庫和全部表受權全部權限
9 移除劉老師的建立權限架構
revoke create on *.* from xiaochun@"%" identified by 'lls666'; revoke delete on *.* from xiaochun@"%" identified by 'lls666';
10.數據庫的備份與恢復 #備份app
mysqldump -u root -p --all-databases > /tmp/db.sql
備份單個數據庫
mysqldump -u root -p luffycity > /tmp/luffycity.sql
#數據導入,方式有3種
第一種方法:
進入mysql交互模式
source /tmp/luffycity.sql;
第二種方法
mysql -u root -p < /tmp/luffycity.sql
第三種方法
navicat 第三方工具
步驟詳解:
1. 主數據庫寫入數據以後, 會有data changes(數據變化)記錄 2. 有變化記錄以後,將增刪改的一些sql語句記錄到本地的Binary log(二進制日誌)中 3. 從庫會一直開啓着一個線程 4. 經過線程去讀取這個二進制日誌的內容 5. 從庫會將數據寫入到本身的Relay log(中繼日誌)中 6. 從庫會將中繼日誌中的操做轉化爲SQL thread(SQL語句) 7. 經過轉化的SQL語句寫入到本身的數據庫, 兩邊的數據就一致了
1 準備兩臺機器
192.168.12.60 # 主服務器master(可讀可寫) 192.168.12.71 # 從服務器slave(可讀)
實際工做中數據庫讀取操做比較多,因爲從服務器是讀,因此從服務器的配置要強悍一些
2 兩臺機器上分別安裝mariadb數據庫
192.168.12.60 用戶名: root 密碼: centos 192.168.12.71 用戶名: root 密碼: centos
3 在主數據庫(192.168.12.56)上操做
停mariadb
systemctl stop mariadb
4 修改主數據庫的配置文件
vim /etc/my.cnf 添加如下內容 [mysqld] # 若是配置文件裏面有這一行,就只須要加如下兩行配置就能夠了 server-id=1 log-bin=qishi2-logbin
5 重啓主數據庫
systemctl restart mariadb
6 建立主從複製用戶帳號
create user 'pig'@'%' identified by 'centos';
7 給從庫帳號受權,說明給tiger從庫複製的權限,在10.0.0.8機器上覆制
grant replication slave on *.* to 'pig'@'%';
8 實現對主數據庫鎖表只讀,防止數據寫入,數據複製失敗
flush table with read lock;
9 查看並記錄主數據庫的狀態
show master status;
10 確認主數據庫是否已經成功鎖表
11 導出主數據庫的數據爲alldb.sql
mysqldump -u root -p --all-databases > /opt/alldb.sql
12 把這個數據庫文件拷貝到從數據庫的/opt目錄下
scp /opt/alldb.sql 192.168.12.71:/opt/
13 中止從數據庫服務
systemctl stop mariadb
14 修改從數據庫的配置文件
vim /etc/my.cnf 添加如下配置 [mysqld] server-id=5 read-only=true
15 啓動從數據庫服務
systmectl start mariadb
16 在從 庫上導入主數據庫數據
mysql -u root -p
source /opt/alldb.sql
17 如今,主從兩臺數據庫的數據就徹底一致
18 配置複製的參數,Slave從庫鏈接Master主庫的配置(最重要的一步)
change master to master_host='192.168.12.60', master_user='pig', master_password='centos', master_log_file='qishi2-logbin.000001', master_log_pos=466;
19 啓動從庫的同步開關,測試主從複製的狀況
start slave
20 查看從庫的狀態
21 導出數據完畢,並配置好從庫開啓主從同步後,再解鎖主庫,恢復可寫;
unlock tables;
22 驗證主從複製狀況
在主庫上建立數據,查看從庫數據同步狀態
23 在主庫上給予qihang用戶select的權限, 並刷新受權表
grant select on *.* to pig@"%" identified by "centos"; flush privileges;
24 在從庫上登陸qihang用戶, 並嘗試建立一個庫
create database aaaa; ERROR 1290 (HY000): The MariaDB server is running with the --read-only option so it cannot execute this statement
25 驗證主從讀寫分離狀態
26 從庫上提示read-only表示主從同步讀寫分離已經成功完成
redis發佈訂閱
發佈者
publish xinwen 66nouyou
訂閱者
sub
redis是一個內存型的數據庫
斷電數據會消失
重啓服務數據會消失
重啓服務器數據會消失
mysql的數據存在硬盤中,可是數據是存在哪一個路徑下呢?
/var/lib/mysql
RDB持久化配置:
1 建立redis配置文件
vim /opt/redis_conf/reids-6379.conf
寫入如下配置
port 6379 daemonize yes dir /opt/data/6379 pidfile /opt/data/6379/redis.pid loglevel notice logfile "/opt/data/6379/redis.log" protected-mode yes dbfilename dbmp.rdb save 900 1 save 300 10 save 60 10000
2 進入redis 數據庫,建立幾條數據,並使用save命令開啓rdb持久化
redis-cli set name liujie set age 18 set sex nam save # 開啓rdb持久化, 也能夠不用
1 修改reids配置文件
vim /opt/redis_conf/redis-6379.con
加入如下兩行配置
appendonly yes
appendfsync everysec
保存退出
2 重啓redis服務
pkill reids
redis-server /opt/redis_conf/redis-6379.conf
3 驗證appendonly.aof文件裏面的數據和redis裏面的數據是否健在
1 配置RDB持久化,確保沒有AOF的配置
daemonize yes port 6379 logfile /data/6379/redis.log dir /data/6379 dbfilename dbmp.rdb save 900 1 #rdb機制 每900秒 有1個修改記錄 save 300 10 #每300秒 10個修改記錄 save 60 10000 #每60秒內 10000修改記錄
2啓動redis服務端
redis-server redis.conf
3 登陸redis-cli插入數據,手動持久化
127.0.0.1:6379> set name tiger OK 127.0.0.1:6379> set age 18 OK 127.0.0.1:6379> set addr daxuecheng OK 127.0.0.1:6379> save OK
4 檢查RDB文件
5 備份RDB文件
6 執行命令,開啓AOF持久化
CONFIG set appendonly yes # 開啓AOF功能 CONFIG SET save "" # 關閉RDB功能
7 驗證舊的RDB數據庫數據是否轉入AOF, 以及AOF持久化文件是否正常寫入
1 準備三個redis配置文件
cd /opt/redis_conf redis-6380.conf # 主數據庫master redis-6381.conf # 從庫slave redis-6382.conf # 從庫slave
2 寫入如下配置
port 6380 daemonize yes pidfile /opt/data/6380/redis.pid loglevel notice logfile "/opt/data/6380/redis.log" dbfilename dump.rdb dir /opt/data/6380 protected-mode no
3 目前這三個配置文件配置同樣,只是端口的不一樣
可使用這一條命令經過redis-6380.conf生成6381和6382的配置文件
sed "s/6380/6381/g" redis-6380.conf > redis-6381.conf sed "s/6380/6382/g" redis-6380.conf > redis-6382.conf
4 在6381和6382下添加如下配置,使之成爲從數據庫
slaveof 127.0.0.1 6380
可使用如下一行命令直接追加寫入到配置文件中
echo "slaveof 127.0.0.1 6380" >> redis-6381.conf
5 確認三個配置文件無誤
6 開啓這三個redis服務,確保三個服務啓動正常
7 查看redis主從數據庫的狀態
redis-cli -p 6380 info replication redis-cli -p 6381 info replication redis-cli -p 6382 info replication
8 驗證redis主從複製狀況
(1)先驗證三個數據庫是否能正常鏈接
(2) 在6380上面寫入數據,查看6381和6382是否可以正常同步
9 手動進行主從複製故障切換
(1) 殺掉6380的進程,模擬主庫故障
kill -9 進程ID
(2)在6381和6382上手動指定一個主庫(我如今指定6382爲主庫)
(3) 在6382的redis上執行這一行命令
slaveof no one
(4) 在6381上執行如下命令,將原來的指向6380改成指向6382
原來的配置指向:
執行命令:
slaveof no one
slaveof 127.0.0.1 6382
(5) 驗證新的主從架構狀態
查看主從信息
info replication
在6382上查看主從信息
再到6381上面查看主從信息
(6) 驗證新的主從架構是否能夠正常寫入數據,同步數據
若是能夠,說明主從正常