DBA 題 mongodb redis

MongoDB

一、mongodb復制集的工作原理

1.復制集是由一主兩從,3個節(jié)點構成。自帶自動監(jiān)控投票選主功能,有raft協(xié)議來支撐。
2.如果主庫發(fā)生宕機,復制集內(nèi)部會進行投票選舉,選擇新的主庫提供服務,同時會自動通知客戶端已經(jīng)切換,應用就會連接到新庫

二、MongoDB Sharding Cluster 分片集群架構原理

分片集群由三大部分組成:
第一部分:Router 路由
第二部分:Config Server 記錄復制集的節(jié)點信息  也需要創(chuàng)建復制集
第三部分:Shard 后端節(jié)點,每個節(jié)點都會創(chuàng)建復制集

原理:
1.所有用戶連接都會通過路由來連接,路由來分發(fā)請求,路由本身是無狀態(tài)的(沒腦子),用戶數(shù)據(jù)插入,路由沒辦法判斷處理
2.路由接收到用戶數(shù)據(jù)插入請求,會讀取配置節(jié)點里的信息,得知數(shù)據(jù)應該放在哪個節(jié)點。

三、MongoDB如何實現(xiàn)自動分片

通過balancer,自動巡檢Shard節(jié)點上chunk(數(shù)據(jù)塊)狀況,自動做chunk遷移

四、MongoDB的oplog作用是什么

1.相當于是mysql的binlog,記錄了mongodb實例一段時間內(nèi)數(shù)據(jù)庫的所有變更(插入、更新、刪除)操作
2.默認大小是磁盤空間%5,空間使用完,新紀錄會自動覆蓋最老的。
3.oplog可以配合mongodump實現(xiàn)熱備。
4.可以根據(jù)oplog的時間點恢復數(shù)據(jù)

五、MongoDB用戶管理和Mysql的區(qū)別

MongoDB登錄庫必須要驗證庫,use test
MySQL 只需要驗證密碼信息,用戶信息,端口信息等。

六、Mongodump介紹

mongodump可以在mongodb運行時進行備份,它的工作原理是對運行的mongodb做查詢,然后將所有查到的文檔寫入磁盤,
存在的問題是使用mongodump產(chǎn)生的備份不一定是數(shù)據(jù)庫的實時快照,如果在備份時進行了寫入操作,則備份出的文件可能不完全和mongodb實時數(shù)據(jù)相等,另外在備份時可能會對其他客戶端性能產(chǎn)生不利的影響

七、MySQL數(shù)據(jù)遷移MongoDB

//mysql-->mongodb
1.導出mysql需要做遷移的數(shù)據(jù),文件結尾要以.csv格式
2.給文件加上mogodb屬主屬組
3.查看mysql導出原數(shù)據(jù)的列名
4.加上列名導入到mongodb庫中

Redis

一、redis cluster 分布式集群實現(xiàn)原理

搭建集群主要是解決哨兵的不足:
主庫寫壓力大的問題
資源利用率不高的問題
連接過程繁瑣,效率低的問題

原理:
1.在多分片節(jié)點中,將16384個槽位,均勻分配到多個節(jié)點中。
2.存數(shù)據(jù)時,將數(shù)據(jù)做crc-16算法,然后和16384進行取模,得出槽位值(0-16383之間)
3.根據(jù)計算得出的槽位值,找到對應的分片節(jié)點的主節(jié)點,存儲到相應槽位上
4.如果客戶當時連接的節(jié)點不是將來要存儲的分片節(jié)點,分片集群會將客戶端連接切換至真正的存儲節(jié)點進行數(shù)據(jù)存儲

二、Redis sentinel 哨兵高可用實現(xiàn)原理

1.監(jiān)控:哨兵會不斷監(jiān)控主服務器和從服務器是否運行正常
2.提醒:當被監(jiān)控的某個redis服務器出現(xiàn)問題時,哨兵可通過API向管理員或者其他應用程序發(fā)送通知
3.自動故障轉移:主服務器不正常時,哨兵會自動故障轉移,會將一個主從中的從服務器升級為新主,并讓其他的從服務器復制新的主??蛻舳诉B接失效的主服務器時,集群會會返回新主的地址,使集群可以使用新主代替失效的主。

三、Redis的主從原理

