MySQL-12mysql主從復(fù)制與備份

大家好,本片總結(jié)一下MySQL的主從復(fù)制柿隙,有些不對的地方可以評論姐刁,一起交流。

mysql主從復(fù)制與備份

  • 主從復(fù)制概述
  • 主從復(fù)制原理
  • 主從復(fù)制備份
  • 主從復(fù)制實現(xiàn)方式

MySQL數(shù)據(jù)庫支持單向祭陷、雙向苍凛、鏈式級聯(lián)、環(huán)狀等不同業(yè)務(wù)場景的復(fù)制兵志。在復(fù)制過程中醇蝴,一臺服務(wù)器充當 主服務(wù)器(Master),接收來自用戶的內(nèi)容更新想罕,而一個或多個其他的服務(wù)器充當從服務(wù)器(Slave)悠栓,接 收來自主服務(wù)器binlog文件的日志內(nèi)容,解析出SQL重新更新到從服務(wù)器按价,使得主從服務(wù)器數(shù)據(jù)達到一致惭适。

1.1 應(yīng)用場景

MySQL主從復(fù)制集群功能使得MySQL數(shù)據(jù)庫支持大規(guī)模高并發(fā)讀寫稱為可能,同時有效地保護了物理服務(wù)器宕機場景的數(shù)據(jù)備份俘枫。

  • 應(yīng)用場景1:從服務(wù)器作為主服務(wù)器的實時數(shù)據(jù)備份

主從服務(wù)器架構(gòu)的設(shè)置腥沽,可以大大加強MySQL數(shù)據(jù)庫架構(gòu)的健壯性。例如:當主服務(wù)器出現(xiàn)問題時鸠蚪,我們 可以人工或設(shè)置自動切換到從服務(wù)器繼續(xù)提供服務(wù),此時從服務(wù)器的數(shù)據(jù)和宕機時的主數(shù)據(jù)庫幾乎是一致的师溅。
這類似NFS存儲數(shù)據(jù)通過inotify+rsync同步到備份的NFS服務(wù)器茅信,只不過MySQL的復(fù)制方案是其自帶的工 具。
利用MySQL的復(fù)制功能做備份時墓臭,在硬件故障蘸鲸、軟件故障的場景下,該數(shù)據(jù)備份是有效的窿锉,但對于人為地 執(zhí)行drop酌摇、delete等語句刪除數(shù)據(jù)的情況,從庫的備份功能就沒有用了嗡载,因為從服務(wù)器也會執(zhí)行刪除的語 句窑多。

  • 應(yīng)用場景2:主從服務(wù)器實時讀寫分離,從服務(wù)器實現(xiàn)負載均衡

主從服務(wù)器架構(gòu)可通過程序(PHP洼滚、Java等)或代理軟件(mysql-proxy埂息、Amoeba)實現(xiàn)對用戶(客戶 端)的請求讀寫分離,即讓從服務(wù)器僅僅處理用戶的select查詢請求遥巴,降低用戶查詢響應(yīng)時間及讀寫同時在 主服務(wù)器上帶來的訪問壓力千康。對于更新的數(shù)據(jù)(例如update、insert铲掐、delete語句)仍然交給主服務(wù)器處理拾弃,確保主服務(wù)器和從服務(wù)器保持實時同步。

  • 應(yīng)用場景3:把多個從服務(wù)器根據(jù)業(yè)務(wù)重要性進行拆分訪問

可以把幾個不同的從服務(wù)器摆霉,根據(jù)公司的業(yè)務(wù)進行拆分豪椿。例如:有為外部用戶提供查詢服務(wù)的從服務(wù)器颠毙, 有內(nèi)部DBA用來數(shù)據(jù)備份的從服務(wù)器,還有為公司內(nèi)部人員提供訪問的后臺砂碉、腳本蛀蜜、日志分析及供開發(fā)人員 查詢使用的從服務(wù)器。這樣的拆分除了減輕主服務(wù)器的壓力外增蹭,還可以使數(shù)據(jù)庫對外部用戶瀏覽滴某、內(nèi)部用 戶業(yè)務(wù)處理及DBA人員的備份等互不影響。

