成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

面試官問:MySQL 能用 Docker 部署嗎?答錯直接掛!

數(shù)據(jù)庫 MySQL
Docker 還是非常適合用來部署 微服務、輕量級應用,但對于有復雜配置和高穩(wěn)定性要求的大型數(shù)據(jù)庫,裸機或者虛擬機部署會更加合適。?

Docker 可以輕松地從遠程倉庫拉取鏡像,并快速部署應用,簡單高效,極其方便。

曾經(jīng)剛接觸Docker的時候,一度以為一切皆可容器化,自己在使用Docker的時候,也是直接Docker部署。

但很多企業(yè)在實際生產(chǎn)環(huán)境中,并不會選擇將 MySQL 部署在 Docker 容器中,而是更傾向于直接部署在物理機或虛擬機上。

為什么呢?難道企業(yè)不知道容器化很方便嗎?

第一大問題:數(shù)據(jù)庫是有狀態(tài)應用,擴容非常麻煩

1.1 Docker容器:有狀態(tài) vs 無狀態(tài),差別有多大?

在 Docker 的世界里,容器其實分兩種:有狀態(tài)和無狀態(tài)。這兩者在設計思路、應用場景、擴容方式上,完全是兩個邏輯。

圖片圖片

什么是有狀態(tài)容器?

簡單說,有狀態(tài)容器就是:運行過程中必須“記住”數(shù)據(jù)。比如 MySQL、Redis、消息隊列等,這些應用必須確保數(shù)據(jù)持久、可靠,哪怕容器重啟、遷移、甚至崩潰,數(shù)據(jù)也不能丟。

所以有狀態(tài)容器通常需要:

  • 掛載數(shù)據(jù)卷(Volumes)
  • 綁定宿主機路徑(Bind Mounts)
  • 使用網(wǎng)絡存儲(如 NFS、云盤)

這些操作都是為了:讓數(shù)據(jù)活得比容器久。

典型場景:數(shù)據(jù)庫、文件服務器、緩存中間件等。
難點:擴容復雜,數(shù)據(jù)一致性、同步、節(jié)點狀態(tài)都需要嚴密設計,稍有不慎就會出問題。

什么是無狀態(tài)容器?

無狀態(tài)容器則完全不同:它從來不關心自己的過去。數(shù)據(jù)不會保存在容器里,處理完請求,事情就結(jié)束了,下一次請求,它隨時可以從“零”開始。

典型場景:前端應用、Web 服務器、API 網(wǎng)關、負載均衡器。
好處:橫向擴容超級簡單,隨時加機器,隨時銷毀,彈性伸縮非常友好。

無狀態(tài)容器特別適合用 Kubernetes 這樣的編排工具,輕松實現(xiàn)秒級擴縮容。

1.2 MySQL 是有狀態(tài)應用,擴容真的很麻煩

說到這里,核心問題其實就一句話:MySQL 是有狀態(tài)的,擴容、遷移、運維都特別復雜。

不像那些 Web 服務,想加機器就加機器,數(shù)據(jù)庫可是動不得的核心。 它的“數(shù)據(jù)狀態(tài)”必須始終保持,哪怕系統(tǒng)重啟、服務器宕機,數(shù)據(jù)都不能有任何損壞或丟失。

1.3 為什么 MySQL 是有狀態(tài)的?到底卡在哪里?

為什么 MySQL 天生就是有狀態(tài)應用:

1、數(shù)據(jù)持久化

MySQL 最重要的使命就是:把數(shù)據(jù)存起來,永遠不能丟。如果你用 Docker 部署,但不做特殊處理,容器一旦關閉,數(shù)據(jù)就直接消失,連備份都沒得找。

2、配置文件必須保留

像 my.cnf 這種配置文件,如果不掛載出來,容器一重啟,所有配置都會被重置,白忙一場。

3、日志文件要持久

錯誤日志、慢查詢?nèi)罩尽⒍M制日志……這些全是排查問題、恢復數(shù)據(jù)的關鍵。容器內(nèi)的數(shù)據(jù)層是臨時的,重啟后日志就沒了,完全不符合生產(chǎn)要求。

那 Docker 部署 MySQL 怎么保證數(shù)據(jù)不丟呢?

很簡單,關鍵在于數(shù)據(jù)掛載!

圖片圖片

