有关运维面试重点
數(shù)據(jù)庫分為:關系型數(shù)據(jù)庫(mysql、mariadb)和非關系型數(shù)據(jù)庫(redis等)
mysql主從復制的原理:
主從復制:
- master開啟binlog日志
- master和slave的server-id不同
- slave主動連接master
mysql復制是將主庫的DDL和DML操作通過二進制日志傳遞到復制服務器(從庫)上,然后從庫對這些日志重新執(zhí)行(重做),從而使得主庫和從庫保持數(shù)據(jù)一致。
vim /etc/my.conf? ? ? ?(主:server-id=1?bin? ? 從:server-id =2)?
mysql(8080)復制的優(yōu)點:
如果主庫出現(xiàn)問題,可以快速切換到從庫提供服務
可以在從庫執(zhí)行查詢操作,降低主庫的訪問壓力。
可以在從庫進行備份,以免備份期間影響主庫的服務。
基于GTID的主從復制
優(yōu)點:不用手工設置日志偏移量, 可以很方便地進行故障轉移,如果啟用log_slave_updates 那么從庫不會丟失主庫上的任何修改。
缺點:僅支持 MySQL 5.6 之后的版本, 而且不建議使用早期 5.6 版本。
在兩邊的配置文件/etc/my.cnf 都加上:
gtid_mode=ON
enforce-gtid-consistency=true
proxy實現(xiàn)mysql讀寫分離
在/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua修改最小連接數(shù)和最大連接數(shù),?
mysql proxy 會檢測客戶端連接, 當連接沒有超過 max_idle_connections 值時, 不會進行讀寫分離, 即查詢操作會發(fā)生到 master 上。
創(chuàng)建腳本? /usr/local/mysql-proxy/conf/mysql-proxy.conf
[mysql-proxy]
user=root
proxy-address=0.0.0.0:3306
proxy-backend-addresses=172.25.254.11:3306? ? ? ? ? ? ? ? ?//master
proxy-read-only-backend-addresses=172.25.254.12:3306? ? ? ? ? ? ? ? ?//slave
proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua
log-file=/usr/local/mysql-proxy/logs/mysql-proxy.log
?
test3和test4實現(xiàn)主從復制,test2的proxy實現(xiàn)讀寫分離功能
?
redis(6379)(6380) 的主從復制及高可用集群的原理:
redis的優(yōu)點和缺點:
存儲在內存中,所以其性能極高;豐富的數(shù)據(jù)類型、原子性
redis是key-value數(shù)據(jù)庫,無法自己實現(xiàn)獨立的高可用,需要借助其他外力或者手動干預進行實現(xiàn)
redis支持各種不同方式的排序.與memcached一樣,為了保證效率,數(shù)據(jù)都是緩存在內存中;區(qū)別的是redis會周期性的把更新的數(shù)據(jù)寫入磁盤或者把修改操作寫入追加的記錄文件,并且在此基礎上實現(xiàn)了master-slave(主從)同步。
主從復制:
一主兩備
redis-4.0.8? ? 端口:6379? ?
redis-cli? 進入數(shù)據(jù)庫
vim /etc/redis/6379.conf
從數(shù)據(jù)庫配置:
slaveof 主機ip 主機端口(6379)
redis提供了哨兵,實現(xiàn)高可用。sentinel哨兵節(jié)點(26379)
哨兵節(jié)點進行自主監(jiān)控主從節(jié)點以及其他哨兵節(jié)點,當發(fā)現(xiàn)主節(jié)點掛掉時自動故障轉移。
vim /etc/redis/sentinel.conf? ? ? ? ?給test1、test2和test3都配置master為test1的ip
redis的集群:
最少三個節(jié)點,因為投票機制應該滿足半數(shù)以上的節(jié)點認為某個節(jié)點是掛掉的,此時才能認為該節(jié)點掛掉。
?
memcache+nginx+php緩存? ? ? ? ?memcache (11211)
nginx+tomcat+memcache實現(xiàn)session共享? ? ? ? ? ? ? ? ?memcache(11211)? ?tomcat(8080)? ? ? ? 用到nginx的jsp模塊
/usr/local/tomcat/conf/context.xml? ? ? ? test1為nginx? ?配置n1和n2? ,并且test2指定n1,test1指定n2
為了對數(shù)據(jù)的保存更加牢靠,我們選擇交叉存放session的方法,即將訪問tomcat1上的數(shù)據(jù)存放在memcache2中,將訪問tomcat2上的數(shù)據(jù)存放在memcache1中,這樣存放,當某個tomcat服務斷了之后,訪問它的客戶session并不會消失,而是存放在了對立的memcache,如果存放session的memcache壞了,那么它的數(shù)據(jù)會立即切換到另一個memcached中
總結
- 上一篇: shell脚本api接口考虑并发问题的可
- 下一篇: 五款常用协议分析处理工具推荐