1.2 優(yōu)點與解決的問題

  • 主從復(fù)制的優(yōu)點
    1.如果主庫出現(xiàn)問題滋迈,可以快速切換到從庫提供服務(wù)霎奢。
    2.可以在從庫執(zhí)行查詢操作,降低主庫的訪問壓力饼灿。
    3.可以在從庫進行備份幕侠,以免備份期間影響主庫的服務(wù)。

  • 主從復(fù)制解決的問題(重點)

    1.數(shù)據(jù)分布 (Data distribution )
    2.負載平衡(load balancing)
    3.數(shù)據(jù)備份(Backups) 碍彭,保證數(shù)據(jù)安全
    4.高可用性和容錯行(High availability and failover)
    5.實現(xiàn)讀寫分離晤硕,緩解數(shù)據(jù)庫壓力

注意:由于 mysql 實現(xiàn)的異步復(fù)制,所以主庫和從庫數(shù)據(jù)之間存在一定的差異庇忌,在從庫執(zhí)行查詢 操作需要考慮這些數(shù)據(jù)的差異舞箍,一般只有更新不頻繁和對實時性要求不高的數(shù)據(jù)可以通過從庫查詢,實行要求高的仍要從主庫查詢皆疹。

2. 主從復(fù)制原理

MySQL主從復(fù)制涉及到三個線程疏橄,一個運行在主節(jié)點(log dump thread),其余兩個(I/O thread, SQL thread)運行在從節(jié)點略就,如下圖所示

主從節(jié)點.png

3個節(jié)點介紹

  • 主節(jié)點 log dump 線程

當從節(jié)點連接主節(jié)點時捎迫,主節(jié)點會為其創(chuàng)建一個log dump 線程,用于發(fā)送和讀取bin-log的內(nèi)容表牢。在讀取 bin-log中的操作時窄绒,log dump線程會對主節(jié)點上的bin-log加鎖,當讀取完成初茶,在發(fā)送給從節(jié)點之前颗祝,鎖會 被釋放。主節(jié)點會為自己的每一個從節(jié)點創(chuàng)建一個log dump 線程恼布。

  • 從節(jié)點 I/O線程

當從節(jié)點上執(zhí)行 start slave 命令之后螺戳,從節(jié)點會創(chuàng)建一個I/O線程用來連接主節(jié)點,請求主庫中更新的bin-log折汞。I/O線程接收到主節(jié)點的blog dump進程發(fā)來的更新之后倔幼,保存在本地relay-log(中繼日志)中。

  • 從節(jié)點 SQL線程
  • SQL線程負責(zé)讀取relay-log中的內(nèi)容爽待,解析成具體的操作并執(zhí)行损同,最終保證主從數(shù)據(jù)的一致性翩腐。

對于每一個主從連接,都需要這三個進程來完成膏燃。
當主節(jié)點有多個從節(jié)點時茂卦,主節(jié)點會為每一個當前連接 的從節(jié)點建一個log dump 進程,而每個從節(jié)點都有自己的I/O進程组哩,SQL進程等龙。
從節(jié)點用兩個線程將從主 庫拉取更新和執(zhí)行分成獨立的任務(wù),這樣在執(zhí)行同步數(shù)據(jù)任務(wù)的時候伶贰,不會降低讀操作的性能蛛砰。
比如,如 果從節(jié)點沒有運行黍衙,此時I/O進程可以很快從主節(jié)點獲取更新泥畅,盡管SQL進程還沒有執(zhí)行。
如果在SQL進程 執(zhí)行之前從節(jié)點服務(wù)停止琅翻,至少I/O進程已經(jīng)從主節(jié)點拉取到了最新的變更并且保存在本地relay日志中位仁,當 服務(wù)再次起來之后,就可以完成數(shù)據(jù)的同步望迎。

