歡迎您光臨本站 註冊首頁

Linux運維趨勢採摘 -14期 【第一次編輯】

←手機掃碼閱讀     火星人 @ 2014-03-08 , reply:0
煮酒品茶:本文只是記錄學習過程中採摘的東西罷了. -------------------------------------------------- 黑色字體:已閱 藍色字體:待閱 紅色字體:重點(或者作者PS) -------------------------------------------------- 更新:2012-04-25 23:03 對構建高安全電子商務網站之(網站文件及資料庫自動本地/異地雙備份)[連載之電子商務系統架構] 進行小小改動. 構建高性能電子商務網站 ------------------------------- 一、熟悉安全技術,了解硬體防火牆性能,能熟悉的配置iptables 和了解 Linux/Unix 相關的安全工具; 二、熟練的配置Linux 的集群技術,比如LVS/Nginx/HAproxy,了解其原 理和會話保持機制; 三、熟練的配置Nginx 和Apache 伺服器,能熟練的配置其正則; 四、熟練和了解MySQL 或Oracle 資料庫,至少要了解一種; 五、熟悉存儲; 六、熟悉和了解虛擬化技術; 七、極熟悉SHELL 腳本,用其實現工作中的各項需求;
八、懂PHP 或Java 代碼.(以上總結來自撫琴煮酒的一次訪談) 在大型電子商務網站下,運維的工作會細分,不過上述內容仍是基本功. 此外,由於大規模網站遇到的各方面挑戰,會要求開發人員和運維人員能夠 與時俱進,在網站遭遇瓶頸之前做好應對. 煮酒品茶:撫琴煮酒的這些個基本功,個人認為把他當成一個學習的過程即可,精通這個精通那個最終只會倒致啥事無成,只有一項完全熟悉之後方可進軍下一目標. ------------------------------------- Ubuntu 11.10,Fedora 16正式發布 ----------------------------------------------------- 【腦細胞】網站架構的常見演進路徑:web 與db 共用→ web 和db 拆分→多台web → db 主從→ web 緩存→ db 緩存→存儲拆分→ Scale Up →按應用豎切web →內存當硬碟→按時間橫切db →按事務豎切db →按hash 豎切db →存儲網路化→虛擬化→雲,看起來都有章可循,但不知多少技術人員在這路上死了無數腦細胞,還有那無數的不眠之夜. http://weibo.com/1649415495/xwl7WBXwa
煮酒品茶:同上方觀點一樣,任何一個都是一個過程,只有徹底了解後方可進軍下個方面,技術過渡也是這麼過來的. ------------------------------------------- 淘寶軟體基礎設施近年發展情況 ---------------------------------------------- MySQL優化 針對複製、同步、日誌系統、單機效率、負載均衡方面的優化.詳見 yufeng 的另一篇分享: http://www.slideshare.net/mryufeng/mysql-7583273 服務優化 針對Apache/Nginx、HTTP 模塊、Squid、LVS、HAProxy、TCP 方面的優化.Nginx 優化方面,淘寶有一個開源的模塊,大家可以參考一下: http://code.taobao.org/p/nginx_concat_module/ 去年的Velociy 大會上,朱照遠(叔度)和王曉哲(清無)也分享過Nginx定製開發方面的經驗. Java環境優化 這方面可以參考淘寶Java 中間件團隊博客(註:該團隊已經在今年和淘寶業務平台團隊合併為通用產品團隊):
http://rdc.taobao.com/team/jm/ Linux內核優化與定製 夸父通訊中間件 任卿對夸父通訊中間件進行過介紹: http://www.slideshare.net/openparty/ss-6680035 低功耗硬體平台 這方面可以參考淘寶最近公開的開源綠色計算項目: http://www.greencompute.org/ CDN系統 這方面也可以參考任卿的介紹: http://www.slideshare.net/colderboy17/cdn-9022813 ------------------------ 架構或者構思前期思考: 應用伺服器操作系統-應用伺服器軟體-Web Server-DB Server 開發框架 ------------------------ 煮酒品茶:以此記錄,並慢慢學習
--------------------------------------------------- 構建高安全電子商務網站之(網站文件及資料庫自動本地/異地雙備份)[連載之電子商務系統架構] --------------------------------------------------- 構建高安全電子商務網站之(網站文件及資料庫自動本地/異地雙備份)[連載之電子商務系統架構] 出處:http://jimmyli.blog.51cto.com/ 我站在巨人肩膀上Jimmy Li 作者:Jimmy Li 關鍵詞:網站,電子商務,Shell,自動備份,異地備份 ------[連載之電子商務系統架構]訪問量超過100萬的電子商務網站技術架構 連接:http://jimmyli.blog.51cto.com/3190309/584992 網站運維異地備份方案及故障應急備用鏡像 上一遍文章詳細介紹了伺服器安全方面,接下來繼續介紹Linux伺服器文件備份,資料庫備份,數據安 全存儲相關的電子商務系統架構.針對安全性有多種多樣的解決方案,其中數據備份是重中之重的首要 工作. 電子商務網站更加註重考慮數據安全,數據備份方案,包括本地備份、異地備份架構.其中Linux服務
器的備份方案非常多,本文介紹一個大眾化適用的解決方案,通過編寫Shell腳本來完成自動備份.本 架構包括備份網站文件、資料庫,自動本地備份並FTP上傳備份腳本,完成相應本地備份、異地備份, 實現雙層備份解決方案. 本文要點: 1.全自動完成網站文件及資料庫備份. 2.編寫Shell腳本來完成自動備份. 3.同時進行自動本地/異地雙備份,FTP上傳備份. 4.Linux伺服器的備份解決方案. 5.包括備份網站文件,網站程序文件、數據文件,MYSQL資料庫. 6.定期定時自動完成備份.定期刪除舊備份,這裡是自動刪除30天前備份,復用利用備份空間. 目錄: 一、準備工作 二、構建高安全電子商務網站之(網站文件及資料庫自動本地/異地雙備份)架構圖 三、網站及資料庫自動本地備份並FTP上傳備份Shell腳本,完整的實例;備份腳本進行詳細解說,註釋
. 在運營中的電子商務網站,建站之初就一直在重申一定要備份好自己的數據,太多的不確定性可能 會造成資料庫丟失,大部分基礎服務商也不可能提供每天備份數據.原來本BLOG提供過一個備份方 法,只是略微說了一下,可能部分新手會不太好入手.今天分享一個自己的備份腳本. 詳見後面附錄 http://jimmyli.blog.51cto.com/3190309/584992 《網站運維異地備份方案及故障應急 備用鏡像站》 一、準備工作: 1.軟體安裝 需要提前在Linux伺服器安裝好lftp,lftp功能上比較強大,CentOS直接執行:yum install lftp, Debian執行:apt-get install lftp . 2.備份目錄建立 需要在Linux伺服器上創建/home/backup/ 目錄. 3.FTP異地備份IP 賬號 密碼 需要在異地FTP上創建backup目錄. 如果Linux伺服器上資料庫不多的話使用網路基礎服務商的存儲空間就可以.也可以用專門的備份服務
器.可根據應用的大小,數據量的大小,網路狀況,和實際的網路資源,硬體資源靈活支配. 二、構建高安全電子商務網站之(網站文件及資料庫自動本地/異地雙備份)架構圖 三、網站及資料庫自動本地備份並FTP上傳備份Shell腳本 完整的實例: ======================================================================== #!/bin/bash #Funciont: Backup website and mysql database #Author: Jimmy Li #Website: http://jimmyli.blog.51cto.com/ #IMPORTANT!!!Please Setting the following Values! Backup_Dir1=/data/wwwroot/www.zuihuasuan8.net wd=/var/www/html/blog MYSQL_UserName=root MYSQL_PassWord=你的mysql資料庫root密碼 Backup_Database_Name1=www.zuihuasuan8.net FTP_HostName=www.zuihuasuan8.net FTP_UserName=www.zuihuasuan8.net FTP_PassWord=www.zuihuasuan8.net FTP_BackupDir=www.zuihuasuan8.net——backup
TodayWWWBackup=www-*-$(date "%Y%m%d").tar.gz TodayDBBackup=db-*-$(date "%Y%m%d").sql OldWWWBackup=www-*-$(date -d -30day "%Y%m%d").tar.gz OldDBBackup=db-*-$(date -d -30day "%Y%m%d").sql #tar zcf /home/backup/www-$Backup_Dir1-$(date "%Y%m%d").tar.gz -C /home/wwwroot/ cd $wd tar -zcvf /home/backup/www-$Backup_Dir1-$(date "%Y%m%d").tar.gz * $Backup_Dir1 --exclude=soft /usr/local/mysql/bin/mysqldump -u$MYSQL_UserName -p$MYSQL_PassWord $Backup_Database_Name1 > /home/backup/db-$Backup_Database_Name1-$(date "%Y%m%d").sql rm $OldWWWBackup rm $OldDBBackup cd /home/backup/ lftp $FTP_HostName -u $FTP_UserName,$FTP_PassWord << EOF cd $FTP_BackupDir mrm $OldWWWBackup mrm $OldDBBackup mput $TodayWWWBackup mput $TodayDBBackup bye EOF
======================================================================== 煮酒品茶:有點小小的人性化問題,打包后的文件解壓后連整個目錄都打包了,造成長目錄,這本不是我們需求的,我們小小的cd一下就好了 定義:wd=/var/www/html/blog 壓縮:tar -zcvf /home/backup/www-$Backup_Dir1-$(date "%Y%m%d").tar.gz * ------------------------------------ 我修改後的: Linux數據備份方案 設計需求: 一、每天零晨三點備份web文件 二、每天零晨三點備份MYsql資料庫 三、遠程傳送至某地 腳本如下: ----------------------------------------------------------- #----------------------------------------- # form to cwtea.51cto.com or wh.cn-cert.com #Email:zwhset@163.com
#----------------------------------------- # wd=Web即備份文件目錄 bd=備份目錄 su=Mysql用戶 sp=Mysql密碼 sn=資料庫名字 fu=FTP用戶 fp=FTP密碼 fpd=FTP備份目錄 #www cd $wd tar -zcvf $bd/web-$(date "%Y%m%d").tar.gz * #sql mysqldump -u$su -p$sp $sn > $bd/$sn$(date "%Y%m%d").sql #ftp lftp FTPIP -u$fu,FTP密碼 <<EOF cd $spd
mput $bd/web-$(date "%Y%m%d").tar.gz mput $bd/$sn$(date "%Y%m%d").sql bye EOF --------------------------------------------------------------- ----------------------------------- 下面將備份腳本進行詳細解說,註釋: #!/bin/bash #Funciont: Backup website and mysql database #Author: Jimmy Li #Website: http://jimmyli.blog.51cto.com/ #IMPORTANT!!!Please Setting the following Values! ######~Set Directory you want to backup~######將下面的目錄修改成自己要備份的目錄,一般按我 的都是在/data/wwwroot/下面所有直接寫了需要備份的目錄.可以繼續再加:Backup_Dir2=你的目錄 ,Backup_Dir後面的數字依次遞增.如果不足N個,直接刪除不需要的就可以,同時修改下面tar zcf 部分. Backup_Dir1=/data/wwwroot/www.zuihuasuan8.net
######~Set MySQL UserName and password~######設置MySQL的用戶名和密碼,最好是root,其他用戶 可能許可權問題無法導出部分資料庫. MYSQL_UserName=root MYSQL_PassWord=你的mysql資料庫root密碼 ######~Set MySQL Database you want to backup~######設置要部分的資料庫,可以繼續再加: Backup_Database_Name2=資料庫名,Backup_Database_Name後面的數字依次遞增. Backup_Database_Name1=www.zuihuasuan8.net ######~Set FTP Information~######設置用來存放備份數據的FTP信息 FTP_HostName=www.zuihuasuan8.net //FTP伺服器的IP或者域名 FTP_UserName=www.zuihuasuan8.net //FTP伺服器用戶名 FTP_PassWord=www.zuihuasuan8.net //FTP伺服器用戶對應的密碼 FTP_BackupDir=www.zuihuasuan8.net——backup //備份到FTP上的目錄,需要提 前創建好. #Values Setting END! ######設置結束 TodayWWWBackup=www-*-$(date "%Y%m%d").tar.gz TodayDBBackup=db-*-$(date "%Y%m%d").sql
OldWWWBackup=www-*-$(date -d -30day "%Y%m%d").tar.gz OldDBBackup=db-*-$(date -d -30day "%Y%m%d").sql tar zcf /home/backup/www-$Backup_Dir1-$(date "%Y%m%d").tar.gz -C /home/wwwroot/ $Backup_Dir1 --exclude=soft ###上面為備份網站文件數據,我的網站比較零散,網站目錄下面有些目錄屬於臨時目錄並不 需要備份,可以在上面加上--exclude=不備份的目錄.如果在前面加了Backup_Dir2=yourdir,則 再加tar zcf /home/backup/www-$Backup_Dir2-$(date "%Y%m%d").tar.gz -C /home/wwwroot/ $Backup_Dir2 .如果多餘則刪除多餘行. /usr/local/mysql/bin/mysqldump -u$MYSQL_UserName -p$MYSQL_PassWord $Backup_Database_Name1 > /home/backup/db-$Backup_Database_Name1-$(date "%Y%m%d").sql ###上面為備份MySQL資料庫,如果在前面加了Backup_Database_Name2=yourdatabasename,則再 加/usr/local/mysql/bin/mysqldump -u$MYSQL_UserName -p$MYSQL_PassWord $Backup_Database_Name2 > /home/backup/db-$Backup_Database_Name2-$(date "%Y%m%d").sql .如
果多餘則刪除多餘行. rm $OldWWWBackup rm $OldDBBackup ###刪除30天前的備份### cd /home/backup/ ###下面為自動上傳部分,不得不說lftp很強大,拋棄ftp吧#### lftp $FTP_HostName -u $FTP_UserName,$FTP_PassWord << EOF cd $FTP_BackupDir mrm $OldWWWBackup mrm $OldDBBackup mput $TodayWWWBackup mput $TodayDBBackup bye EOF 腳本下載地址: 下載腳本,將腳本放到/root/ 下面,按上面的註釋修改腳本中的參數,並保存,如果不熟悉vim或者 nano編輯器,可以用winscp,執行:chmod x /root/backup.sh 為腳本添加執行許可權,執行:crontab -e 添加定時執行 在crontab中加入:0 3 * * * /root/backup.sh 凌晨3點自動執行/root/bakcup.sh 腳本,備份Linux伺服器上的數據並上傳到預先設定好的異地FTP上 .
選擇在凌晨3進行備份,是這個時間段網站的訪問量是最低.也就是說在很少人訪問的情況下做備 份操作. 附錄: 網站運維異地備份方案及故障應急備用鏡像站 定期檢查異地備份故障應急時,啟用應急Web服務 出處:http://jimmyli.blog.51cto.com/ Jimmy Li Blog .歡迎朋友一起交流,討論.扣扣:柒⑥柒陸叄⑤叄伍 煮酒品茶:一套非常nice的方案,過程就是腳本收集文件然後上傳至遠程備份伺服器上.思路是頭腦,腳本是執行.構成一個基本的備份系統.測試后再修改看效果. ------------------------------------------------------------ 一種MySQL主從同步加速方案 ------------------------------------------------------------ 一種MySQL主從同步加速方案 一、問題起源 MySQL 的主從同步一直有從庫延遲的問題,原因簡單描述如下: 1、 MySQL 從庫上有一個IO 線程負責從主庫取binlog 到本地.另外有
一個SQL 線程負責執行這些本地日誌,實現命令重放; 2、 正常網路狀況下IO 線程沒有性能問題(這個待會會用到),問題是 SQL 線程只有一個,更新速度跟不上.經常會看到從庫的CPU idle 很 高,但同步性能就是上不去. 二、方案雛形 單線程的SQL 線程是造成這個問題的主要原因.比較直接的想法是把 它改成多線程版本,這個據說官方版本開發中,其實我們也有一個這樣的 patch,但是直接寫大片代碼在線上提供服務的slave 機器上這種事兒,都會 擔心穩定性而很難推動(寫patch 的和運維的同學,你們懂的). 打算用一個“第三方”工具中轉,來實現多線程同步.基本結構如圖: 說明: 1、這些transfer 從master 上各自同步一部分的數據,分別獨立更新 slave.多進程、多線程均可. 2、Transfer 與master 之間非同步更新日誌,transfer 與slave 之間同步更新 數據. 3、從這可以看出這個方案的缺點之一:更新能夠被獨立分開.比較直觀 的想法是,按照表分. 三、關於transfer
作為這個關鍵的轉發工具transfer,需要提供如下功能: 1、能夠指定同步master 中的哪部分數據,並且能夠方便地修改這個配置 以應對master 的加表需求. 2、支持stop slave、start slave.支持快速切換到新主庫的change master 命令. 3、能夠記錄讀取點,transfer 自己重啟或master 重啟后能夠按照記錄點 繼續讀後面的binlog. 4、能夠記錄分發點,transfer 自己重啟或slave 重啟后能夠按照記錄點繼續同步給slave. 用起來就會發現還有好多要求…… 四、方案實現 Transfer 的這麼多功能,自己造輪子就累了.這裡直接用MySQL 來充當此角色.為了方便描述,下文還將之稱為transfer.Transfer 更新slave 在功能上可以使用federated 引擎,但由於其糾結的實現導致性能上達不到要求,因此在MySQL 框架層中作了一點修改,讀到同步日誌后,直接發送給 slave. 方案簡單描述如下: 1、Slave 機器上搭另外的若干個MySQL(transfer),將其設為Master 的從 庫,且設置replicate-do-table, 每個transfer 承擔一部分的表. 2、所有Transfer 的更新目標都設置為slave,其更新方式是讀到日誌后直
接mysql_real_query 執行到slave 上.從這可以看出這個方案的缺點之二:只能支持statement 格式的同步方 式.其實row 也能支持,後面再說. 五、仍然延遲? 在transfer 放棄federated 引擎改用直接發送后,性能提升不少,從庫同步 性能增加一倍,但延遲還很大.發現這個時候slave 的機器cpu 已經很忙了,idle 20% 以下——這個算是好消息,總比idle 很高但性能上不去好.實際上是每個transfer,雖然設置只同步其中的部分表,但在實現上是IO 線程把master 上的所有命令都備份到本地,然後在SQL 線程執行的時候再判斷,若不符合replicate-do-table,再放棄.這樣存在的問題,是n 個transfer,磁碟寫了n 倍,更嚴重的是導致SQL線程空轉.我們上文提到整個流程中IO 線程是比較空閑的,因此修改IO 線程邏輯,在寫入磁碟前先判斷,若不符合本transfer 的replicate-do-table 設置,不寫盤,直接放棄. 六、效果 從庫的QPS 由於線程切換會有抖動,但總的執行時間與主庫相同.從庫的cpu idle 下降,與主庫幾乎同時恢復到100. 七、小結 1、要求在slave 機器上多配置n 個transfer(是否在從庫上均可) 2、目前只能支持statement 的binlog 格式,實際上row 可以支持,方案定了,開發計劃中. 3、跨表更新的語句,會按照其更新的第一個表,分發到唯一一個transfer,沒有重複更新的問題,但有時序性問題.方案的好處:
1、功能比較齊全.直接使用MySQL,原有的管理功能基本都能用,主庫 從庫重啟/ 換庫的代價比較小. 2、開發量小,只在transfer 上修改兩處,不包括配置讀取部分,300 行以內 3、風險相對小,不直接修改master 和slave 上的代碼,線上容易接收. 原文:http://dinglin.iteye.com/blog/1179574 另外,本方案有改進版本,作者建議一併閱讀: http://dinglin.iteye.com/blog/1187154 煮酒品茶:典形的主從模式吧,工具同步,這個還得嘗試著去更改. -----------------------------------------------


[火星人 ] Linux運維趨勢採摘 -14期 【第一次編輯】已經有641次圍觀

http://coctec.com/docs/linux/show-post-45739.html