柚子快報(bào)邀請(qǐng)碼778899分享:Redis(主從復(fù)制搭建)
文章目錄
1.主從復(fù)制示意圖2.搭建一主多從1.搭建規(guī)劃三臺(tái)機(jī)器(一主二從)2.將兩臺(tái)從Redis服務(wù)都按照同樣的方式配置(可以理解為Redis初始化)1.安裝Redis1.yum安裝gcc2.查看gcc版本3.將redis6.2.6上傳到/opt目錄下4.進(jìn)入/opt目錄下然后解壓5.進(jìn)入 redis-6.2.6目錄6.編譯并安裝7.進(jìn)入 /usr/local/bin 查看是否有redis的命令
2.啟動(dòng)并使用Redis1.進(jìn)入 /opt/redis-6.2.6/2.將里面的redis.conf復(fù)制一份到/etc下3.編輯 /etc/redis.conf,將daemonize no修改成daemonize yes即以守護(hù)進(jìn)程的方式啟動(dòng)(后臺(tái)啟動(dòng))4.啟動(dòng)redis,指定剛才的配置文件5.查看redis進(jìn)程
3.Redis基本配置1.修改端口為7489 port2.設(shè)置redis密碼 requirepass3.使redis支持遠(yuǎn)程訪問 bind4.登錄redis的命令行,關(guān)閉redis5.重新啟動(dòng)redis,使配置生效
4.開啟7489端口1.寶塔開啟端口2.騰訊云開啟端口(只允許本機(jī)ip訪問)
5.Redis持久化配置1.進(jìn)入redis配置文件2.dbfilename為redis持久化的文件名(一般不用改)3.dir修改為/root/則每次持久化的dump.rdb都會(huì)在/root/下,恢復(fù)時(shí)無論在哪里啟動(dòng),都會(huì)讀取這個(gè)文件進(jìn)行恢復(fù)4.開啟AOF持久化配置,編輯配置文件找到appendonly,設(shè)置成yes5.進(jìn)入命令行關(guān)閉redis,需要指定端口登錄6.重新啟動(dòng)redis,使配置生效7.發(fā)現(xiàn)/root/下面有兩個(gè)配置文件,如果沒有dump.rdb是因?yàn)闆]有對(duì)redis進(jìn)行操作
6.測(cè)試Java連接redis1.引入jedis的jar包2.編寫測(cè)試程序
3.配置Redis的一主二仆1.在配置之前,將三臺(tái)的Redis的7489端口完全放開2.三臺(tái)機(jī)器都進(jìn)入redis的客戶端,將數(shù)據(jù)全部清除3.輸入 info replication 可以看到目前三臺(tái)機(jī)器都為master4.在兩臺(tái)從服務(wù)上輸入 slaveof 主服務(wù)ip 主服務(wù)端口 來設(shè)置主服務(wù)5.輸入 info replication 來查看角色1.從服務(wù)2.主服務(wù)3.沒連接成功,后來詢問GPT4發(fā)現(xiàn)如果主服務(wù)器配置了密碼,則需要在從服務(wù)器的masterauth 中設(shè)置一下密碼
6.為兩臺(tái)從服務(wù)器的 masterauth 配置主服務(wù)器的密碼,然后測(cè)試連接1.分別設(shè)置密碼2.分別重啟3.從服務(wù)器重新配置4.再查看一下主服務(wù)器的狀態(tài),也是成功連接兩臺(tái)從服務(wù)器
7.注意事項(xiàng)和細(xì)節(jié)1.如果想要持久化,需要在從服務(wù)的配置文件中配置 slaveof ...... 否則重啟主從關(guān)系就會(huì)消失2.主服務(wù)器可讀可寫,從服務(wù)器只可讀
3.主從復(fù)制原理分析1.原理示意圖2.解讀3.細(xì)節(jié)1.主服務(wù)down掉了的情況2.當(dāng)從服務(wù)down掉了的情況
4.薪火相傳5.反客為主(是在薪火相傳的基礎(chǔ)上的)
4.哨兵模式(sentinel)1.配置哨兵1.**保持一主二仆的環(huán)境即可**2.隨便找一臺(tái)服務(wù)器啟動(dòng)哨兵,這里選擇在master服務(wù)器啟動(dòng)1.在/etc下面創(chuàng)建一個(gè)sentinel.conf的配置文件2.編輯文件,設(shè)置master的名字,ip+端口以及哨兵的個(gè)數(shù),這里是1,還有master的密碼3.再開啟一個(gè)連接,啟動(dòng)哨兵,指定配置文件
2.測(cè)試1.關(guān)閉master2.等待一會(huì),查看哨兵,可以看到切換了master3.查看子節(jié)點(diǎn)的情況,注意:此時(shí)需要重新進(jìn)行密碼驗(yàn)證4.重啟原來的master,會(huì)自動(dòng)降級(jí)為子節(jié)點(diǎn)
3.注意事項(xiàng)和細(xì)節(jié)1.主機(jī)down后的執(zhí)行流程2.哨兵挑選新master的依據(jù)3.重啟原來的master,會(huì)自動(dòng)降級(jí)為子節(jié)點(diǎn)4.如果原來的主節(jié)點(diǎn)有密碼,則需要在sentinel.conf 配置auth-pass參數(shù)設(shè)置密碼5.關(guān)于密碼配置方案
1.主從復(fù)制示意圖
2.搭建一主多從
1.搭建規(guī)劃三臺(tái)機(jī)器(一主二從)
2.將兩臺(tái)從Redis服務(wù)都按照同樣的方式配置(可以理解為Redis初始化)
1.安裝Redis
1.yum安裝gcc
yum install gcc
2.查看gcc版本
gcc --version
3.將redis6.2.6上傳到/opt目錄下
4.進(jìn)入/opt目錄下然后解壓
cd /opt && tar -zxvf redis-6.2.6.tar.gz
5.進(jìn)入 redis-6.2.6目錄
cd redis-6.2.6
6.編譯并安裝
make && make install
7.進(jìn)入 /usr/local/bin 查看是否有redis的命令
cd /usr/local/bin && ll
2.啟動(dòng)并使用Redis
1.進(jìn)入 /opt/redis-6.2.6/
cd /opt/redis-6.2.6/
2.將里面的redis.conf復(fù)制一份到/etc下
cp redis.conf /etc/redis.conf
3.編輯 /etc/redis.conf,將daemonize no修改成daemonize yes即以守護(hù)進(jìn)程的方式啟動(dòng)(后臺(tái)啟動(dòng))
vim /etc/redis.conf
4.啟動(dòng)redis,指定剛才的配置文件
/usr/local/bin/redis-server /etc/redis.conf
5.查看redis進(jìn)程
ps -aux | grep redis
3.Redis基本配置
1.修改端口為7489 port
2.設(shè)置redis密碼 requirepass
3.使redis支持遠(yuǎn)程訪問 bind
4.登錄redis的命令行,關(guān)閉redis
/usr/local/bin/redis-cli
5.重新啟動(dòng)redis,使配置生效
/usr/local/bin/redis-server /etc/redis.conf && ps -aux | grep redis
4.開啟7489端口
1.寶塔開啟端口
systemctl start firewalld && firewall-cmd --permanent --add-port=7489/tcp && firewall-cmd --reload && firewall-cmd --query-port=7489/tcp
2.騰訊云開啟端口(只允許本機(jī)ip訪問)
5.Redis持久化配置
1.進(jìn)入redis配置文件
vim /etc/redis.conf
2.dbfilename為redis持久化的文件名(一般不用改)
3.dir修改為/root/則每次持久化的dump.rdb都會(huì)在/root/下,恢復(fù)時(shí)無論在哪里啟動(dòng),都會(huì)讀取這個(gè)文件進(jìn)行恢復(fù)
4.開啟AOF持久化配置,編輯配置文件找到appendonly,設(shè)置成yes
5.進(jìn)入命令行關(guān)閉redis,需要指定端口登錄
/usr/local/bin/redis-cli -p 7489
6.重新啟動(dòng)redis,使配置生效
/usr/local/bin/redis-server /etc/redis.conf && ps -aux | grep redis
7.發(fā)現(xiàn)/root/下面有兩個(gè)配置文件,如果沒有dump.rdb是因?yàn)闆]有對(duì)redis進(jìn)行操作
6.測(cè)試Java連接redis
1.引入jedis的jar包
2.編寫測(cè)試程序
public static void main(String[] args) {
// 連接服務(wù)器的redis命令行
Jedis jedis = new Jedis("xxx", xx);
// 如果redis設(shè)置了密碼要先進(jìn)行驗(yàn)證
jedis.auth("******");
String ping = jedis.ping();
System.out.println(ping);
}
3.配置Redis的一主二仆
1.在配置之前,將三臺(tái)的Redis的7489端口完全放開
2.三臺(tái)機(jī)器都進(jìn)入redis的客戶端,將數(shù)據(jù)全部清除
3.輸入 info replication 可以看到目前三臺(tái)機(jī)器都為master
4.在兩臺(tái)從服務(wù)上輸入 slaveof 主服務(wù)ip 主服務(wù)端口 來設(shè)置主服務(wù)
slaveof xxxx xxx
5.輸入 info replication 來查看角色
1.從服務(wù)
2.主服務(wù)
3.沒連接成功,后來詢問GPT4發(fā)現(xiàn)如果主服務(wù)器配置了密碼,則需要在從服務(wù)器的masterauth 中設(shè)置一下密碼
6.為兩臺(tái)從服務(wù)器的 masterauth 配置主服務(wù)器的密碼,然后測(cè)試連接
1.分別設(shè)置密碼
2.分別重啟
3.從服務(wù)器重新配置
slaveof 。。。。。。
4.再查看一下主服務(wù)器的狀態(tài),也是成功連接兩臺(tái)從服務(wù)器
info replication
7.注意事項(xiàng)和細(xì)節(jié)
1.如果想要持久化,需要在從服務(wù)的配置文件中配置 slaveof … 否則重啟主從關(guān)系就會(huì)消失
2.主服務(wù)器可讀可寫,從服務(wù)器只可讀
3.主從復(fù)制原理分析
1.原理示意圖
2.解讀
3.細(xì)節(jié)
1.主服務(wù)down掉了的情況
從服務(wù)并不會(huì)搶占主服務(wù)的位置當(dāng)主服務(wù)重新啟動(dòng)之后,從服務(wù)又會(huì)指向主服務(wù)
2.當(dāng)從服務(wù)down掉了的情況
當(dāng)再次連接主服務(wù)時(shí)還是會(huì)進(jìn)行一次全量備份
4.薪火相傳
簡單來說就是讓b是a的slave,c是b的slave這樣c的數(shù)據(jù)就從b來獲取,而寫入操作還是從a進(jìn)行
5.反客為主(是在薪火相傳的基礎(chǔ)上的)
4.哨兵模式(sentinel)
1.配置哨兵
1.保持一主二仆的環(huán)境即可
2.隨便找一臺(tái)服務(wù)器啟動(dòng)哨兵,這里選擇在master服務(wù)器啟動(dòng)
1.在/etc下面創(chuàng)建一個(gè)sentinel.conf的配置文件
touch /etc/sentinel.conf
2.編輯文件,設(shè)置master的名字,ip+端口以及哨兵的個(gè)數(shù),這里是1,還有master的密碼
vim /etc/sentinel.conf
sentinel monitor redis_master ........
3.再開啟一個(gè)連接,啟動(dòng)哨兵,指定配置文件
/usr/local/bin/redis-sentinel /etc/sentinel.conf
2.測(cè)試
1.關(guān)閉master
2.等待一會(huì),查看哨兵,可以看到切換了master
3.查看子節(jié)點(diǎn)的情況,注意:此時(shí)需要重新進(jìn)行密碼驗(yàn)證
4.重啟原來的master,會(huì)自動(dòng)降級(jí)為子節(jié)點(diǎn)
3.注意事項(xiàng)和細(xì)節(jié)
1.主機(jī)down后的執(zhí)行流程
2.哨兵挑選新master的依據(jù)
3.重啟原來的master,會(huì)自動(dòng)降級(jí)為子節(jié)點(diǎn)
4.如果原來的主節(jié)點(diǎn)有密碼,則需要在sentinel.conf 配置auth-pass參數(shù)設(shè)置密碼
5.關(guān)于密碼配置方案
在redis.conf中配置requirepass 以及masterauth 都為相同的密碼,這樣各個(gè)節(jié)點(diǎn)就可以正常連接了如果是哨兵模式還要在sentinel.conf 配置master的密碼,格式為 sentinel auth-pass master名字yourStrongPassword
柚子快報(bào)邀請(qǐng)碼778899分享:Redis(主從復(fù)制搭建)
相關(guān)閱讀
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。