重點:
要實施復(fù)制障癌,首先必須打開Master 端的binary log(bin-log)功能,否則無法實現(xiàn)辩尊。

因為整個復(fù)制過程實際上就是Slave 從Master 端獲取該日志然后再在自己身上完全順序的執(zhí)行日志中所記錄的各種操作。如下圖所示:
執(zhí)行順序.png

2.1 復(fù)制的基本過程

  • 1.在從節(jié)點上執(zhí)行sart slave命令開啟主從復(fù)制開關(guān)康辑,開始進行主從復(fù)制摄欲。從節(jié)點上的I/O 進程連接主節(jié) 點,并請求從指定日志文件的指定位置(或者從最開始的日志)之后的日志內(nèi)容;
  • 2.主節(jié)點接收到來自從節(jié)點的I/O請求后疮薇,通過負責(zé)復(fù)制的I/O進程(log dump 線程)根據(jù)請求信息讀取 指定日志指定位置之后的日志信息胸墙,返回給從節(jié)點。返回信息中除了日志所包含的信息之外按咒,還包括 本次返回的信息的bin-log file 的以及bin-log position(bin-log中的下一個指定更新位置);
  • 3.從節(jié)點的I/O進程接收到主節(jié)點發(fā)送過來的日志內(nèi)容迟隅、日志文件及位置點后,將接收到的日志內(nèi)容更新 到本機的relay-log(中繼日志)的文件(Mysql-relay-bin.xxx)的最末端励七,并將讀取到的binary log(bin-log)文件名和位置保存到master-info 文件中智袭,以便在下一次讀取的時候能夠清楚的告訴 Master“我需要從某個bin-log 的哪個位置開始往后的日志內(nèi)容,請發(fā)給我”;
  • 4.Slave 的 SQL線程檢測到relay-log 中新增加了內(nèi)容后掠抬,會將relay-log的內(nèi)容解析成在主節(jié)點上實際執(zhí)行 過SQL語句吼野,然后在本數(shù)據(jù)庫中按照解析出來的順序執(zhí)行,并在relay-log.info中記錄當前應(yīng)用中繼日志 的文件名和位置點两波。

3.主從復(fù)制備份

不同類型的數(shù)據(jù)庫備份瞳步,所能應(yīng)付的情況是不一樣的闷哆, 而且,數(shù)據(jù)庫的備份同時也還具有其他很多的作 用单起。相信每個人對數(shù)據(jù)庫備份作用的理解都會有差別抱怔。
1. 數(shù)據(jù)丟失應(yīng)用場景
(1)人為操作失誤造成某些數(shù)據(jù)被誤操作;
(2)軟件BUG造成數(shù)據(jù)部分或全部丟失;
(3)硬件故障造成數(shù)據(jù)庫數(shù)據(jù)部分或全部丟失;
(4)因安全漏洞,入侵者將數(shù)據(jù)惡意破壞嘀倒。

2. 非數(shù)據(jù)丟失應(yīng)用場景
(1)特殊應(yīng)用場景下基于時間點的數(shù)據(jù)恢復(fù);
(2)開發(fā)測試環(huán)境數(shù)據(jù)庫搭建;
(3)相同數(shù)據(jù)庫的新環(huán)境搭建;
(4)數(shù)據(jù)庫或數(shù)據(jù)遷移屈留。

注:啰嗦點話:

