日韩精品一区二区三区在线视频放-无码中文字幕V?一区二区-成年片免费观看视频-国内少妇人妻丰满av-国产精品中文字幕免费观看-亚洲成人久久一区二区三区-国内少妇偷人精品视频无缓冲-一区二区国产精品日本一区二区三区在线网

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

MySQL一主三從高可用實(shí)戰(zhàn):Orchestrator+ProxySQL切換全復(fù)盤

MySQL一主三從高可用實(shí)戰(zhàn):Orchestrator+ProxySQL切換全復(fù)盤 上周線上把 MySQL 5.7 一主三從集群做了一次真實(shí)的主庫(kù)宕機(jī)演練。整套高可用方案使用的是 Orchestrator 負(fù)責(zé)自動(dòng)化主從選舉與切換ProxySQL 負(fù)責(zé)讀寫分離和入口流量調(diào)度從 kill 掉主庫(kù)進(jìn)程到應(yīng)用側(cè)寫入完全恢復(fù)整個(gè)過(guò)程大概 14 秒。這篇文章不是功能清單式的介紹而是把這套架構(gòu)從“為什么這么選型”、到一主三從在 TB 級(jí)數(shù)據(jù)下怎么初始化、再到故障切換的完整鏈路、以及上線后踩過(guò)的坑完整復(fù)盤一遍。如果你正在評(píng)估或者準(zhǔn)備落地 OrchestratorProxySQL這篇可以直接當(dāng)實(shí)施參考。1. 為什么我沒有選 MHA 或 Keepalived而是 Orchestrator ProxySQL很多朋友一提到 MySQL 高可用第一反應(yīng)就是 MHA或者 Keepalived 掛一個(gè) VIP。這些方案不是不能用只是在 TB 級(jí)、一主三從、需要讀寫分離的線上環(huán)境里它們各自的短板會(huì)比較明顯。我先把選型過(guò)程寫清楚方便你判斷自己的場(chǎng)景是不是適合這套組合。1.1 MHA 方案的問題在哪MHA 的核心能力是在主庫(kù)故障時(shí)自動(dòng)找到 relay log 最完整的從庫(kù)補(bǔ)全缺失的 binlog 后提升為新主并把其他從庫(kù)重新指向它。這套邏輯很成熟早期我也用它搭過(guò)不少環(huán)境日常故障切換確實(shí)能跑。但放到這套集群里有兩個(gè)實(shí)際痛點(diǎn)。第一MHA Manager 本身是單點(diǎn)的。雖然可以想辦法做雙機(jī)但官方對(duì) Manager 高可用的支持一直比較弱一旦 Manager 所在機(jī)器掛了切換就沒人觸發(fā)。第二MHA 只負(fù)責(zé)“數(shù)據(jù)庫(kù)內(nèi)部的角色切換”不負(fù)責(zé)應(yīng)用側(cè)流量調(diào)度。切換完成后應(yīng)用連的還是原來(lái)的主庫(kù)地址如果主庫(kù) IP 變了或者故障節(jié)點(diǎn)還在那要么等著連接超時(shí)要么還得靠額外腳本去改應(yīng)用配置。我們這套集群每天讀寫請(qǐng)求量很大不可能接受切換完數(shù)據(jù)庫(kù)角色后還要人工把應(yīng)用流量切到新主。1.2 Keepalived VIP 為什么也排除了Keepalived VIP 的思路是把一個(gè)虛擬 IP 掛到主庫(kù)上主庫(kù)掛了 VIP 漂移到從庫(kù)。它解決的是“連接地址漂移”的問題但本身對(duì) MySQL 主從狀態(tài)一無(wú)所知。直接用 VIP 做主從切換很容易出現(xiàn)一種很尷尬的情況主庫(kù)只是 MySQL 進(jìn)程假死網(wǎng)絡(luò)還在VIP 不漂移但業(yè)務(wù)已經(jīng)寫不進(jìn)去了或者主庫(kù)徹底宕機(jī)VIP 漂到一臺(tái) relay log 明顯落后的從庫(kù)上丟數(shù)據(jù)的風(fēng)險(xiǎn)完全不可控。更重要的是Keepalived 是二層網(wǎng)絡(luò)里做地址漂移的跨機(jī)房、跨網(wǎng)段的時(shí)候不好用。我們后期計(jì)劃把從庫(kù)放到另一個(gè)機(jī)房做異地容災(zāi)單獨(dú)靠 VIP 根本覆蓋不了這種拓?fù)洹K鳛橐粋€(gè)“前置入口漂移”的輔助手段可以但承擔(dān)不起完整的故障決策。1.3 這套組合的核心分工最后定下來(lái)的架構(gòu)很清晰Orchestrator 負(fù)責(zé)決策層ProxySQL 負(fù)責(zé)數(shù)據(jù)面流量調(diào)度。Orchestrator 會(huì)持續(xù)監(jiān)控所有 MySQL 實(shí)例的健康狀態(tài)、主從關(guān)系、復(fù)制延遲一旦判定主庫(kù)不可用自動(dòng)完成候選從庫(kù)選擇、新主提升、其余從庫(kù)重指向、舊主恢復(fù)后的收斂這些操作ProxySQL 則獨(dú)立于數(shù)據(jù)庫(kù)角色去管理應(yīng)用連接通過(guò) hostgroup 和查詢規(guī)則把讀流量和寫流量分流數(shù)據(jù)庫(kù)切換后應(yīng)用不需要改任何代碼。為什么這兩個(gè)工具組合起來(lái)特別適合一主三從因?yàn)?Orchestrator 有很成熟的外部 hook 機(jī)制切換完成后可以執(zhí)行自定義腳本把新主的信息同步給 ProxySQL而 ProxySQL 的管理接口又允許在運(yùn)行中動(dòng)態(tài)修改后端節(jié)點(diǎn)并立即生效。一個(gè)負(fù)責(zé)“選誰(shuí)當(dāng)主”一個(gè)負(fù)責(zé)“把流量發(fā)給誰(shuí)”兩者通過(guò)一個(gè)腳本串起來(lái)切主對(duì)應(yīng)用來(lái)說(shuō)是無(wú)感的。這套思路后來(lái)也成了我們做故障演練的基礎(chǔ)。2. 一主三從初始化TB 級(jí)數(shù)據(jù)怎么在不停業(yè)務(wù)的情況下把三臺(tái)從庫(kù)補(bǔ)起來(lái)標(biāo)題里寫了 TB 級(jí)這一步必須單獨(dú)拿出來(lái)講。因?yàn)閿?shù)據(jù)量一旦到了 TB 級(jí)別很多東西跟小庫(kù)完全不是一個(gè)玩法。比如你不可能用 mysqldump 去導(dǎo)全量數(shù)據(jù)那得導(dǎo)到天荒地老也不可能停庫(kù)拷貝數(shù)據(jù)文件業(yè)務(wù)根本不允許。我們當(dāng)時(shí)的辦法是用 Percona XtraBackup 2.4 做物理備份從一個(gè)現(xiàn)網(wǎng)從庫(kù)拉全量再配合 GTID 自動(dòng)位點(diǎn)追同步。2.1 集群規(guī)劃與基礎(chǔ)參數(shù)先說(shuō)我用的版本和硬件規(guī)劃方便你對(duì)照。MySQL 用的是 5.7.4x一主三從四臺(tái)機(jī)器都是獨(dú)立的物理機(jī)磁盤是 SSD 陣列。主庫(kù)和三個(gè)從庫(kù)都開啟 binlogserver_id全局唯一核心參數(shù)大概是這樣[mysqld] server_id 101 gtid_mode ON enforce_gtid_consistency ON log_bin mysql-bin binlog_format ROW log_slave_updates ON read_only ON super_read_only ON主庫(kù)那臺(tái)要允許寫入所以把read_only和super_read_only注釋掉只保留 binlog 和 GTID 相關(guān)配置。這里有個(gè)小細(xì)節(jié)即使是從庫(kù)我仍然要求log_slave_updates ON否則從庫(kù)不會(huì)把從主庫(kù)同步過(guò)來(lái)的事務(wù)寫進(jìn)自己的 binlogOrchestrator 在后續(xù)切換中很難判斷誰(shuí)的事務(wù)最完整這個(gè)坑我后面會(huì)詳細(xì)說(shuō)。2.2 物理備份同步限速、斷點(diǎn)續(xù)傳和備份校驗(yàn)TB 級(jí)數(shù)據(jù)做初始化最怕的就是備份過(guò)程把線上 IO 打滿。我的做法是從一臺(tái)從庫(kù)拉備份而不是從主庫(kù)這樣能盡量減少對(duì)主庫(kù)的影響。備份命令類似這樣xtrabackup --backup \ --target-dir/data/backup/full_$(date %Y%m%d) \ --host127.0.0.1 \ --userbackup \ --passwordbackuppass \ --slave-info \ --safe-slave-backup \ --throttle200--throttle200是 XtraBackup 自帶的 IO 限速參數(shù)單位是每秒多少次 IO 操作。具體值要根據(jù)線上磁盤負(fù)載去試我們的機(jī)器壓到 200 的時(shí)候主庫(kù) IO 基本沒明顯波動(dòng)備份速度大概能跑到每小時(shí) 600GB一個(gè) TB 多的全量?jī)傻饺齻€(gè)小時(shí)能備份完成。備份文件很大不可能直接在本地流式傳輸我一般用xbstream先打包再通過(guò)pv限速推到目標(biāo)從庫(kù)xtrabackup --backup \ --streamxbstream --target-dir/data/backup/full_xxx \ --throttle200 2/tmp/backup.log | \ pv -L 80m | ssh root10.0.0.12 cat /data/restore/full_xxx.xbstreampv -L 80m把網(wǎng)絡(luò)傳輸限到 80MB/s避免帶寬被占滿影響應(yīng)用。限速的好處是初始化整個(gè)過(guò)程可以放在業(yè)務(wù)高峰期之外慢慢跑不需要為了趕時(shí)間讓線上環(huán)境承擔(dān)風(fēng)險(xiǎn)。文件傳過(guò)去之后先校驗(yàn)備份日志確認(rèn)沒有異常再解流xbstream -x -C /data/restore/full_xxx /data/restore/full_xxx.xbstream xtrabackup --prepare --target-dir/data/restore/full_xxx這里必須說(shuō)一個(gè)容易忽略的點(diǎn)如果是從從庫(kù)拉的備份去初始化新從庫(kù)prepare的時(shí)候不需要加--apply-log-only只要不是做增量合并直接準(zhǔn)備到位就行如果后面想在備份基礎(chǔ)之上再合并增量才需要--apply-log-only。準(zhǔn)備完成后用--copy-back把文件放回?cái)?shù)據(jù)目錄調(diào)整屬主后啟動(dòng) MySQL。2.3 GTID 建立復(fù)制以及為什么這段必須用 GTID數(shù)據(jù)文件恢復(fù)好以后啟動(dòng) MySQL直接從備份集里的xtrabackup_info或xtrabackup_binlog_info拿位點(diǎn)和 GTID 集合。在 GTID 模式下建立復(fù)制的命令比傳統(tǒng) binlog 位置簡(jiǎn)潔得多CHANGE MASTER TO MASTER_HOST10.0.0.10, MASTER_PORT3306, MASTER_USERrepl, MASTER_PASSWORDreplpass, MASTER_AUTO_POSITION1; START SLAVE; SHOW SLAVE STATUS\G只要Seconds_Behind_Master在持續(xù)下降并且最終接近 0主從就正常了。為什么這里我堅(jiān)持用 GTID因?yàn)楹竺?Orchestrator 做切換時(shí)候選從庫(kù)的選擇和其余從庫(kù)的重指向都依賴 GTID 自動(dòng)定位。傳統(tǒng) binlog 位點(diǎn)模式下每次切主都要人去確認(rèn)每個(gè)從庫(kù)應(yīng)該指向哪個(gè)位點(diǎn)錯(cuò)一步就是數(shù)據(jù)不一致GTID 模式下Orchestrator 可以直接說(shuō)“誰(shuí)的事務(wù)集合最完整”新主一確認(rèn)其余從庫(kù)MASTER_AUTO_POSITION1就能自動(dòng)對(duì)齊。一主三從這種規(guī)??渴止ぞS護(hù)位點(diǎn)是撐不住的。另外要說(shuō)一個(gè)第一次初始化容易撞上的問題復(fù)制完成后如果從庫(kù)的server_uuid和源實(shí)例重復(fù)MySQL 會(huì)因?yàn)?UUID 沖突直接啟動(dòng)失敗。XtraBackup 在備份時(shí)一般不會(huì)把a(bǔ)uto.cnf一起恢復(fù)但如果你手工拷貝過(guò)數(shù)據(jù)文件一定要檢查${datadir}/auto.cnf如果存在且和主庫(kù) UUID 相同直接刪掉再重啟 MySQL讓它重新生成一個(gè)新的。這個(gè)問題出現(xiàn)過(guò)不止一次報(bào)錯(cuò)信息還不明顯容易排查半天。3. Orchestrator 的部署和切換鏈路從發(fā)現(xiàn)故障到發(fā)起選舉Orchestrator 是這套高可用里的“大腦”。它本身不處理業(yè)務(wù)流量只干一件事持續(xù)監(jiān)控拓?fù)淅锼?MySQL 實(shí)例發(fā)現(xiàn)主庫(kù)故障后自動(dòng)執(zhí)行恢復(fù)流程。部署本身不復(fù)雜但有幾個(gè)設(shè)計(jì)點(diǎn)直接決定了切換的可靠性。3.1 Orchestrator 自身的可用性三節(jié)點(diǎn) Raft 比單機(jī)強(qiáng)在哪很多人搭 Orchestrator 只在單機(jī)跑一個(gè)實(shí)例這是比較危險(xiǎn)的做法。Orchestrator 自己掛了故障切換就停了和 MHA Manager 單點(diǎn)的問題一樣。我這里是三個(gè)節(jié)點(diǎn)組成了 Raft 集群數(shù)據(jù)層用一個(gè)獨(dú)立的小 MySQL 實(shí)例存 Orchestrator 的元數(shù)據(jù)。三節(jié)點(diǎn) Raft 的核心價(jià)值是避免誤判。單個(gè) Orchestrator 節(jié)點(diǎn)可能因?yàn)榫W(wǎng)絡(luò)抖動(dòng)、負(fù)載高或者其他原因誤以為主庫(kù)掛了但集群模式下至少要多數(shù)節(jié)點(diǎn)都判定主庫(kù)不可達(dá)才會(huì)真正觸發(fā)切換。這個(gè)設(shè)計(jì)對(duì)一主三從這種生產(chǎn)環(huán)境非常重要因?yàn)檎`切換造成的危害往往比不切換還大。你想想如果只是 Orchestrator 到主庫(kù)的網(wǎng)絡(luò)閃斷了一下結(jié)果主庫(kù)被切掉了全部寫流量瞬間打到一臺(tái)從庫(kù)上這是完全不能接受的。部署時(shí)需要注意三個(gè) Orchestrator 節(jié)點(diǎn)之間的網(wǎng)絡(luò)延遲要低最好在同一個(gè)機(jī)房的同一網(wǎng)段Raft 數(shù)據(jù)目錄要放到持久化磁盤元數(shù)據(jù)庫(kù)不能跟著 Orchestrator 一起掛否則集群雖然活著但無(wú)法讀取狀態(tài)。我們?yōu)榱俗屧獢?shù)據(jù)庫(kù)也可靠把它的主從狀態(tài)通過(guò)同一套監(jiān)控盯起來(lái)了屬于基礎(chǔ)設(shè)施的基礎(chǔ)設(shè)施不敢省。3.2 關(guān)鍵配置項(xiàng)里容易踩的部分Orchestrator 的配置文件是/etc/orchestrator.conf.json。下面這段是我實(shí)際用的把關(guān)鍵項(xiàng)都標(biāo)出來(lái)了{(lán) ListenAddress: :3000, MySQLTopologyUser: orc, MySQLTopologyPassword: orcpass, BackendDB: mysql, BackendDSN: orcmeta:orcmetapasstcp(10.0.0.9:3306)/orchestrator?timeout5s, RaftEnabled: true, RaftDataDir: /var/lib/orchestrator, RaftBind: 10.0.0.7, RaftNodes: [10.0.0.7, 10.0.0.8, 10.0.0.9], DetectClusterAlias: true, RecoverMasterClusterFilters: [*], RecoveryPeriodBlockSeconds: 30, PostMasterFailoverProcesses: [ bash /usr/local/orchestrator/scripts/failover_to_proxy.sh {failureType} {destinationHost} {destinationPort} ] }Orchestrator 用來(lái)連接 MySQL 拓?fù)涞馁~號(hào)權(quán)限要謹(jǐn)慎給不要直接給 root。我的做法是單獨(dú)建orc賬號(hào)授權(quán)CREATE USER orc% IDENTIFIED BY orcpass; GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT, PROCESS, SUPER ON *.* TO orc%;SUPER權(quán)限是必須的因?yàn)?Orchestrator 需要執(zhí)行START SLAVE、STOP SLAVE、CHANGE MASTER TO、修改read_only這類操作。一開始我嘗試去掉這個(gè)權(quán)限結(jié)果切換到一半就報(bào)權(quán)限不足整個(gè)恢復(fù)流程直接卡住后來(lái)老老實(shí)實(shí)加回去了。還有一個(gè)重要配置是RecoveryPeriodBlockSeconds。它表示同一集群在一次切換后的多少秒內(nèi)不會(huì)再次觸發(fā)恢復(fù)避免頻繁抖動(dòng)導(dǎo)致集群狀態(tài)反復(fù)橫跳。我設(shè)成了 30 秒實(shí)際線上如果舊主恢復(fù)后一直不穩(wěn)這個(gè)值可以再調(diào)大比如 60 秒保證有足夠時(shí)間人工介入。3.3 故障切換的判定與候選從庫(kù)規(guī)則Orchestrator 對(duì)主庫(kù)的健康檢查用的是 MySQL 原生連接每秒執(zhí)行一次簡(jiǎn)單查詢。連續(xù)探測(cè)失敗后會(huì)進(jìn)入恢復(fù)流程?;謴?fù)過(guò)程大致是確認(rèn)主庫(kù)狀態(tài)收集所有從庫(kù)的復(fù)制狀態(tài)和 GTID 集合。從候選從庫(kù)里選出一個(gè) GTID 集合最完整、復(fù)制延遲最低的實(shí)例。停止該從庫(kù)的復(fù)制線程執(zhí)行STOP SLAVE等待 relay log 應(yīng)用完畢。把該從庫(kù)提升為新主SET GLOBAL read_onlyOFF、SET GLOBAL super_read_onlyOFF。把其他從庫(kù)通過(guò)CHANGE MASTER TO ... MASTER_AUTO_POSITION1重新指向新主。如果舊主恢復(fù)了嘗試把它也變成新主的從庫(kù)并強(qiáng)制設(shè)成只讀防止腦裂。這個(gè)鏈條里最關(guān)鍵的是第二步“選候選人”。Orchestrator 默認(rèn)會(huì)根據(jù) GTID 集合和延遲來(lái)選但實(shí)際生產(chǎn)環(huán)境里我們更希望讓指定的一兩臺(tái)機(jī)器優(yōu)先成為新主而不是隨便選。這可以在實(shí)例上設(shè)置 promotion rule 來(lái)實(shí)現(xiàn)。比如讓10.0.0.11這臺(tái)配置最好、和主庫(kù)同機(jī)房的機(jī)器作為首選新主我是通過(guò) Orchestrator 的 web 界面把它的 promotion rule 設(shè)為prefer把一臺(tái)性能較差的從庫(kù)設(shè)為must_not這樣即使它的 GTID 不是最新Orchestrator 也不會(huì)選它當(dāng)主。4. ProxySQL 讀寫分離實(shí)現(xiàn)與自動(dòng)感知切換Orchestrator 解決了“誰(shuí)是新主”的問題但應(yīng)用側(cè)的流量不會(huì)自動(dòng)知道新主是誰(shuí)。這就是 ProxySQL 的工作。ProxySQL 作為應(yīng)用和 MySQL 之間的接入層它接收來(lái)自應(yīng)用的所有數(shù)據(jù)庫(kù)連接再根據(jù) hostgroup 和查詢規(guī)則把語(yǔ)句分發(fā)到具體的后端實(shí)例。4.1 ProxySQL 部署后的核心配置ProxySQL 版本 2.x 有兩個(gè)端口6032 是管理端口6033 是業(yè)務(wù)端口。我所有配置都是通過(guò)管理端口改的這樣可以避免去手動(dòng)改配置文件再重啟進(jìn)程。先配置后端節(jié)點(diǎn)INSERT INTO mysql_servers(hostgroup_id, hostname, port, weight, comment) VALUES (10, 10.0.0.10, 3306, 100, writer node); INSERT INTO mysql_servers(hostgroup_id, hostname, port, weight, comment) VALUES (20, 10.0.0.11, 3306, 100, reader node 1); INSERT INTO mysql_servers(hostgroup_id, hostname, port, weight, comment) VALUES (20, 10.0.0.12, 3306, 100, reader node 2); INSERT INTO mysql_servers(hostgroup_id, hostname, port, weight, comment) VALUES (20, 10.0.0.13, 3306, 100, reader node 3);這里我用 hostgroup 10 表示寫組hostgroup 20 表示讀組。配置賬號(hào)和路由規(guī)則INSERT INTO mysql_users(username, password, default_hostgroup) VALUES (appuser, apppass, 10); INSERT INTO mysql_query_rules(rule_id, active, match_pattern, destination_hostgroup, apply) VALUES (1, 1, ^SELECT.*FOR UPDATE, 10, 1); INSERT INTO mysql_query_rules(rule_id, active, match_pattern, destination_hostgroup, apply) VALUES (2, 1, ^SELECT, 20, 1); INSERT INTO mysql_query_rules(rule_id, active, match_pattern, destination_hostgroup, apply) VALUES (3, 1, .*, 10, 0);SELECT ... FOR UPDATE必須走寫組因?yàn)檫@種查詢本質(zhì)上是在鎖定行如果放讀組去執(zhí)行鎖的語(yǔ)義就沒了。普通SELECT走讀組剩下的全部走寫組兜底。配置完記得執(zhí)行LOAD MYSQL SERVERS TO RUNTIME、LOAD MYSQL QUERY RULES TO RUNTIME、LOAD MYSQL USERS TO RUNTIME否則不會(huì)生效。4.2 讓 ProxySQL 在切換后自動(dòng)跟著新主走很多教程會(huì)提到mysql_replication_hostgroups這個(gè)表讓 ProxySQL 通過(guò)檢測(cè)實(shí)例的read_only狀態(tài)自動(dòng)把節(jié)點(diǎn)分到寫組或讀組。這個(gè)方案理論可行但我實(shí)際用下來(lái)發(fā)現(xiàn)它依賴監(jiān)控線程的掃描周期新主提升后read_onlyOFF和舊主恢復(fù)后被設(shè)成read_onlyON這兩個(gè)狀態(tài)變化不一定能立刻被捕捉到期間流量可能短暫走錯(cuò)節(jié)點(diǎn)。我采用的方式更直接在 Orchestrator 完成主從切換后通過(guò)PostMasterFailoverProcesses調(diào)用一個(gè)腳本腳本直接改 ProxySQL 里寫主機(jī)組的節(jié)點(diǎn) IP然后立刻加載到 runtime。腳本內(nèi)容大致如下#!/bin/bash # 參數(shù)順序按當(dāng)前版本實(shí)際打印參數(shù)為準(zhǔn)首次接入時(shí)先打印一次再定 NEW_MASTER$3 NEW_PORT$4 mysql -h 127.0.0.1 -P 6032 -uadmin -padmin -e UPDATE mysql_servers SET hostname${NEW_MASTER}, port${NEW_PORT} WHERE hostgroup_id10; LOAD MYSQL SERVERS TO RUNTIME; SAVE MYSQL SERVERS TO DISK; 你看到的$3、$4的位置要特別謹(jǐn)慎。不同版本的 Orchestrator 傳給PostMasterFailoverProcesses的參數(shù)順序不完全一樣我在本地接腳本時(shí)專門打印了所有參數(shù)確認(rèn)新主 IP 和端口在第幾個(gè)位置才定下來(lái)。如果你裝的是別的版本第一次上線前一定要模擬一次切換把這個(gè)地方驗(yàn)證透。為什么我不寫死舊主 IP因?yàn)槿绻f主恢復(fù)后被重新納入集群它的 IP 可能還在寫組里但角色已經(jīng)變成從庫(kù)。如果不改掉ProxySQL 會(huì)把寫流量同時(shí)發(fā)給兩個(gè)節(jié)點(diǎn)造成腦裂。通過(guò)腳本把寫組里的 IP 直接替換成新主 IP舊主即使在mysql_servers表里也只會(huì)放在讀組。4.3 應(yīng)用層需要注意的配合ProxySQL 切換后理論上應(yīng)用不需要改任何代碼但連接池里的長(zhǎng)連接不會(huì)立刻斷開。ProxySQL 在探測(cè)到后端不可用后會(huì)逐步淘汰這些連接應(yīng)用下一次從連接池取連接時(shí)重新經(jīng)歷認(rèn)證和路由自然就走到新主了。為了加快這個(gè)收斂過(guò)程我在應(yīng)用側(cè)的數(shù)據(jù)庫(kù)連接池里把連接存活時(shí)間設(shè)成 30 秒以內(nèi)并且開啟空閑連接檢測(cè)避免某些老連接一直占著舊主的資源。另外要提醒一點(diǎn)transaction_persistent這個(gè)規(guī)則要慎用。我們最初為了解決“事務(wù)內(nèi)先寫后讀被分發(fā)到從庫(kù)導(dǎo)致數(shù)據(jù)不一致”的問題給事務(wù)開啟了 persist 模式結(jié)果所有事務(wù)里的讀也被鎖定到寫組讀從庫(kù)的利用率反而降下來(lái)了。后來(lái)在應(yīng)用代碼里強(qiáng)制要求事務(wù)內(nèi)不要混用實(shí)時(shí)讀這才徹底解決。如果你們的業(yè)務(wù)事務(wù)邏輯比較復(fù)雜先把事務(wù)和讀寫分離的邊界理清再上 ProxySQL否則排查問題會(huì)很痛苦。5. 故障演練把主庫(kù)直接 kill 掉的完整過(guò)程配置再好看不演練等于沒配置。故障演練是所有高可用方案上線前必須做的一步而且不能只在測(cè)試環(huán)境做要在業(yè)務(wù)低峰期、有監(jiān)控陪跑的情況下對(duì)生產(chǎn)環(huán)境做真實(shí)的切換驗(yàn)證。我們那次演練是在凌晨?jī)牲c(diǎn)業(yè)務(wù)量最小但流量入口都是真的。5.1 演練前的準(zhǔn)備和檢查清單演練前我把狀態(tài)檢查做成了一份清單逐項(xiàng)核對(duì)過(guò)Orchestrator web 界面能看到完整拓?fù)湟恢魅龔臓顟B(tài)正常沒有報(bào)錯(cuò)。三臺(tái)從庫(kù)SHOW SLAVE STATUS里Seconds_Behind_Master都是 0。ProxySQL 監(jiān)控賬號(hào)能正常連到所有后端節(jié)點(diǎn)管理接口能執(zhí)行修改。failover_to_proxy.sh已經(jīng)手動(dòng)執(zhí)行過(guò)一次確認(rèn)腳本本身沒有語(yǔ)法錯(cuò)誤。應(yīng)用側(cè)連接池參數(shù)已經(jīng)調(diào)好準(zhǔn)備接受短暫的寫連接抖動(dòng)。監(jiān)控告警里關(guān)于主庫(kù)宕機(jī)的通知暫時(shí)設(shè)成靜默避免大半夜嚇到值班同學(xué)。這里有一項(xiàng)往往被人忽略腳本要先用“假參數(shù)”在測(cè)試環(huán)境里跑一遍確認(rèn)能改庫(kù)、能加載到 runtime、能 save 到 disk。我第一次寫腳本時(shí)直接在生產(chǎn)上跑結(jié)果因?yàn)?ProxySQL admin 的密碼在腳本里寫錯(cuò)了執(zhí)行報(bào)錯(cuò)整個(gè)切換鏈路直接斷掉。雖然這是小問題但在真實(shí)故障時(shí)會(huì)變成致命的。5.2 主庫(kù)宕機(jī)后的時(shí)間線和系統(tǒng)行為實(shí)際演練時(shí)我在主庫(kù)上直接執(zhí)行了kill -9模擬最嚴(yán)重的進(jìn)程級(jí)故障。下面是整個(gè)時(shí)間線時(shí)間點(diǎn)事件00:00:00主庫(kù) MySQL 進(jìn)程被殺應(yīng)用寫請(qǐng)求開始報(bào)錯(cuò)00:00:02Orchestrator 第一次探測(cè)失敗進(jìn)入確認(rèn)階段00:00:05多節(jié)點(diǎn)確認(rèn)主庫(kù)不可達(dá)觸發(fā)恢復(fù)流程00:00:08候選從庫(kù)被選中停止復(fù)制并回放完 relay log00:00:10新主read_only被關(guān)閉其余從庫(kù)重新指向新主00:00:12PostMasterFailoverProcesses腳本執(zhí)行ProxySQL 寫組切換到新主00:00:14應(yīng)用新連接全部走到新主寫入恢復(fù)整個(gè)切換過(guò)程大約 14 秒其中數(shù)據(jù)庫(kù)角色切換只花了 8 秒剩下幾秒是等待 relay log 追平和流量刷新。很多系統(tǒng)顯示“秒級(jí)切換”實(shí)際上說(shuō)的是探測(cè)器發(fā)現(xiàn)問題到選出新主的時(shí)間真正要等到 relay log 全部應(yīng)用、ProxySQL 刷新生效業(yè)務(wù)才能恢復(fù)。這個(gè)時(shí)間受從庫(kù)的積壓和硬件性能影響很大像我們這次沒有明顯積壓所以 14 秒完成如果從庫(kù)本身延遲好幾秒切換時(shí)間也會(huì)相應(yīng)拉長(zhǎng)。5.3 演練中暴露出的兩個(gè)問題第一次演練其實(shí)不是一次過(guò)的暴露了兩個(gè)當(dāng)時(shí)沒注意到的問題。第一個(gè)問題是其中一臺(tái)從庫(kù)在切換完成后復(fù)制線程一直顯示NO。原因是它和新主的 GTID 集合不完全匹配Orchestrator 雖然已經(jīng)發(fā)了CHANGE MASTER TO MASTER_AUTO_POSITION1但該從庫(kù)的 relay log 里還殘留著一些舊主的事務(wù)這些事務(wù)在 GTID 集合里已經(jīng)存在所以從庫(kù)認(rèn)為沒有新事務(wù)要執(zhí)行直接卡住。排查方法是在從庫(kù)上執(zhí)行STOP SLAVE; START SLAVE;如果還不行就需要RESET SLAVE強(qiáng)制重新初始化復(fù)制。這里有個(gè)原則在 GTID 環(huán)境下不要輕易去手工指定位點(diǎn)否則很容易破壞 GTID 集合的完整性正確做法是讓從庫(kù)從新主重新拉全量或者重置復(fù)制狀態(tài)。第二個(gè)問題比較隱蔽切換完成后應(yīng)用側(cè)有大量長(zhǎng)連接沒有立即感知到新主導(dǎo)致部分寫請(qǐng)求在舊主連接上持續(xù)超時(shí)。監(jiān)控里看到這段時(shí)間內(nèi)連接池里的borrow失敗率和timeout明顯飆升。后來(lái)我在應(yīng)用連接池里配置了連接最大存活時(shí)間和連接有效性探測(cè)才把這個(gè)收斂時(shí)間從幾十秒縮短到幾秒。為什么這時(shí)候才注意因?yàn)闇y(cè)試環(huán)境連接量小根本看不出來(lái)連接池回收慢的后果。6. 上線后陸續(xù)踩過(guò)的幾個(gè)坑以及對(duì)應(yīng)的優(yōu)化方案上線幾個(gè)月后集群平穩(wěn)運(yùn)行過(guò)也陸續(xù)出現(xiàn)過(guò)一些不算致命但很影響體驗(yàn)的問題。這些經(jīng)驗(yàn)比搭建過(guò)程更值錢單獨(dú)列一節(jié)講清楚。6.1 從庫(kù)復(fù)制延遲從 100 秒降到 3 秒的調(diào)整TB 級(jí)數(shù)據(jù)、讀寫分離后讀從庫(kù)很容易被大查詢拖慢進(jìn)而導(dǎo)致Seconds_Behind_Master居高不下。我一直覺得一主三從里最需要監(jiān)控的不是主庫(kù)負(fù)載而是從庫(kù)的復(fù)制延遲。一次大促前巡檢我發(fā)現(xiàn)其中一臺(tái)從庫(kù)延遲已經(jīng)到 100 秒再下去讀寫分離的意義就沒了。排查后原因有兩層。一是 MySQL 5.7 的默認(rèn)配置里從庫(kù)復(fù)制是單線程的SQL 線程一個(gè)事務(wù)一個(gè)事務(wù)地往前推遇到大事務(wù)或 DDL 就卡住。我在從庫(kù)上加了并行復(fù)制參數(shù)[mysqld] slave_parallel_type LOGICAL_CLOCK slave_parallel_workers 8 slave_preserve_commit_order ON注意 5.7 的并行復(fù)制只有在binlog_format ROW且主庫(kù)開啟了組提交的情況下才有比較明顯的效果。另外slave_preserve_commit_order保證了并行回放時(shí)不會(huì)因?yàn)槭聞?wù)順序錯(cuò)亂導(dǎo)致數(shù)據(jù)不一致這個(gè)參數(shù)不能省。其次是讀寫分離帶來(lái)的讀放大問題。大量的分析型查詢直接打到同一臺(tái)從庫(kù)上把它的 CPU 打滿了復(fù)制線程吃不到資源。解決方法是把查詢量最大的幾個(gè)報(bào)表接口單獨(dú)分到指定從庫(kù)其他常規(guī)讀走另外兩臺(tái)從庫(kù)之間做按業(yè)務(wù)維度的分流而不是完全隨機(jī)負(fù)載均衡。調(diào)整完以后三臺(tái)從庫(kù)的延遲長(zhǎng)期穩(wěn)定在 3 秒以內(nèi)。6.2 半同步復(fù)制要不要上MySQL 5.7 默認(rèn)的復(fù)制是異步的主庫(kù)事務(wù)提交成功就返回binlog 還沒送到從庫(kù)。這種模式在主庫(kù)宕機(jī)時(shí)理論上可能丟失最后一個(gè)事務(wù)。半同步復(fù)制能壓縮這個(gè)窗口但也帶來(lái)額外的性能開銷。我在實(shí)際環(huán)境中是分階段開的先只在主庫(kù)和兩臺(tái)關(guān)鍵從庫(kù)之間開啟半同步觀察了大半個(gè)月確認(rèn)沒有明顯寫入性能劣化后才在剩下那臺(tái)上同步開啟。半同步配置需要注意參數(shù)[mysqld] plugin-load semisync_master.so;semisync_slave.so rpl_semi_sync_master_enabled 1 rpl_semi_sync_slave_enabled 1 rpl_semi_sync_master_timeout 1000 rpl_semi_sync_master_wait_point AFTER_SYNCrpl_semi_sync_master_timeout設(shè)置成 1000 毫秒很關(guān)鍵。如果從庫(kù)確認(rèn)延遲超過(guò)這個(gè)值主庫(kù)會(huì)自動(dòng)退化為異步復(fù)制至少保證寫入不會(huì)一直卡死。AFTER_SYNC是比默認(rèn)值更安全的模式它保證在事務(wù)提交到存儲(chǔ)引擎之前就等待從庫(kù)確認(rèn)這樣即使主庫(kù)馬上宕機(jī)事務(wù)也已經(jīng)在從庫(kù)的 relay log 里了。網(wǎng)上很多文章只提開啟半同步不提AFTER_SYNC在這個(gè)點(diǎn)上容易被帶偏。不過(guò)要提醒你半同步不能保證零丟失。主庫(kù)已經(jīng)提交但還沒拿到從庫(kù)確認(rèn)的那個(gè)瞬間如果主庫(kù)掛了事務(wù)仍然可能丟失。所以它只能作為降低丟數(shù)據(jù)概率的手段不能替代定期的完整備份和 binlog 備份。6.3 日常巡檢、備份和監(jiān)控切換做得再好數(shù)據(jù)也可能在某個(gè)角落出問題。我現(xiàn)在的日常運(yùn)維節(jié)奏是每周用 XtraBackup 做一次全量備份保留最近四周的備份集每天做一次增量備份保留最近七天。巡檢時(shí)用orchestrator -c topology -alias cluster看拓?fù)涫欠褚恢掠肧HOW SLAVE STATUS看延遲重點(diǎn)看有沒有NO狀態(tài)。數(shù)據(jù)一致性用pt-table-checksum分庫(kù)分表跑限速參數(shù)開到很低避免給線上帶來(lái)壓力。發(fā)現(xiàn)差異后用pt-table-sync修復(fù)修復(fù)前必須先備份相關(guān)表結(jié)構(gòu)。監(jiān)控指標(biāo)主要盯主從延遲、從庫(kù)復(fù)制進(jìn)程狀態(tài)、主庫(kù)磁盤空間、ProxySQL 后端健康狀態(tài)、連接池使用率、慢查詢數(shù)量。這套方案跑到現(xiàn)在最讓我放心的不是“主庫(kù)掛了自動(dòng)切”而是每次切換后都知道流量會(huì)往哪里走舊主恢復(fù)后不會(huì)再被寫入從庫(kù)會(huì)重新對(duì)齊到新主。這種確定性才是高可用方案真正該追求的東西。最后再分享一個(gè)小技巧所有和 Orchestrator 掛鉤的切換腳本一定要寫成冪等的。也就是說(shuō)同一個(gè)腳本連續(xù)執(zhí)行兩次要么第二次不產(chǎn)生新影響要么能安全地糾正掉第一次的殘留異常。我的腳本里在UPDATE mysql_servers之前加了判斷如果目標(biāo) IP 已經(jīng)存在就不再重復(fù)執(zhí)行這樣即使 Orchestrator 因?yàn)楫惓V貜?fù)觸發(fā)同一個(gè)恢復(fù)流程ProxySQL 的配置也不會(huì)被寫爛。這些小細(xì)節(jié)看著不起眼但關(guān)鍵時(shí)刻能少挨幾次半夜的告警電話。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
久久久涩| 超碰碰97| 中日韩免费看男女操逼大全| 99xav| 亚洲一区二区三区中文字幕| 91天美传媒在线| 蜜桃av综合网发布| heyZO天然素人无码AⅤ专区| 亚洲熟妇A V黑人| 欧美人妻二区三区| 天天弄天天操| 97人妻免费中文字幕| 久久9精品| 性爱AV天堂| 亚洲成人碰碰| 一级免费啪啪片| 国产成年女人免费视频播放a| 啊啊啊操死我了| 麻豆亚洲Av成人无码一区精品| 精品久久久久久无码| 久久精品28| 传媒免费一区二区三区| 九九热精品免费视频| 伊人黄色视频免费观看| 久久精视频美日韩在线视频| 一区操逼| 人人摸人人叼| 亚洲激情综合另类男同| 黄片免费视频2019| 精品无码不卡视频| 欧美偷拍区| 凹凸精品熟女在线观看| 欧美情色亚洲| 超碰色美女| 国产精品久久久啊| 3级毛片一二| 密臀AV在线| 在线女人91| 欧洲色| 亚洲操逼视频网站| 五月激情小说| 五月天激情国产综合婷婷婷| 欧美十八禁在线看| 99操逼| 国产欧美日韩精品中文| 中文字幕精品资源在线| 久/久精品99看9| 天天躁日日躁AAAXX| 综合久久久久久久综合网| 亚乱色| 无码黑人精品一区二区三区三| 亚洲精品国产熟女| 国产理论视频在线播放| 脫衣舞一区二区三区| 黄色电影在线播放综合网站 | 91综合中文字幕| 丰满欧美放荡少妇在线| 嗯嗯啊啊好爽| 亚洲精品xxx| 日日夜夜精品视频| 欧美少妇色图| 日本一级特级毛片视频| 岛国激情视频软件| 国产av尤物| 免费亚洲国产精品久久一区| 色色色色色色色色综合| 九七人妻在线| 色踪合AV| 9九九国产| 视频在线观看青青99国产| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 国产午夜精品一区二区三区牛牛| 男人的午夜天堂| 久久久性| 日韩性爱视频免费在线| WWW4虎| 久久综合18p| www.高清无码诱惑一区.com | 亚欧性爱ab| 色色色网站| 欧美精品在线观看| 久久人妻少妇| 99re9| 午夜亚洲WWW湿好大| 一起草日韩| 国产精品99久久久www| 91视频国品一二三区| 熟女在线视频| 国产夫妻性生活视频| 国产精品日日摸夜夜添骚逼| 欧美日本国产日韩激情视频| 色婷婷五月天| 国产一区在线观看无码AV| 国产日韩在线播放| 国产老熟女| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 黄片www视频免费| 国产欧美精选激情视频| 嗯阿好爽好紧| 欧美日韩亚洲少妇寂寞影院正在播放| 最新av网站在线观看| 久99视频| 欧美九一精品久久久熟妇| 高清有码一区二区| 91九久| 国产精品电影推荐| 国产二区三区免费视频| 欧美色五月| 亚熟hd视频在线| 欧美加勒比| 亚洲国产成人精品久久久国产成人一区二区三.| 亚洲精品男人的天堂| 麻豆精品天美| 久久久性| 亚洲97P| 搡老女人老91二区| 99久久综合网| 国产福利av精彩对白| 丰满欧美少妇| 一中国女人毛片水真多| 精品久久視頻在线| 我爱操| 女人喷水视频在线观看| 午夜经典| 怡红院一区二区熟女人妻| 日本熟妇精品九九| 日韩色欲久久一二三四区| 中文字幕91综合| 色香综合| 九九热精品| 久草毛片| 超碰av在线| 职场同事知名国产国产精品久久欧美日韩 | 久久精品天美| 男女猛烈无遮掩视频免费软件| 亚洲精品丝袜-不卡成人免费……| 欧美日韩亚洲少妇寂寞影院正在播放 | 日韩国产品视频中文字| 青草综合| 人人色人人射人人妻| 久久久久久久人妻丝袜| 天天射网| 久久久久亚洲av综合波多野制衣| 亚洲图片 激情小说| 久久久久久69国产一区二区| 秋霞一级A片黄色视频| 婷婷伊人一区| 国产精品一区av在线| 亚洲Av噜噜一区二区三区妖精| 精品无码不卡视频| 加勒比东京热五月天天堂网| 超碰人人超在线观看| 四虎免费在线播放| 青青操青娱乐| 国产一区自拍欧美日韩| 骚货操死你| 色九九综合| 91美女视频在线观看| 黄页18禁| 欧美强奸乱能| 欧美色图色综合| 欧美性暴力猛交XXXX | 久久东京热久久| 啊啊啊 在线观看| 少妇人妻好深太紧了vr91| 亚洲视频二区| 夜夜一区二区| 午夜无码精品免费看性色| 亚欧美无遮挡| 97网址www| 欧美日韩国产另类综合| 成年在线视频日本亚洲在线视频区精品江靖宇公司 | 天天久久| 亚洲人码13| A久久| 粉嫩av平台| 少妇人妻精品| 日韩人妻精品久久久久| 成人一级性爱| 精品一区二区三区麻豆| 亚洲骚男同com| 欧美躁死她一区二区| 波多野结衣被操50分钟免费视频| 久久AV色| 97欧美精品综合| 粉嫩在线一区二区懂色| 色黄污美女啪啪啪免费网站| 午夜美女诱惑电源网| 黑丝少妇麻豆| 亚洲少妇色| 国产亚洲深夜激情| 老司机香蕉久久久久| 亚洲精品国产AV天美传媒| www.人人cao| 色黄污美女啪啪啪免费网站| 日韩一二三区| 超碰9 7女人| 91人妻视频| 大香蕉视频一二三区| 欧美 亚洲 在线| 超碰97首页| 久久久99久9| 久热这里| 无码又爽又硬又激情免费视频| 草草网站影院白丝内射| 亚洲91网| 久久一区二区三区四区五区| 人妻丝袜一区二区三区在线| 97国产综合欧美| 久久天天躁日日躁狠狠躁| 亚洲天天艹| 丁香啪啪| 9 9精品一区二区三区| 亚洲无码久久久久久久| 欧美aaaaaaa| 四虎国产精品永久地址入口| 人妻一二三区| 国产综合网站在线播放 | 中文字幕美女91| 大肥女高潮bbwbbwhd视频| 人妻丝袜一区二区三区在线| 97久操| 福利五区| 色97欧美| www国产精品| 国产欧美另类久久久精品课程| 久久草视频污视频| 超碰免费欧美7| 中文字幕第23区| 国产欧美黑人丰满在线| 中文字幕精品亚洲熟女| 91大香蕉伊人| 91激情综合| 国产精品在线一区二区| 加勒比色综合| 玖玖爱影院| 天天躁日日躁狠狠躁| 久久神马| 操逼天美3区| 嫩呦国产一区二区三区AV| 91黄站| 日本免费二区三区| 亚洲啪啪综合?v一区综合精品区| 乱操乱伦AV| 精品日韩中文在线| 777奇米影视777四色| 国产做?爰片久久毛片?片美国| 强奸乱亚洲| 鲁鲁色综合网| 人人搡人人肉久久精品| 色97综合中文字幕| 午夜精品久久久久久久久久久久久| 久久久久国色αv免费观看| 熟妇色99| 亚洲欧洲综合成人av一区| 天天综合~91| 亚洲美女精品九九视频| 亚洲中文字幕在线视频一区二区| 日韩操逼HD| 天天精品| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 日韩免费中文字幕视频| 久久久久久AⅤ无码免费肉站| 久久久久久久久久8888| 亚洲色图20p| 九九九九九九免费视频| av爱爱爱| 日本福利二区视频| 久久久久元码视频| 97精品在线视频| 天天激情综合站| 欧美一区二区成人一卡| 麻豆AV96熟妇人妻| 精品九区| 亚洲高清欧美总合| 午夜福利精品| 操我啊啊啊啊啊| 男人的天堂2000| 亚洲中文丝袜美腿诱惑字幕| 亚洲第2页| 少妇超碰在线| 黑人性欧美| 欧美日韩中文字幕不卡| 久久在线观看免费视频| 欧美黄页在线| 欧美性91| 色色99| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 日比av无码| 欧美天天性| 欧美疯狂做爰xxxx| 久久久免费视频18| 中文精品一区二去| 97干com| 亚洲国产亚洲天堂| 国产中文大片资源中文字幕 | a片亚洲一本通视频| 9久在线视频只有精品| 中文字幕在线观看丝袜| 欧美亚洲今日在线| 国产av尤物| 亚洲色欧| 色五月网址| 国产免费一区| 久久一级无码精品毛片6| 欧美中文狠| 麻豆国产精品午夜视频| 桃色五月天| 精品少妇一区二区| 成人片在线播放| 久草男人天堂| 日韩美女操b| 黄呦呦在线| 国产一区二区在线播放量| 好湿好紧好爽 视频| 欧美久久人体| 极品白嫩福利在线| 亚洲影院无码在线| 色色综合97| 日韩人妻有码免费视频| 中文字幕人乱码中文字的预防方法| 性色av大全| 嗯嗯啊啊啊啊轻点视频| 欧美精品日韩一区二区| 人人操人人肉久久精品| 免费视频在线观看啊啊啊啊啊| 久久国产乱子伦精品免费女,网站| 激情视屏国产乱伦强奸| 亚洲欧美人妻| 超碰人妻久久人妻中文97| 无码久久亚洲高清,| 欧美视频第二页| 人妻一区视频| 97K超碰在线| 免费观看有码高清视频| 強姦亂倫a| 综合色拍| 99久久综合网| 欧美96精品在线| 91最新综合| 女人被男人桶爽视频网站| 91精品少妇搡搡搡| 久久极品伊人| 日本精品中文字幕视频| 欧美草草| 999久久久九| 亚洲日韩视频二区| 夜夜爽夜夜操| 国产精品亚洲日韩骚欢乐谷最新地址发布页huanieguty性屋娱乐妖精视频 | 热九九精品| 超碰在线人人射| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 天天流夜夜操| 国产家庭乱伦性爱视频| 九九九国产| 丁香五月天久久精品视频一区二区三区| av网页一区二区三区| 欧美三级偷拍| 色www精品视频在线观看| av九九| 一级岛国大片| 国产久久天堂资源| 蜜乳av一区二区三区| 麻豆天美国美国产| 性爱1区| 亚洲成人性爱网站在线播放| 欧美情色亚洲| 亚洲综合校园春色| 亚洲天堂自拍| xxx亚洲午夜天堂| 九月婷婷久久| 国产精品国产拍高清AV| 日本三级R| 日本乱人伦片中文三区| 91视频女生| 韩日精品福利视频一区不卡在线免| 国产亚洲色婷婷久久99精品91| 久久国产熟女影院| 成人小说另类在线| 国产女大学生AV| 影音资源男人日韩| 欧美日韩中文字幕不卡| 青草一区二区| JuliaAnn丝袜熟女系列| 久操精品| 国产无吗在线播放| 国产野战露脸在线播放| 密乳AV免费观看| 欧美激情性爱视频网站| 国产久久av| 国产操逼逼网| 综合久久99| 丁香六月婷婷久久综合| 美女诱惑爱爱| 欧美日韩资源在线| 日韩懂色网| 日韩欧美偷拍美女视频| www久久精品| 天天肏夜夜肏| 91啦人妻| 日韩国产在线观看av| www.91理论| 激情五月天社区| 亚洲五月婷婷| 淫色网综合| 久日91在线| 国产精品色| 99热这里都是精品| 久久久久久久伊人精品| 久久久久亚洲Aⅴ无码| 精品超碰国产| 午夜天堂精品久久| 蜜臀aV午夜一区二区三区| 欧美日韩97在线| 一本色道熟妇| 超碰日韩人妻| 国产成人无码高清| 啊好爽受不了无码| 超碰久久.com| 色综合久久av| 九九在线视频| 超碰中文字幕人妻草一区| 欧美专区17页| 欧洲亚洲国产综合在线| 67914亚洲精品| 啊灬快c我灬啊灬用力灬啊灬-国产精品性做久久久久久-成人AV | 日本一二三免费久久| 精品国产Av无码久久久伦古装 | 麻豆黄站| 国产女人视频三四五区| 青娱乐久久艹| 午夜精品久久久99| 国产成人五月天丁香花| 黄片色区软件| 裸体女人草逼视频播放一区,二区,三区,四区,五区 | 久9无限国产| 国产一区二区精品久久99| 婷婷激情五月| 四虎在线观看网站| 国产欧美在线观看免费观看| 久久女婷| 色香伊人| av在线播放国产一区| 久久五月天婷婷| 性色国产东北露脸精品视频| 亚洲动态色图| 国产女人91精品嗷嗷嗷嗷| 国产农村妇女精品一二区| 狠狠入| 国产操操日韩三级黄| 日韩中字av一区| 亚洲97资源| 中文字幕一区电影在线观看| 天天摸天天碰天天添青青| 变态综合色| 国产精品自产拍在线观看社区| 久久熟妇五十路一区| 国产精品白丝| 九九九九久久久| 青青草原av| 国产精品免费视频人成| 国产精品久久久九九九| 伊人网青青| 久久理论字幕视频| 国产捆绑一区| 国产大片精久久久久久| 高清国产精品福利网站| 口爆综合网| 亚洲资源吧| 图片区小说区| 色与欲影视天天看综合网| 国产高清在线观看欧美| 亚洲综合性网址| heyZO天然素人无码AⅤ专区| 亚洲免费日韩在线一区二区| 国产对白刺激视频| 欧美综合 站| 在线国产福利网址导航| 精品一区99999| 操逼网免费无码视频| 中文字幕在线第二页| 99九九久久| 热99这里有精品综合久久| 亚洲黄色影视| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区 | 五月天偷拍| 亚洲影视综合| 67194无码不卡| 亚洲图片日本AⅤ欧美在线| 91丝袜激情在线| 精品午夜福利国产一区二区在线观看 | 91草草草| 在线观看精品国产免费| 91操熟女视频 | 肉丝无码中文高清| 操人91| 久久久少妇| 日韩钢筋无码高清啾啾啾| 国产一区在线观看无码AV| 亚洲文学偷乱拍啪啪啪啪 | 欧美色综合网| 一区二区三区蜜桃成人撸久久东京热 | 99国产在线 精品 视频| 欧美天天影院| 91色黑人少妇| 亚欧国产无码精品在线| 免费成人自拍视频在线| 97精品国产精品免费观看| 国产一区二区三区影片| 亚洲中文字幕在现观看| 熟女露脸激情自拍视频| 91精品电影18| 久久精品性| 亚洲不卡三级手机播放| 国产精品毛片| 打av高清| 五月激情综合网| av网站在线观看了| 精品国产乱码久久久久久网站入口| 9999伦理视频| 99热伊人| 日韩精品黄片免费观看| 午夜操一操| 久久久一二三四区| 成人一区二区三区四区| 欧美不卡在线美女| 国产精品国产拍高清AV| 久久这里是精品| 狠狠综合网| 精品一区二区在线针对华人免费观看这里只有精品免费观看 | 99精品热| 日韩av影片在线观看| 久久亚洲中文字幕视频| 久久高潮妇女视频| 亚洲色综网| 91性感网站| 婷婷成人久久久精品| 熟女色综合久久| 午夜视频久久久久一区| 成·人免费午夜在线观看| 久久久无码精品人妻二区| 精品一区二区三区四区女| 亚洲日韩一区电影| 国产免费一区在线观看| 人妻 中文 日韩| 啪啪啪精品| 最新国产精品| 91免费看一区二区三区| 欧美日韩97| 日曰骚久久精品| 亚洲色图第四色| 超碰日韩美妻| 欧美日韩另类字幕中文| 操亚州| 动漫区日韩区欧美区| 三级片大波波| 东京成人一区| AV在线资源| 偷拍超碰| 91欧美另类| 精品96久久| 欧美A√综合网 | 青青草字幕AV| 日韩欧美中文字| 国产在线精品电影观看| 97网址97| 女上位精品在线| 久久久久九九九九九| 九九免费影片| 婷婷人妻激情| 日日超碰亚洲| AⅤ片水多多| 国产精品点击进入在线影院| 国产精品美女在线一区| 中国女人内射6XXXXX| 久久久精品无码亚免费| 韩国一级婬片A片AAAAA| 黄污污污污| 色呦呦、国产精品| 最新精品久久蜜桃| 亚洲精品97久久中文字幕| 少妇色欲综合网2| 天天综合~91| 中文字幕一二区二三区人妻专区| 熟女色综合久久| 色九九综合| 久久久久久性爱片| 亚洲综合校园春色| 久久精品无码专区| 蜜乳中文字幕a在线| 26uuu国产成人综合| 99re在线观看| 东京成人一区| 亚洲猛交| 国产Av超碰| 亚洲精品美女久久久久久久久| 婷婷在线视频| 天天综合网1| 国产精品乱码久久久久久久久| 亚洲欧美另类激情小说| 97人人操人人摸人人爱| 久久熟女人| 久久人人爽av亚洲精品天堂桃色| 好吊色青靑草| 操逼片中文| 爱爱60秒免费视频| 天天干夜夜肏| 欧美成年人性爱视频免费观看| 色呦呦呦在线观看视频| 色噜噜国产在线| 超碰在线综合97| 91P0RNY大屁股人妻| 91人妻Pr| 午夜福利在线合集| 91视频综合网| 国产粉嫩出水在线播放| 国产丰满少妇久久久精品影院| 一级AAA片一区二区三区| 干我久操| 欧美少妇熟女| 麻豆色约约| 18禁网站在线播放| 爱干爱射网啊啊啊| 91性情| 中文字幕亚洲在线一区| 大香蕉啪啪啪啪在线| 九九热九九| 久久色情| 亚洲AV永久无码精品成人调教| 午夜乱轮操逼视频免费看| 人人乐大香蕉| 亚洲在饯| 天天舔天天 | 狠狠中文字幕| 97 超碰 人人做 人人爱| 国产精品一区二区三| 国产精选三级在线观看| 欧美一级专区免费大片| 中国一级特黄大片护士| 国产传媒1234区| 欧美激情综合| 欧美在线官网| 亚洲激情视频| 欧美78p| 99re超碰| 伊人久久亚洲中文字幕| 欧美精品二区视频在线| 大香蕉伊人亚洲| 91精品国产91综合久久蜜臀| 日韩亚洲美女一区久久| 国产99热| 久操高青| 天天视频网站黄| 99re9这里只有精品| 国产91影院| 少妇500双飞99| 看免费的黄片| 黑人精品久久97| caoni国产亚洲av| 欧美第二页午夜| 日本一级性爱| 天天欧美| 超碰激情808| 伊人网青青| 熟女高潮合集-永久久久-成人AV| 综合欧美激情网| 午夜福利一区二区三区四区五区色婷婷| 亚洲精品一区二区三区在线播放| 日本好吊色视频| 欧美婷婷五月天| 97免费视频在线| www老逼91| 亚洲欧美在线观看无码| 日韩人妻丝袜美腿中文| 啪啪啪综合网| 亚洲精品国语在线播放| 97爱b| 午夜精品视频777| 欧美翘臀视频网站一区二区三区| 亚洲欧洲美腿丝袜| 国产一在线观看| 91美女精品| 婷婷五月天久久精品视频一区二区三区 | 日韩福利综合一区| 日本天天干天天日一区| 久久精品人体AV| 蜜乳av一区二区| 99re99在线视频| 厕所偷拍在线| 亚洲一区二区三区四区视频| 日韩在线电影| 一区二区三区成人| av中文字幕在线熟女| 欧美激情性久久久久久| 国产白丝网站| 91爰爱欧美| 五月婷婷基地| 国产精品一区二区校花| 欧美 亚洲 第一页| 日韩大香蕉精品在线视频| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 亚洲另类色综合网站| 久久久久久久九九九九九九| 亚洲αv一区二区三区| 欧美人体性爱互联网第一页婷婷日本| 国产成人精品午夜福利| 97久久资源| 免费中文在线| 亚洲高清无毛一区二区| 青草地一本线一区二区三区| 亚洲综合图片在线| 亚洲熟妇丝袜在线观看| 乱老女人一区二区视频| 久久性爱精品一区| 国产强奸无码乱伦| 91综合天天| 国产情色第一第二页在线观看| 大鸡巴久久久| 色婷婷电影网| 操屄不卡视频| 麻花传媒免费网站在线观看| 天天综合中文字幕 91| 人妻偷拍一区二区三区| 狠狠操狠狠| 日韩中文字幕精品一区在线| 蜜桃臀AV在线| 日韩精品99久久久久久中文字幕 | 色妇综合网| 在线亚洲丝袜视频网站| www.超碰| 久热9| 天天色天天干天天射| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 亚洲性爱无码乱伦av| 黄片视频观看| 91成人18| 国产午夜在线观看| 97超碰欧美中文字幕| 偷拍亚洲视频一区二区三区四区| 肏逼福利网站| 亚洲一区二区三区麻豆传媒| 亚欧免费| 操人91| 加勒比AV网| 天天综合网AV91| 干干干天天| 欧美激色| 丁香五月成人| 91亚州| 91五月天| 久久久久久AⅤ无码免费肉站| 亚洲欧美综合网站| 九月丁香| 俺去啦俺来也久久综合| 亚洲天堂人人妻| 欧美性爱在线无码| 日本操逼视频不卡直接放| 国产精品日日摸夜夜添骚逼| 九九九九九九九九九国产精品| 色哟哟av| 欧美色图片色哟哟| 日韩91网| 久久国产乱子伦精品免费女,网站| 99re28在线观看| 婷婷综合伊人一区| 国产高清成人免费视频| 男女激烈网站最新| 欧美日韩第一页| 日本中文字幕在线视频| 丰满人妻一区二区三区| 按摩中文字幕| 精品国产72| 麻豆区久久久久亚| 中文三一区| 天堂69亚洲精品中文字| 中文字幕亚洲永久精品| 欧美亚洲第1页| 中文字幕一区二区视频在线观看| 91/欧美| 午夜性| 日韩福利综合一区| 东北女人高潮视频| 亚洲色91| wwwss在线观看| 玖玖久久久| 色999人与兽| 爱妃国产亚洲视频中文字幕| 97日本超碰综合| 波多野结衣AV无码一区| 亚洲天堂情色| 国内黄色精品| 中文字幕精品专区搜索结果91| 久久久久久久唑| 天天干夜夜一操| 极品色综合| 日本精品高清一二区一本到| 夜草欧美| 亚洲图片激情综合另类| 按摩中文字幕| 亚洲伊人久久综合97| 99精品久久| 午夜一区| 99在线精品视频| 人人妻人人爽一区二区三区| 91黑人无码激情在线| 日本不卡免费二区| 无码伊人久久大杳蕉中文无码| 亚洲丰满很很操| 婷婷激情五月天小说网| 免费99精品国产自在在线| 99性爱在线观看| 新怡红院| 啊啊啊啊嗯嗯嗯用力好爽| 色五月av| 大香蕉在线86| 天堂中文日本在线观看| 夜夜嗨一区二区三区直播内容| 婷婷伊人网| 久久综合九色综合欧洲98| 午夜精品久久久99| 天天插天天操| 黄色成人网久久久久久| 欧美亚洲一区二区久久久婷精品大包诱| www.色吧5.com| 97精品97久久| 欧美熟爽综合| 操逼片中文| 91少妇| 久久高清无码夜夜操| 人妻啊啊人妻啊| 色婷婷成人综合| 亚洲性爱免费电影| 超碰97COm中文| 天天日天天操VV| 91无码中出人妻视频| 超碰成人公开| 激情五月天中文字幕色| 日本幼女18+| 青青草乱入乱欲视频在线观看| 91粉嫩萝控精品福利网站_精品影音先锋国 | 99精品在线观看| 日韩欧美综合激情| 久久首页| 四虎午夜影院| 91在线免费精品视频| 欧美亚洲色的图| 91女优在线观看| 搞中出视频在线观看| 少妇69中文| 佐山爱中文字幕| 人妻日日夜夜精品 | 亚洲国产欧美日韩人妻日中文| 亚洲免费看片| 97精品综合久久| 激情丁香五月婷婷| 亚洲少妇喷视频看| 亚洲情色五月天| 99爱久久视频频| 男人的天堂激情| 久久亚洲不卡一区二区三区| 久久国产精品91| 亚州色站 日韩电影| 男人下部插入女人下部| 热天堂一区二区| 97久久精品国产| SUV一区二区在线看| 97超碰欧美手机在线| 伊人欧美大香蕉视频| 亚洲欧美综合| 91国产丝袜美女| 又粗又长又爽在线观看| 久久黄片国产一区二区| 亚洲成人激情小说视频| 国产一区二区三区白丝| 国产Aα| 97啪啪| 天天躁日日躁狠狠狠躁| 9Ⅰ超碰| 精品久久久久av影院| 国产天美欧美| 亚洲天天精品| 色欲天天婬色婬香WWW夜色| 人人干人人搞人人摸| 极品丝袜无码| 亚洲骚逼少妇| 国产午夜激片Av毛片不卡| 暖暖精品二区三区观看| 夜夜嗨老熟女AV一区二区三区| 搡老熟女免费视频| 成人片在线播放| a片亚洲一本通视频| 91搡老女人老妇女老熟女歌词翻译| 国产传媒午夜理伦精品| 九九天堂| 丝袜美腿av女优在线| 亚洲欧美日韩综合在线尤物| 亚洲视频,小说| 八戒午夜福利理论片| 亚洲骚女一区二区三区| 国产精品操| 大香蕉手机视频| 一区二区视频在看| 强奸a片网| 清纯唯美激情| 日本99视频| 色逼综合| AND人妻系列| 欧美色综合网| 欧美精品99久久久| 国产精品九九九| www四虎| 懂色av色欲av蜜臀av| 性色av一区二区| 日本午夜福利影院| 国产精品成人午夜福利| 欧美色偷拍| 亚洲婷婷丁香在线| 精品射1999| 97人人夜夜精品视频| 国产兽交视频在线播放| 91大胆欧美| 欧美97爱| 欧美性暴力猛交XXXX | 97色视频在线| 欧美成人A天堂片在线观看| 久草久日| 看日韩美女二区三区免费操逼视频| 四虎在线视频| 日韩欧美水蜜桃人妻| 日本护士高潮| 男人天堂网手机版婷婷| 99超级碰免费视频| 亚洲男人天堂av| 久久精品电影| 97色色色| 久久人人爽爽人人爽人人片αV| 综合熟妇一区二区三区| 色色国产| 日本性爰一道本| 尤物视频视频官网| 97看操| 毛片17S| 久久久蜜桃一区二区三区| 色综合V| 九九九九欧美| 99热97| 天天爽天天| 亚洲精品乱码久久久久久蜜桃麻豆 | 伊人991| 国产欧美日韩在线观看麻豆传媒公司 | 欧美日不卡| 黑人操一区二区| 免费中文综合精品| 亚洲欧洲中文日韩女优乱码| 精品97久久| 日本国产二线女色| 91痴汉| 精品美女人人干| 日韩精品人妻中文字幕久久久| 免费看污网址| 天天搞在线综合网| 婷婷五月综合在线| 天天激情综合站| 久久中文字幕不卡人妻| 91P0RNY大屁股人妻| 啊啊啊操死我| 91老熟女视频| 国产无码精品高清| 岛国福利在线精品播放| 欧美色性爱| 九九久久一区二区伦理| 亚洲av影院在线观看| 久久99精品视频| 玖色AV| 日本一区二区电影网站| 亚洲污污网站| 啊灬啊灬啊灬啊灬高潮奶出了免费视 | 狠狠久久手机视频精品| 亚洲 无码 偷拍| 欧美日韩亚洲一区二区在线观看| 一牛影视成人片免费| 丁香五月天堂网| 春色校园综合网| 中文字幕第23区| 张柏芝国产一区在线观看| 一本色道综合久久欧美| 新版天堂中文资源8在线| 97资源制服丝袜| 一区二区视频你懂的| 91熟女丨老女人| 日本精品网站在线中文| 国产熟女少妇一区| 精品国产乱码久久久兰草影视| 凹凸 69堂 在线播放| 中文字幕国产| 91狠| 99久草| 国产又操| 精品欧美日韩在线观看| 亚洲男人久久综合天堂| 激情五月天插| AV不卡在线| 天堂精品小草| 精品视频在线观看| 亚洲av强奸乱伦| 久草精品一区 | 内射小黄片| 丝袜综合| 亚洲欧美日韩制服另类| 天天综合亚在线| 91爱| 综合久草| 日本久久女同性恋视频| 色婷婷五月综合| 天天爽天天操啊啊啊| 色色色色电影网| 射久久| 日韩另类色图| 久久久久亚洲熟妇熟女| 婷婷五月天久久精品视频一区二区三区| 色香伊人| 中文字幕在线观看视频www| 东北女人高潮视频| 中文字幕国产精品1区| 精品一级毛片在线观看| 国产精品一区二区后入| 干干干天天| 好爽视频在线观看视频| 亚洲欧洲偷拍一区| 精品国产一区二区三区在线播出| 99国内熟女露脸视频| wwwcaobibi| 9久在线视频只有精品| 青青草色插素人| 91蜜臀熟女| 成人麻豆av电影网站| 色狠狠一区二区三区香蕉| 91狠狠综合久久久久久| 97精品在线视频| 青青草久草AV| 综合网欧美在线| 日本亚洲熟女视频| 日韩熟女三十乱伦| 无码粉嫩白虎一线天b区| 97青青操视频| 大香蕉亚洲中文| 日韩精品亚洲专区在线影视| 人妻无一区二区三区| 97超碰国产亚洲精品| 色情五月综合婷婷| 手机在线视频国内精品| 国产强奸乱伦第1页| 日韩99999| 日韩大香蕉精品在线视频| 91麻豆天美传媒HD| 国产欧美日韩女同性恋ww喷水精品| 大香蕉一线视频| 精爱久久| 久久国产视频专区一二三| 婷婷丁香五月激情啪啪| 日韩欧美字幕亚洲一区二区| 亚洲自拍天堂| 国产女人和拘做爰视频| 久久精品国产欧美日韩亚洲欧美日韩中文久久国产一区 | 日韩二三区| 337p大胆噜噜噜噜噜91Av| 午夜欧美女人操逼| 免费看国产曰批40分钟怎么下载| 青青青国产手线观看视频2| 性色综合网| 国产一级舔足在线观看| 超碰97中文| 在线毛片片免费观看| 欧美人与动性人交a| 国产探花日韩援交| 91高清无码下载| 国产女人操逼视频| 一区二区娱乐网站| 国产少妇与亚洲av| 美女啪欧美一区| 色亚州人久干视频在线观看免费版| 欧美色综合图片| 欧美情色贴图| 青青草原香蕉日本Ap| 天堂资源站| 麻豆精品.欧美精品.日韩精品.| 最新AV在线| 婷婷午夜成人色中色| av资源在线播放天堂| 日韩人妻网站| 日本不卡免费二区| 熟妇xxxxx性春色| 亚洲国产第一页综合视频| 中日无幕一二三四区| 久久精品国产99久久,亚洲日韩久久日本一区一区三区 | 偷拍 精品 另类 四区| 亚洲欧美在线综合| 青春草莓视频在线观看网址| 午夜偷拍久久熟女| 久久国产99精品72福利 | 操逼网免费无码视频| 亚洲男人的天堂V| 亚洲av无码成人精品国产| 伊人五月天| 国产精品粉嫩福利在线| 人妻素股| 人人看人人爰人人操| 色噜噜狠狠色综无码久久合欧美| 久久99草| 久久久99免费| 超碰 另类 欧美| 丝袜美腿av女优在线| www99热| 超碰色美女| 欧美一区二区三区日韩| 加勒比海成人视频网| 吖在线不卡一区二区国产剧情| 亚洲精品一区二区三区新线路| 欧美综合第一页| 亚洲操人| 久久久不卡| 久久中文字幕不卡人妻| 色妺妺在线视频| 亚洲成人激情小说视频| 99丝袜福利在线播放| 青娱乐老司机视频| 免费看污网址| 韩国三级理论在线| 九九人妻| 蜜桃精品一区二区三区ww| 中文字幕丰满人妻日本| 欧美日韩天堂| 五月天玖玖资源站| 亚洲久草AV色图| 久久一区无码| 中文字幕乱码人妻二区三区| 91在线丝袜| 91色综| 最新日产中文在线麻豆| 91热热色| 精品一国2| 天天日B狠狠操| 国语精品内射在线观看| 亚洲在线欧美| 天操老女人| 欧美在线官网| 在线性黄高清免费视频| 国产精品黑人一区二区三区| 夫妻AV网站| 久久精品视频久久久| 久操婷婷| 亚一综合久久久久久久久久| 亚洲情欲| 风韵犹存大大大大香蕉| 丝袜亚洲91| 330Dv国产女人终合视频极品人与兽| 操逼啊啊啊91| 巨爆乳一区二区爆乳区| 91精品国产91久久青草| 日韩熟女精一区二区三区不卡|