因為 Docker 容器的生命周期很短,數(shù)據(jù)不能存在容器里,必須掛到宿主機或者外部存儲。

最常見的做法是這樣:

圖片圖片

第一步:在宿主機上創(chuàng)建存儲目錄

首先,我們需要在宿主機上創(chuàng)建目錄,用來存儲 MySQL 的數(shù)據(jù)、日志和配置文件。使用以下命令:

mkdir -p /data/mysql/{data,logs,conf}
  • data:存放 MySQL 數(shù)據(jù)文件
  • logs:存放 MySQL 日志文件
  • conf:存放 MySQL 配置文件

第二步:拉取 MySQL 鏡像

通過 Docker Hub 拉取 MySQL 的官方鏡像:

docker pull mysql:latest

第三步:配置 MySQL

在宿主機的 /data/mysql/conf 目錄下,創(chuàng)建一個名為 my.cnf 的配置文件。配置文件內(nèi)容如下:

[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
datadir=/var/lib/mysql
log-error=/var/log/mysqld.log

這段配置做了以下幾件事:

  • 設置字符集為 utf8mb4,保證支持更多字符
  • 設置排序規(guī)則為 utf8mb4_unicode_ci
  • 配置數(shù)據(jù)文件和日志文件的路徑

第四步:啟動 MySQL 容器

使用以下命令啟動 MySQL 容器,并將宿主機的目錄掛載到容器內(nèi),確保數(shù)據(jù)、日志和配置文件持久化:

docker run -d \
  --name mysql-server \
  -p 3306:3306 \
  -e MYSQL_ROOT_PASSWORD=your_password \
  -v /data/mysql/data:/var/lib/mysql \
  -v /data/mysql/logs:/var/log/mysqld \
  -v /data/mysql/conf/my.cnf:/etc/mysql/my.cnf \
  mysql:latest

解釋:

  • -d:后臺運行容器
  • --name mysql-server:指定容器名稱為 mysql-server
  • -p 3306:3306:將容器的 3306 端口映射到宿主機的 3306 端口
  • -e MYSQL_ROOT_PASSWORD=your_password:設置 MySQL 的 root 用戶密碼(請?zhí)鎿Q your_password
  • -v:將宿主機的目錄掛載到容器中

/data/mysql/data:/var/lib/mysql:掛載數(shù)據(jù)文件

/data/mysql/logs:/var/log/mysqld:掛載日志文件

/data/mysql/conf/my.cnf:/etc/mysql/my.cnf:掛載配置文件

這樣配置后,MySQL 數(shù)據(jù)庫的所有數(shù)據(jù)、日志和配置文件都會保存在宿主機上,即使容器重啟或刪除,數(shù)據(jù)也不會丟失。

1.4 容器部署 MySQL 的擴容困境

你可能會想:Docker 啟動 MySQL 多方便啊,直接 docker run 搞定,為什么還說它不適合擴容?

問題的關鍵是:數(shù)據(jù)沒法共享。

當你的業(yè)務增長,數(shù)據(jù)庫讀寫壓力變大,需要擴容多個 MySQL 實例時,就會遇到嚴重的數(shù)據(jù)隔離問題。

?? 舉個例子:

  • 你已經(jīng)有一個運行中的 MySQL 容器 mysql1,掛載了宿主機的數(shù)據(jù)目錄 /data/mysql1/data
  • 然后你想再啟動一個 mysql2 容器,希望也訪問這個數(shù)據(jù)目錄

BUT!容器之間不能同時讀寫這個宿主目錄。因為數(shù)據(jù)庫的數(shù)據(jù)文件是“容器獨占”的,兩個實例不能共享一個數(shù)據(jù)源,否則數(shù)據(jù)就亂套了,直接崩。

圖片圖片


?? Docker 官方也不建議將數(shù)據(jù)直接保存在容器內(nèi),容器隨時可能停止或被刪除,數(shù)據(jù)就跟著沒了。所以數(shù)據(jù)要通過掛載卷方式保存,確保持久化。

所以,擴容的唯一方式是:每個容器實例都使用一套獨立的存儲目錄。

這也就意味著:你不是在擴“一個數(shù)據(jù)庫”,而是開了“多個數(shù)據(jù)庫”。多實例 ≠ 自動擴容。

如下圖所示:

圖片圖片

1.5 如何用 Docker 本地跑多個 MySQL 實例?

雖然共享數(shù)據(jù)難搞,但如果你只是為了測試、練習,想本地跑兩套 MySQL,其實是可以的。

我們可以給每個實例分配獨立的目錄和端口,互不影響,互不干擾。

步驟 1:創(chuàng)建兩套獨立目錄

在宿主機上為兩個實例分別創(chuàng)建目錄(包含數(shù)據(jù)、日志、配置):

mkdir -p /data/mysql1/{data,logs,conf}
mkdir -p /data/mysql2/{data,logs,conf}

步驟 2:創(chuàng)建兩個配置文件

分別在每套目錄里創(chuàng)建 my.cnf 文件。

MySQL 1 的配置:(/data/mysql1/conf/my.cnf

[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
datadir=/var/lib/mysql
log-error=/var/log/mysqld.log

MySQL 2 的配置:(/data/mysql2/conf/my.cnf

[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
datadir=/var/lib/mysql
log-error=/var/log/mysqld.log


這里兩個配置其實是一樣的,重點在于:每個容器內(nèi)部都用的是自己的配置和數(shù)據(jù)目錄,互不干擾。

步驟 3:啟動兩個容器

啟動第一個 MySQL 容器(監(jiān)聽 3306 端口):

docker run -d \
  --name mysql1 \
  -p 3306:3306 \
  -e MYSQL_ROOT_PASSWORD=your_password1 \
  -v /data/mysql1/data:/var/lib/mysql \
  -v /data/mysql1/logs:/var/log/mysqld \
  -v /data/mysql1/conf/my.cnf:/etc/mysql/my.cnf \
  mysql:latest

啟動第二個 MySQL 容器(監(jiān)聽 3307 端口):

docker run -d \
  --name mysql2 \
  -p 3307:3306 \
  -e MYSQL_ROOT_PASSWORD=your_password2 \
  -v /data/mysql2/data:/var/lib/mysql \
  -v /data/mysql2/logs:/var/log/mysqld \
  -v /data/mysql2/conf/my.cnf:/etc/mysql/my.cnf \
  mysql:latest

注意:這里 -p 3307:3306 的意思是把宿主機的 3307 映射到容器內(nèi)部的 3306(MySQL 默認端口),這樣兩個容器就不會端口沖突。

第二個問題:Docker 的資源隔離并不徹底

雖然 Docker 在設計上是“隔離”的,但它并沒有做到像虛擬機那樣的強隔離,本質(zhì)上它是通過 Linux 的 Cgroup 和 Namespace 技術來限制資源。

但這個限制,其實只是“最大值”的限制,比如你可以告訴 Docker:“這個容器最多只能用 4 核心、4G 內(nèi)存”。問題來了:

  • 它不能保證這些資源就一定是這個容器的;
  • 更不能防止其他容器或進程把資源搶走。

舉個常見的場景:

你在一臺服務器上用 Docker 同時部署了 MySQL、Spring Boot 和 Redis。

看起來井井有條,但一旦某個服務(比如 Spring Boot)開始瘋狂吃資源(比如瞬間爆占 8G 內(nèi)存),Redis 也吃掉 4G,那剩下給 MySQL 的就只有可憐的 4G 了。

如果此時 MySQL 正在處理大數(shù)據(jù)量的查詢或事務,這點資源遠遠不夠,數(shù)據(jù)庫可能直接卡頓,甚至服務不可用,上層業(yè)務也就跟著“塌了”。

也就是說:

Docker 并不能從根本上保證你為 MySQL 留下的資源就一定夠用,它依然會受到其他容器的影響。

第三個問題:Docker 不適合部署 IO 密集型的中間件

雖然 Docker 用起來確實輕便,但在 磁盤 IO 和網(wǎng)絡 IO 性能 上,它和裸機運行是有差距的,尤其是對像 MySQL 這樣的“重度 IO 應用”來說,差距可能非常明顯。

為什么 Docker 會影響磁盤 IO?

Docker 的容器文件系統(tǒng)是分層的,它不是直接操作宿主機磁盤,而是通過一層“抽象層”去處理讀寫請求。這個過程就像多了一層“代理”,每次讀寫數(shù)據(jù)都要先轉(zhuǎn)一圈,性能自然會受到影響。

尤其是當 MySQL 進行大量小文件讀寫、事務操作、大數(shù)據(jù)導入導出時,這種額外的系統(tǒng)開銷就會被放大,最終導致:

  • IO 延遲變高
  • 性能瓶頸明顯
  • 甚至數(shù)據(jù)庫操作變慢、查詢卡頓

網(wǎng)絡 IO 也會受影響

Docker 的網(wǎng)絡是虛擬出來的,容器之間通信要經(jīng)過網(wǎng)橋(bridge)、NAT 轉(zhuǎn)換,甚至還要穿越虛擬網(wǎng)絡設備。這些過程雖然保證了隔離,但同時也增加了網(wǎng)絡延遲。

對于高并發(fā)、低延遲的場景來說,這就是不小的坑。

所以大廠都不這么干

為什么像騰訊的 TDSQL、阿里云的 OceanBase 都是直接部署在物理服務器上?理由就很簡單:

高性能數(shù)據(jù)庫,尤其是磁盤和網(wǎng)絡 IO 壓力特別大的數(shù)據(jù)庫,不適合放在 Docker 里跑。

Docker 更適合用來部署無狀態(tài)、輕量級的業(yè)務服務,比如 Web 接口、后臺服務、微服務等等。

而像 MySQL 這樣的數(shù)據(jù)庫,尤其是大型的生產(chǎn)級 MySQL,更推薦直接部署在物理機或者虛擬機上,以獲得更穩(wěn)定、更可控的資源保障和 IO 性能。

4. Docker 的優(yōu)勢:為什么越來越多團隊都在用它?

Docker 不僅是開發(fā)、測試環(huán)境的“神器”,在真正的線上部署中,它同樣具備強大的能力。尤其在 彈性伸縮、故障自愈、容災恢復 等方面,Docker 為系統(tǒng)的高可用性提供了非常實用的解決方案。

4.1 自動伸縮:遇強則強,遇弱就“瘦身”

水平伸縮:加幾個容器就能頂上!

傳統(tǒng)的做法是靠堆硬件來擴容(加內(nèi)存、加 CPU),但在 Docker 的世界里,擴容可以變得非常靈活——只需要加幾個容器實例就搞定了。

比如電商秒殺、直播帶貨這種突發(fā)大流量,你可以通過編排工具(像 Kubernetes、Docker Compose)快速啟動更多副本來“頂流量”;等流量一過,又可以自動縮容,避免資源浪費。

圖片圖片

舉個例子:

version: '3'
services:
  web:
    image: my-web-app
    deploy:
      replicas: 3  # 啟動 3 個副本
      update_config:
        parallelism: 2
        delay: 10s
      restart_policy:
        condition: on-failure

垂直伸縮:靈活調(diào)整資源上限

除了“加數(shù)量”,還可以調(diào)整“單個容器的資源配額”。比如給某個容器加點 CPU 或內(nèi)存,讓它臨時“打雞血”抗住壓力。

Docker 和 Kubernetes 都提供了資源限制參數(shù),隨時可以控制每個容器能用多少資源。

配置示例:

version: '3'
services:
  web:
    image: my-web-app
    deploy:
      resources:
        limits:
          cpus: '0.50'
          memory: 50M
        reservations:
          cpus: '0.25'
          memory: 20M

4.2 容災與穩(wěn)定性:掛了也能馬上爬起來

容器之間互不影響,隔離性強

每個 Docker 容器都是“自成一體”的環(huán)境,互不干擾。就算某個容器掛了、程序崩了,影響的也只是這個容器本身,其他服務可以繼續(xù)跑,系統(tǒng)整體不會“連鎖崩潰”。

快速恢復:容器壞了可以馬上拉一個新的

Docker 容器的鏡像機制就像備份模板,一旦某個容器出了問題,可以幾秒鐘內(nèi)基于鏡像重新啟動一個“干凈的副本”,恢復速度非常快。而且,重要數(shù)據(jù)是掛在宿主機或外部存儲上的,不會丟失。

示例:給 MySQL 數(shù)據(jù)持久化掛載路徑:

docker run -d \
  --name mysql-server \
  -p 3306:3306 \
  -e MYSQL_ROOT_PASSWORD=your_password \
  -v /data/mysql/data:/var/lib/mysql \
  mysql:latest

自動重啟機制:程序崩了自己爬起來

Docker 原生支持容器的自動重啟機制。你只需要加一個參數(shù),容器就會在掛掉之后自動嘗試重啟。

示例:

docker run -d \
  --name my-app \
  --restart=always \
  my-app-image

4.3 高可用部署:系統(tǒng)崩一臺,還有一臺在扛

在大型系統(tǒng)中,我們通常不希望“單點失敗”,所以需要多個節(jié)點、多個副本、跨機房部署。Docker 可以非常輕松地把應用部署到多個服務器、多個區(qū)域,做到“這個地方掛了,另一個還能頂上”。

配合 Kubernetes 等編排工具,可以實現(xiàn)以下效果:

  • 自動探測容器健康狀態(tài);
  • 容器掛了自動重新調(diào)度;
  • 自動滾動更新,升級不中斷服務。

Kubernetes 高可用部署示例:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 3
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 1
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-app
        image: my-app-image

5. 總結(jié):為什么大型 MySQL 不適合用 Docker 部署?

盡管 Docker 在許多場景下都非常強大,但對于 大型 MySQL 數(shù)據(jù)庫,它并不是最合適的選擇。主要是因為在 性能、管理復雜性、穩(wěn)定性 等多個方面,Docker 的一些特性可能對 MySQL 的運行帶來挑戰(zhàn)。下面我們詳細分析一下。

5.1 性能方面:MySQL 對性能的要求太高,Docker 無法滿足

IO 性能損耗

Docker 容器有一個 文件系統(tǒng)抽象層,這意味著所有的磁盤 IO 操作都要通過額外的層級轉(zhuǎn)發(fā)。對于像 MySQL 這種需要大量數(shù)據(jù)讀寫的應用,IO 性能至關重要,而 Docker 帶來的額外開銷可能導致顯著的性能下降。尤其在做數(shù)據(jù)導入導出、復雜查詢等操作時,這種性能損耗更為明顯。

資源隔離問題

雖然 Docker 能限制容器使用的 CPU 和內(nèi)存資源,但它 并不保證 這些資源就一定會專門留給你指定的容器。如果宿主機上有多個容器在搶資源,可能會導致 資源競爭。而大型 MySQL 數(shù)據(jù)庫通常需要 穩(wěn)定且充足的資源 來保持高效運行,Docker 環(huán)境下的資源調(diào)度可能導致性能波動,這對于數(shù)據(jù)庫來說是致命的。

5.2 管理與維護:Docker 的管理復雜度有點高

配置管理的難度

MySQL 是個非常復雜的系統(tǒng),通常需要針對緩存、線程池、日志等進行精細的配置優(yōu)化。在 Docker 中,這些配置往往需要跨越容器和宿主機進行協(xié)調(diào),導致 配置管理變得更復雜。并且,容器內(nèi)的配置文件常常受限于 Docker 鏡像和存儲驅(qū)動,靈活性遠不如直接在物理機或虛擬機上操作。

數(shù)據(jù)持久化的挑戰(zhàn)

大型 MySQL 數(shù)據(jù)庫的數(shù)據(jù)持久性非常重要。為了防止數(shù)據(jù)丟失或損壞,在 Docker 中需要做額外的配置,比如使用數(shù)據(jù)卷、外部存儲等來實現(xiàn)數(shù)據(jù)持久化。配置不當可能導致數(shù)據(jù)丟失。而且,備份和恢復操作在 Docker 環(huán)境下也更加復雜,需要考慮容器的狀態(tài)、數(shù)據(jù)卷的掛載等多個因素。

集群管理的復雜性

大型 MySQL 通常會采用 主從復制 或 分布式集群 來提高可用性和擴展性。在 Docker 環(huán)境下,管理這樣的集群變得更加困難。容器之間的 網(wǎng)絡通信、數(shù)據(jù)同步 和 節(jié)點故障恢復 都需要特別考慮和調(diào)優(yōu),這使得集群的管理變得 更復雜,并且容易出問題。

5.3 穩(wěn)定性與可靠性:Docker 的穩(wěn)定性和故障排查相對麻煩

容器的穩(wěn)定性問題

雖然 Docker 在技術上已經(jīng)相當成熟,但相比于直接在物理機或虛擬機上部署,容器仍然存在一些 穩(wěn)定性風險。對于像大型 MySQL 這種對穩(wěn)定性要求極高的系統(tǒng),哪怕是一個微小的故障也可能引發(fā)嚴重后果。例如,容器的存儲驅(qū)動、網(wǎng)絡插件等組件可能出現(xiàn)兼容性問題,這些問題可能會影響到 MySQL 的穩(wěn)定運行。

故障排查麻煩

當大型 MySQL 在 Docker 環(huán)境中出現(xiàn)問題時,故障排查的難度也會增加。你不僅要考慮容器內(nèi)部的問題,還得同時分析宿主機的狀態(tài),甚至容器和宿主機之間的交互問題。舉個例子,如果 MySQL 在容器中崩了,問題可能出在資源限制、網(wǎng)絡問題,或者 MySQL 本身。這樣一來,排查過程就會涉及 多個層級,大大增加了解決問題的時間。

總結(jié)

對于大型 MySQL 數(shù)據(jù)庫,Docker 并不是最佳選擇,主要因為:

  • 性能開銷大,特別是在 IO 密集型操作中,Docker 容器會引入額外的性能損耗。
  • 配置和管理復雜,特別是容器內(nèi)部和宿主機之間的協(xié)調(diào),以及容器化數(shù)據(jù)持久化的配置都相對麻煩。
  • 穩(wěn)定性和故障排查的問題,容器環(huán)境帶來的額外層級和抽象使得排查和解決故障變得更加復雜。

當然,Docker 還是非常適合用來部署 微服務、輕量級應用,但對于有復雜配置和高穩(wěn)定性要求的大型數(shù)據(jù)庫,裸機或者虛擬機部署會更加合適。

責任編輯:武曉燕 來源: 程序員江小北
相關推薦

2025-06-04 10:10:00

static編程C++

2024-10-16 15:01:20

2024-01-10 15:27:58

SessionCookieWeb 應用

2021-11-08 09:18:01

CAS面試場景

2021-12-25 22:31:10

MarkWord面試synchronize

2021-12-16 18:38:13

面試Synchronize

2010-08-23 15:06:52

發(fā)問

2021-01-06 05:36:25

拉鏈表數(shù)倉數(shù)據(jù)

2022-01-05 09:55:26

asynawait前端

2024-08-19 09:13:02

2021-12-02 18:20:25

算法垃圾回收

2025-06-03 07:05:00

Linux操作系統(tǒng)Windows

2020-07-28 00:58:20

IP地址子網(wǎng)TCP

2024-06-04 07:38:10

2021-03-24 10:25:24

優(yōu)化VUE性能

2019-09-18 15:49:06

MySQL數(shù)據(jù)庫面試官

2023-08-02 08:48:11

C#碟片算法

2018-01-19 10:43:06

Java面試官volatile關鍵字

2022-11-04 08:47:52

底層算法數(shù)據(jù)

2023-06-05 07:57:53

Kafka消息事務消息
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91精品久久久久久久久久入口 | 国产成人免费视频网站高清观看视频 | 欧美中文字幕一区二区三区亚洲 | 中文字幕在线第一页 | 欧美精品一区在线发布 | 91精品国产91久久久久久吃药 | 午夜丰满少妇一级毛片 | 欧美一区二区三区视频在线观看 | 亚洲一区二区视频在线观看 | www国产成人免费观看视频,深夜成人网 | 亚洲一区亚洲二区 | 黄色网址av| 欧美日韩在线观看一区二区三区 | 国产乡下妇女做爰 | 国际精品鲁一鲁一区二区小说 | 国产日韩欧美在线 | 激情一区| 国产精品中文字幕在线观看 | 国产大毛片| 国产成人久久精品一区二区三区 | 天堂在线中文 | 精品一区二区在线观看 | 国产精品爱久久久久久久 | 日韩α片| 国产在线看片 | 亚洲性在线| 97免费在线视频 | 久久大陆| 精精国产视频 | 日韩免费一区 | 久久涩涩| 亚洲欧美综合 | 亚洲一区免费在线 | a免费观看| 一区二区三区在线看 | 精品视频在线观看 | 成人不卡视频 | 91精品国产乱码久久久久久久久 | 日韩手机视频 | 久久久日韩精品一区二区三区 | 欧美日韩在线一区二区 |