上面所列出的只是一些常見的應(yīng)用場景,除了這幾種場景括儒,數(shù)據(jù)庫備份還會有很多其他應(yīng)用場景绕沈。
沒有哪一種數(shù)據(jù)庫備份能夠解決以上列舉的所有場景,即使僅只是數(shù)據(jù)丟失的各種場景都無法通過某一種 數(shù)據(jù)庫 備份完美解決帮寻,當然就更不用說能夠解決所有備份的應(yīng)用場景了乍狐。比如:

  1. 當我們遇到磁盤故障,丟失了整個數(shù)據(jù)庫的所有數(shù)據(jù)固逗,并且無法從已經(jīng)出現(xiàn)故障的硬盤上面恢復(fù)出來 的時候浅蚪,就可能必須通過一個實時或有短暫時間差的復(fù)制備份數(shù)據(jù)庫來進行恢復(fù)。當然如果沒有這樣 的一個數(shù)據(jù)庫烫罩,就必須有最近時間點的整個數(shù)據(jù)庫的物理或邏輯備份數(shù)據(jù)惜傲,并且有該備份之后的所有 物理或邏輯增量備份,以期望盡可能地將數(shù)據(jù)恢復(fù)到出現(xiàn)故障之前最近的時間點贝攒。
  2. 而當我們遇到操作失誤造成數(shù)據(jù)被誤操作時盗誊,就要有一個能恢復(fù)到錯誤操作時間點之前的瞬間備份, 當然這個備份可能是整個數(shù)據(jù)庫的備份隘弊,也可以僅僅是被誤操作的表的備份哈踱。
  3. 而當我們要做跨平臺的數(shù)據(jù)庫遷移時,則需要一個邏輯的數(shù)據(jù)庫備份梨熙,因為平臺的差異可能使物理備 份的文件格式在兩個平臺上無法兼容开镣。
    既然沒有哪一種數(shù)據(jù)庫備份能夠完美地解決所有應(yīng)用場景的需要,而每個數(shù)據(jù)庫環(huán)境要面對的數(shù)據(jù)庫備份 應(yīng)用場景又可能各不一樣咽扇,也許只是須要面對很多種場景中的某種或兒種邪财, 那么就非常有必要指定一個合 適的備份方案和備份策略,通過最簡單的技術(shù)和最低廉的成本來滿足我們的需求质欲。

3.1 冷備份與恢復(fù)

3.1.1 邏輯備份
邏輯備份可以說是最簡單树埠,也是目前中小型系統(tǒng)最常使用的備份方式。
1.mysqldump
2.mydumper

2. 在從服務(wù)上通過連接主服務(wù)器上的數(shù)據(jù)庫把敞,通過mysqldump備份數(shù)據(jù)到從數(shù)據(jù)庫中

在主服務(wù)器上弥奸,設(shè)置讀鎖定有效,這個操作為了確保沒有數(shù)據(jù)庫操作奋早,以便獲得一致性的快照盛霎。

flush tables with read lock;

然后在從服務(wù)器上進行數(shù)據(jù)的備份赠橙,并同步導(dǎo)入備份數(shù)據(jù)。

在數(shù)據(jù)備份完成之后這個時候就可以恢復(fù)主數(shù)據(jù)庫的寫操作執(zhí)行命令如下:

unlock tables;
3.1.2 物理備份

最暴力的備份:停止主庫愤炸,然后復(fù)制主庫中的data放到從庫中期揪。

3.1.3 使用mydumper

mydumper是一個針對MySQL和drizzle的高性能多線程的備份和恢復(fù)工具。此工具的開發(fā)人員分別來自 MySQL规个、facebook凤薛、skysql公司、目前已經(jīng)有一些大型產(chǎn) 品業(yè)務(wù)測試并使用了該工具诞仓。我們在恢復(fù)數(shù)據(jù)庫 時也可使用myloader工具缤苫。

特性

  • 采用輕量級C語言寫的代碼。
  • 相比于mysqldump墅拭,其速度快了近10倍活玲。
  • 具有事務(wù)性和非事務(wù)性表一致的快照(適用于0.2.2+)。
  • 可快速進行文件壓縮(File compression on-the-fly)谍婉。 · 支持導(dǎo)出binlog舒憾。
  • 可多線程恢復(fù)(適用于0.2.1+)。
  • 可以用守護進程的工作方式穗熬,定時掃描和輸出連續(xù)的二進制日志镀迂。