1.從服務器連接上主服務器,發(fā)送sync命令;
2.主服務器接收到sync命令后,立即觸發(fā)bgsave命令生成RBD文件發(fā)送給從服務器。
3.主服務器在發(fā)送期間會繼續(xù)記錄被執(zhí)行的命令,保存發(fā)送給從服務器
4.再此之后,主服務器發(fā)生新操作,都會以命令傳播方式發(fā)送給從服務器
5.所有復制相關信息,從info信息中都可查到,即使重啟任何節(jié)點,主從關系依然在
6.如果發(fā)生主從斷開,從庫數(shù)據(jù)沒有損壞,下次重連時,從庫發(fā)送psync給主庫,
7.主庫只會將從庫缺失部分數(shù)據(jù)同步給從庫應用,達到快速恢復主從目的

四、Redis事務和MySQL事務的區(qū)別

redis事務是基于隊列實現(xiàn)的
mysql事務是基于事務日志和鎖機制實現(xiàn)的

五、redis數(shù)據(jù)類型和應用場景

starings: 字符類型      常規(guī)計數(shù):微博數(shù),粉絲數(shù),訂閱,刷禮物
hash:     字典類型       數(shù)據(jù)庫緩存
list:     消息隊列類型     發(fā)朋友圈
SET:      集合類型       共同好友,可能認識的人
sortset: 有序集合類型   排行榜應用,取TOP N操作

六、redis持久化方式

RDB持久化:在指定的時間間隔內(nèi)生成數(shù)據(jù)集的時間點快照,
1.當執(zhí)行bdsave時,通知父進程分出一個子進程
2.父進程繼續(xù)響應其他命令
3.子進程生成RDB文件,備份數(shù)據(jù),備份完成通知父進程,子進程結束


AOF持久化:記錄服務器執(zhí)行的所有寫操作,并在服務器啟動時,通過重新執(zhí)行這些命令來還原數(shù)據(jù)集  相比于mysql的binlog
1.先把命令寫入緩沖區(qū)
2.緩沖區(qū)持久化到AOF文件中
3.如果重啟的話,會先讀取AOF文件
4.AOF文件一些數(shù)據(jù)過期了會自動處理

七、redis安全模式簡述

1.redis默認配置沒有用戶驗證,redis的server只需要知道ip和端口就連上了,同時還有操作權限,所以數(shù)據(jù)很危險。
2.但redis的設計者注意到這一點,引導做一些配置,默認是bind "127.0.0.1" 只接受本機的客戶端連接。要讓所有ip地址連接只需要注釋掉bind.
3. 3.2版本開始,redis增加了protected-mode,及時注釋了bind,遠程連接也會報錯
4.protected-mode默認是開啟的,它會在兩種情況同時存在時起作用,
     ①server沒有明確指定ip去bind
     ②沒有password配置
5.注釋點bind,沒有指定ip去server bind。默認配置文件是沒有密碼配置的,安全模式就回在這時起作用
6.如果不想設置密碼,又想被遠程連接,那就把protected-mode 的yes 改成 no

redis默認開啟了保護模式,只允許本地回環(huán)地址登錄并訪問數(shù)據(jù)庫。
禁止protected-mode
protected-mode yes/no (保護模式,是否只允許本地訪問)
配置文件中:
1.bind 指定ip進行監(jiān)聽     
2.增加requirepass (密碼)
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 第十六天 redis-sentinel 監(jiān)控 自動選主,切換(6381 slaveof no one) 2號從庫(...
    燮_0e5d閱讀 418評論 0 0
  • 1、什么時候使用Mongodb? 我的數(shù)據(jù)量是有億萬級或者需要不斷擴容需要2000-3000以上的讀寫每秒新應用、...
    noodlesbook閱讀 414評論 0 1
  • WiredTiger 是一個開源的、高性能、可伸縮的 MongoDB 數(shù)據(jù)存儲引擎。 SSPL協(xié)議是只對使用云廠商...
    Bogon閱讀 1,869評論 0 1
  • 點關注,不迷路;持續(xù)更新Java相關技術及資訊!?。榱烁兄x支持我的朋友!整理了一份Java高級架構資料、Spri...
    Java耕耘者閱讀 271評論 0 1
  • 夜鶯2517閱讀 128,206評論 1 9

友情鏈接更多精彩內(nèi)容