剩下的可以自己百度

3.2 熱備份與恢復(fù)

熱備份的方式也是直接復(fù)制數(shù)據(jù)物理文件,和冷備份一樣唤蔗,但熱備份可以不停機直接復(fù)制探遵,一般用于7×24小時不間斷的重要核心業(yè)務(wù)。
注:有很多其他熱備份的工具妓柜,MySQL社區(qū)版的熱備份 工具ImnoDB Hot Backup是付費的所以不考慮這個了别凤。用一下這個,Percona公司發(fā)布了一個xtrabackup熱備份工具领虹。

安裝:

yum localinstall percona-xtrabackup-80-8.0.14-1.el7.x86_64.rpm
xtrabackup

常用命令:

中主要包含兩個工具: xtrabackup:是用于熱備innodb,xtradb表中數(shù)據(jù)的工具求豫,不能備份其他類型的表塌衰,也不能備份數(shù) 據(jù)表結(jié)構(gòu);
innobackupex:是將xtrabackup進行封裝的perl腳本,提供了備份myisam表的能力蝠嘉。
常用選項:
--host 指定主機
--user 指定用戶名
--password 指定密碼
--port 指定端口
--databases 指定數(shù)據(jù)庫
--incremental 創(chuàng)建增量備份
--incremental-basedir 指定包含完全備份的目錄
--incremental-dir 指定包含增量備份的目錄
--apply-log 對備份進行預(yù)處理操作 一般情況下最疆,在備份完成后,數(shù)據(jù)尚且不能用于恢復(fù)操作蚤告,因 為備份的數(shù)據(jù)中可能會包含尚未提交的事務(wù)或已經(jīng)提交但尚未同步至數(shù)據(jù)文件中的事務(wù)努酸。 因此,此 時數(shù)據(jù)文件仍處理不一致狀態(tài)杜恰』裾“準備”的主要作用正是通過回滾未提交的事務(wù)及同步已經(jīng)提交的事 務(wù)至數(shù)據(jù)文件也使得數(shù)據(jù)文件處于一致性狀態(tài)仍源。
--redo-only 不回滾未提交事務(wù)
--copy-back 恢復(fù)備份目錄

開始進行備份操作,進入 主庫 中

xtrabackup --defaults-file=/etc/my.cnf --user=root --password=root -- port=3306 --backup --target-dir=/home/master_slave
//找到備份的文件,進行備份:
scp -r /home/laravel-shop/ root@192.168.153.127:/home/laravel-shop

然后呢進入 從庫中:

//
xtrabackup --defaults-file=/etc/my.cnf --copy-back --target- dir=/home/mysql_php/mysql_php
chown -R mysql:mysql /usr/local/mysql/data
 

4. 主從復(fù)制實現(xiàn)方式

4.1.1 Master節(jié)點配置

單MySQL問題:

  1. 性能問題
  2. 數(shù)據(jù)備份問題

多MySQL好處

  1. 性能問題--不一定提高;
  2. 數(shù)據(jù)冗余

對于MySQL的主從復(fù)制來說最重要的主要就是binlog日志舔涎,所以我們就需要開啟binlog日志笼踩,并設(shè)置server- id的值。需要重啟服務(wù)器之后才生效 二進制日志亡嫌,也就是我們常說的binlog嚎于。

二進制日志記錄了MySQL所有修改數(shù)據(jù)庫的操作,然后以二進制的形式記錄日志在日志文件中挟冠,其中還包 括沒調(diào)語句所 執(zhí)行的時間和消耗的資源于购,以及相關(guān)的事務(wù)信息。默認情況下二進制日志功能是沒有開啟 的知染,啟動可以配置log-bin[=file_name]開啟肋僧,

show global variables like '%log_bin%';

日志作用就是:

  1. 增量備份(不是所有數(shù)據(jù)備份,而是最近的寫操作)
  2. 用于MySQL主從復(fù)制
vi /etc/my.cnf
//主要就是下配置文件中添加如下配置
log-bin=mysql-bin 
server-id=1

4.1.2 Slave節(jié)點配置

要先明確配置的架構(gòu)Master-slave

  1. 配置主節(jié)點 1.1 配置賬號 1.2 開啟binlog日志
  2. 配置從節(jié)點 2.1 配置同步日志 2.2 指定主節(jié)點的ip持舆, 端口色瘩, 用戶.. 2.3 啟動從節(jié)點
    修改配置
find / -name my.cnf /etc/my.cnf
vi /etc/my.cnf
find / -name mysqld /etc/rc.d/init.d/mysqld/www/server/mysql/bin/mysqld
/etc/rc.d/init.d/mysqld restart

在配置文件中添加:

# 配置從節(jié)點
server-id = 2
relay_log = /usr/local/mysql/data/mysql-relay-bin 
relay_log-index = /usr/local/mysql/data/mysql-relay-bin.index log_slave_updates = 1
read_only = 1

參數(shù)介紹:

  1. server_id:這是服務(wù)id系統(tǒng)會自動命名的,但如果機器名邊畫畫肯能回答導(dǎo)致問題逸寓【诱祝可以講你主庫和備庫 上的log-bin設(shè)置為相同的值。
  2. relay_log:指定 中繼日志的位置和命名

指定主節(jié)點的ip竹伸,端口泥栖,用戶

change master to master_host='192.168.29.102',master_port=3306,master_user='slave',master_password='slav e',master_log_file='mysqlbin.000002',master_log_pos=155;

start slave;
show slave status \G;

對于我們來說其中的信息主要是關(guān)注:
reset slave all 清楚slave信息 測試的方法就是在主服務(wù)器中,添加一些數(shù)據(jù)測試觀察從服務(wù)其中的數(shù)據(jù)變化 情況勋篓。

可以看一下另一篇主從復(fù)制文章:http://www.reibang.com/p/5ba7770a952f

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末吧享,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子譬嚣,更是在濱河造成了極大的恐慌钢颂,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拜银,死亡現(xiàn)場離奇詭異殊鞭,居然都是意外死亡,警方通過查閱死者的電腦和手機尼桶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進店門操灿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人泵督,你說我怎么就攤上這事趾盐。” “怎么了?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我烂翰,道長,這世上最難降的妖魔是什么瘸羡? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮搓茬,結(jié)果婚禮上犹赖,老公的妹妹穿的比我還像新娘。我一直安慰自己卷仑,他們只是感情好峻村,可當我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著锡凝,像睡著了一般粘昨。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上窜锯,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天张肾,我揣著相機與錄音,去河邊找鬼锚扎。 笑死吞瞪,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的驾孔。 我是一名探鬼主播芍秆,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼翠勉!你這毒婦竟也來了妖啥?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤对碌,失蹤者是張志新(化名)和其女友劉穎荆虱,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體朽们,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡克伊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了华坦。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡不从,死狀恐怖惜姐,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤歹袁,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布坷衍,位于F島的核電站,受9級特大地震影響条舔,放射性物質(zhì)發(fā)生泄漏枫耳。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一孟抗、第九天 我趴在偏房一處隱蔽的房頂上張望迁杨。 院中可真熱鬧,春花似錦凄硼、人聲如沸铅协。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽狐史。三九已至,卻和暖如春说墨,著一層夾襖步出監(jiān)牢的瞬間骏全,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工尼斧, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留姜贡,地道東北人。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓突颊,卻偏偏與公主長得像鲁豪,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子律秃,可洞房花燭夜當晚...
    茶點故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內(nèi)容