MHA高可用及讀寫(xiě)分離

1. 主從復(fù)制架構(gòu)演變介紹

1.1 基本結(jié)構(gòu)

(1)一主一從
(2)一主多從
(3)多級(jí)主從
(4)雙主
(5)循環(huán)復(fù)制

1.2 高級(jí)應(yīng)用架構(gòu)演變

1.2.1 高性能架構(gòu)
(1)讀寫(xiě)分離架構(gòu)(讀性能較高)

代碼級(jí)別
MySQL proxy (Atlas,mysql router,proxySQL(percona),maxscale(MariaDB))慕趴、amoeba(taobao)
xx-dbproxy等。

(2)分布式架構(gòu)(讀寫(xiě)性能都提高):

分庫(kù)分表——cobar--->TDDL(頭都大了),DRDS
Mycat--->DBLE自主研發(fā)等。
NewSQL-->TiDB

1.2.2 高可用架構(gòu)
(3)單活:MMM架構(gòu)——mysql-mmm(google)
(4)單活:MHA架構(gòu)——mysql-master-ha(日本DeNa),T-MHA
(5)多活:MGR ——5.7 新特性 MySQL Group replication(5.7.17) --->Innodb Cluster
(6)多活:MariaDB Galera Cluster架構(gòu),(PXC)Percona XtraDB Cluster岳悟、MySQL Cluster(Oracle rac)架構(gòu)

2. 高可用MHA

2.1 MHA Failover過(guò)程

1. MHA通過(guò)腳本(masterha_master_monitor)實(shí)時(shí)(ping_interval=2)監(jiān)控主庫(kù)的狀態(tài)(主機(jī),數(shù)據(jù)庫(kù)狀態(tài))
2. 監(jiān)控到主庫(kù)宕機(jī)之后波闹,會(huì)發(fā)生自動(dòng)選主(masterha_master_switch)
    (1) 權(quán)重:參數(shù)
    (2) 日志量
    (3) 配置文件的順序
3. 數(shù)據(jù)補(bǔ)償
    (1) 當(dāng)SSH能夠連接,各個(gè)從庫(kù)會(huì)立即保存(save_binary_logs)缺失部分的日志到/var/tmp
    (2) 當(dāng)SSH無(wú)法連接,通過(guò)腳本(apply_diff_relay_logs)自動(dòng)進(jìn)行從庫(kù)relaylog差異處理,進(jìn)行數(shù)據(jù)補(bǔ)償
4. 構(gòu)建新的主從關(guān)系,并將故障節(jié)點(diǎn)移除(配置文件移除)
5. MHA主進(jìn)程完成工作后,會(huì)自動(dòng)退出
6. 應(yīng)用透明 VIP(master_ip_failover_script=/usr/local/bin/master_ip_failover)
7. 故障通知(report_script=/usr/local/bin/send)
8. 提供額外數(shù)據(jù)補(bǔ)償?shù)氖侄?binlog_server)
9. 自動(dòng)自愈

2.2 架構(gòu)介紹

1主2從,master:db01 , slave:db02篙贸,db03

2.3 MHA軟件構(gòu)成

Manager工具包主要包括以下幾個(gè)工具:
masterha_manger             啟動(dòng)MHA 
masterha_check_ssh          檢查MHA的SSH配置狀況 
masterha_check_repl         檢查MySQL復(fù)制狀況 
masterha_master_monitor     檢測(cè)master是否宕機(jī) 
masterha_check_status       檢測(cè)當(dāng)前MHA運(yùn)行狀態(tài) 
masterha_master_switch      控制故障轉(zhuǎn)移(自動(dòng)或者手動(dòng))
masterha_conf_host          添加或刪除配置的server信息

Node工具包主要包括以下幾個(gè)工具:
這些工具通常由MHA Manager的腳本觸發(fā)颊艳,無(wú)需人為操作
save_binary_logs            保存和復(fù)制master的二進(jìn)制日志 
apply_diff_relay_logs       識(shí)別差異的中繼日志事件并將其差異的事件應(yīng)用于其他的
purge_relay_logs            清除中繼日志(不會(huì)阻塞SQL線程)

2.4 MHA環(huán)境搭建

搭建MHA之前先構(gòu)建主從復(fù)制(單機(jī)訪問(wèn)主從構(gòu)建網(wǎng)站,位置3.3.2-章節(jié))

2.4.1 規(guī)劃

主庫(kù): 51    node 
從庫(kù): 
52      node
53      node    manager

2.4.2 準(zhǔn)備環(huán)境(略茅特。1主2從GTID)
2.4.3 配置關(guān)鍵程序軟連接

ln -s /data/mysql/bin/mysqlbinlog    /usr/bin/mysqlbinlog
ln -s /data/mysql/bin/mysql          /usr/bin/mysql

2.4.4 配置各節(jié)點(diǎn)互信

db01:
rm -rf /root/.ssh 
ssh-keygen
cd /root/.ssh 
mv id_rsa.pub authorized_keys
scp  -r  /root/.ssh  10.0.0.52:/root 
scp  -r  /root/.ssh  10.0.0.53:/root 
各節(jié)點(diǎn)驗(yàn)證
db01:
ssh 10.0.0.51 date
ssh 10.0.0.52 date
ssh 10.0.0.53 date
db02:
ssh 10.0.0.51 date
ssh 10.0.0.52 date
ssh 10.0.0.53 date
db03:
ssh 10.0.0.51 date
ssh 10.0.0.52 date
ssh 10.0.0.53 date

2.4.5 安裝軟件

MHA軟件分享下載地址

下載mha軟件
mha官網(wǎng):https://code.google.com/archive/p/mysql-master-ha/
github下載地址:https://github.com/yoshinorim/mha4mysql-manager/wiki/Downloads

所有節(jié)點(diǎn)安裝Node軟件依賴(lài)包
yum install perl-DBD-MySQL -y
rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm

在db01主庫(kù)中創(chuàng)建mha需要的用戶(hù)
grant all privileges on *.* to mha@'10.0.0.%' identified by 'mha';

Manager軟件安裝(db03)
yum install -y perl-Config-Tiny epel-release perl-Log-Dispatch perl-Parallel-ForkManager perl-Time-HiRes
rpm -ivh mha4mysql-manager-0.56-0.el6.noarch.rpm

2.4.6 配置文件準(zhǔn)備(db03)

創(chuàng)建配置文件目錄
 mkdir -p /etc/mha
創(chuàng)建日志目錄
 mkdir -p /var/log/mha/app1.cnf
編輯mha配置文件
vim /etc/mha/app1.cnf
[server default]                        默認(rèn)配置信息
manager_log=/var/log/mha/app1/manager   manager的日志文件內(nèi)容
manager_workdir=/var/log/mha/app1       工作路徑
master_binlog_dir=/data/binlog          主庫(kù)的二進(jìn)制日志文件位置
user=mha                                連接主庫(kù)的用戶(hù)
password=mha                            連接主庫(kù)的用戶(hù)密碼
ping_interval=2                         探測(cè)間隔時(shí)間(s),默認(rèn)探測(cè)三次
repl_password=123                       主從復(fù)制用戶(hù)密碼
repl_user=repl                          主從復(fù)制用戶(hù)密碼
ssh_user=root                           ssh互信用戶(hù)
[server1]                               節(jié)點(diǎn)信息
hostname=10.0.0.51
port=3306                                  
[server2]            
hostname=10.0.0.52
port=3306
[server3]
hostname=10.0.0.53
port=3306

2.4.7 狀態(tài)檢查
互信檢查

masterha_check_ssh  --conf=/etc/mha/app1.cnf 

主從狀態(tài)檢查

masterha_check_repl  --conf=/etc/mha/app1.cnf 

2.4.8 開(kāi)啟MHA(db03)

nohup masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover  < /dev/null> /var/log/mha/app1/manager.log 2>&1 &
--remove_dead_master_conf   移除宕機(jī)的server
--ignore_last_failover      拒絕再一次測(cè)試failover

2.4.9 查看MHA狀態(tài)

[root@db03 ~]$ masterha_check_status --conf=/etc/mha/app1.cnf
app1 (pid:4719) is running(0:PING_OK), master:10.0.0.51
[root@db03 ~]$ mysql -umha -pmha -h 10.0.0.51 -e "show variables like 'server_id'"
mysql: [Warning] Using a password on the command line interface can be insecure.
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id     | 51    |
+---------------+-------+
[root@db03 ~]$ mysql -umha -pmha -h 10.0.0.52 -e "show variables like 'server_id'"
mysql: [Warning] Using a password on the command line interface can be insecure.
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id     | 52    |
+---------------+-------+
[root@db03 ~]$ mysql -umha -pmha -h 10.0.0.53 -e "show variables like 'server_id'"
mysql: [Warning] Using a password on the command line interface can be insecure.
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id     | 53    |
+---------------+-------+

2.4.10 故障模擬及處理

(1)停止主庫(kù)
bd-51
/etc/init.d/mysqld stop
主庫(kù)mysql服務(wù)故障,主庫(kù)自己轉(zhuǎn)到db-52
觀察manager 日志 tail -f /var/log/mha/app1/manager
末尾顯示successfully才算切換主庫(kù)成功
(2)修復(fù)主庫(kù)
/etc/init.d/mysqld start
(3)主從修復(fù)
[root@db01 ~]$ mysql -e "change master to master_host='10.0.0.52',master_user='repl',master_password='123' ,MASTER_AUTO_POSITION=1;"
[root@db01 ~]$ mysql -e  "start slave;"
[root@db01 ~]$ mysql -e  "show slave status \G"|grep Running:
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
(4)MHA配置文件修復(fù)(恢復(fù)server1)
[root@db03 ~]$ vim /etc/mha/app1.cnf
[server default]
manager_log=/var/log/mha/app1/manager
manager_workdir=/var/log/mha/app1
master_binlog_dir=/data/binlog
password=mha
ping_interval=2
repl_password=123
repl_user=repl
ssh_user=root
user=mha
[server1]
hostname=10.0.0.51
port=3306

[server2]
hostname=10.0.0.52
port=3306

[server3]
hostname=10.0.0.53
port=3306
(5)啟動(dòng)MHA并且檢查
masterha_stop --conf=/etc/mha/app1.cnf   停止MHA
[root@db03 ~]$ nohup masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover  < /dev/null> /var/log/mha/app1/manager.log 2>&1 &
[1] 8913
[root@db03 ~]$ 
[root@db03 ~]$  masterha_check_status --conf=/etc/mha/app1.cnf
app1 (pid:8913) is running(0:PING_OK), master:10.0.0.52

2.4.11 Manager參數(shù)介紹

說(shuō)明:
主庫(kù)宕機(jī)誰(shuí)來(lái)接管棋枕?
1. 所有從節(jié)點(diǎn)日志都是一致的白修,默認(rèn)會(huì)以配置文件的順序去選擇一個(gè)新主。
2. 從節(jié)點(diǎn)日志不一致重斑,自動(dòng)選擇最接近于主庫(kù)的從庫(kù)
3. 如果對(duì)于某節(jié)點(diǎn)設(shè)定了權(quán)重(candidate_master=1)兵睛,權(quán)重節(jié)點(diǎn)會(huì)優(yōu)先選擇。
但是此節(jié)點(diǎn)日志量落后主庫(kù)100M日志的話(huà)窥浪,也不會(huì)被選擇祖很。可以配合check_repl_delay=0漾脂,關(guān)閉日志量的檢查假颇,強(qiáng)制選擇候選節(jié)點(diǎn)。
vim /etc/mha/app1.cnf
(1)  ping_interval=1
#設(shè)置監(jiān)控主庫(kù)骨稿,發(fā)送ping包的時(shí)間間隔笨鸡,嘗試三次沒(méi)有回應(yīng)的時(shí)候自動(dòng)進(jìn)行failover
(2) candidate_master=1
#設(shè)置為候選master姜钳,如果設(shè)置該參數(shù)以后,發(fā)生主從切換以后將會(huì)將此從庫(kù)提升為主庫(kù)形耗,即使這個(gè)主庫(kù)不是集群中事件最新的slave
(3)check_repl_delay=0
#默認(rèn)情況下如果一個(gè)slave落后master 100M的relay logs的話(huà)哥桥,
MHA將不會(huì)選擇該slave作為一個(gè)新的master,因?yàn)閷?duì)于這個(gè)slave的恢復(fù)需要花費(fèi)很長(zhǎng)時(shí)間激涤,通過(guò)設(shè)置check_repl_delay=0,MHA觸發(fā)切換在選擇一個(gè)新的master的時(shí)候?qū)?huì)忽略復(fù)制延時(shí)拟糕,這個(gè)參數(shù)對(duì)于設(shè)置了candidate_master=1的主機(jī)非常有用,因?yàn)檫@個(gè)候選主在切換的過(guò)程中一定是新的master

2.4.12 MHA 的vip功能
MHA分享地址昔期,內(nèi)有master_ip_failover腳本

(1) 準(zhǔn)備vip腳本
[root@db03 ~]# cp master_ip_failover.txt  /usr/local/bin/master_ip_failover
[root@db03 ~]# cd /usr/local/bin/
[root@db03 /usr/local/bin]# yum install -y dos2unix
[root@db03 /usr/local/bin]# dos2unix master_ip_failover 
[root@db03 /usr/local/bin]# chmod +x master_ip_failover
(2) 更改manager配置文件:
vi /etc/mha/app1.cnf
添加:
master_ip_failover_script=/usr/local/bin/master_ip_failover
(3) 修改配置文件虛擬ip
[root@db03 bin]$ vim /usr/local/bin/master_ip_failover 
my $vip = '10.0.0.55/24';                          修改vip地址
my $key = '1';
my $ssh_start_vip = "/sbin/ifconfig eth0:$key $vip";  修改網(wǎng)卡
my $ssh_stop_vip = "/sbin/ifconfig eth0:$key down";   修改網(wǎng)卡
(4)主庫(kù)上已卸,手工生成第一個(gè)vip地址
手工在主庫(kù)上綁定vip,注意一定要和配置文件中的ethN一致硼一,我的是eth0:1(1是key指定的值)
ifconfig eth0:1 10.0.0.55/24
(5) 重啟MHA
masterha_stop --conf=/etc/mha/app1.cnf

nohup masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/mha/app1/manager.log 2>&1 &

2.4.13 郵件提醒

(1) 添加配置選項(xiàng)
vi /etc/mha/app1.cnf
report_script=/usr/local/bin/send
(2) 拷貝腳本
[root@db03 ~]$ cp -a email/*  /usr/local/bin
添加權(quán)限
chmod +x /usr/local/bin/*
修改發(fā)送郵件信息
[root@db03 ~]$ vim /usr/local/bin/testpl 
#!/bin/bash
/usr/local/bin/sendEmail -o tls=no -f 發(fā)件地址 -t 收件地址 -s smtp.163.com:25 -xu 郵箱名稱(chēng) -xp email-password -u "MHA Waring" -m "YOUR MHA MAY BE FAILOVER" &>/tmp/sendmail.log

(3)停止MHA
masterha_stop --conf=/etc/mha/app1.cnf

(4)開(kāi)啟MHA    
nohup masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/mha/app1/manager.log 2>&1 &
檢查
masterha_check_status --conf=/etc/mha/app1.cnf

2.4.14 binlog server(db-03)

(1)添加配置信息
vim /etc/mha/app1.cnf 
[binlog1]
no_master=1
hostname=10.0.0.53
master_binlog_dir=/data/mysql/binlog          需要獨(dú)立累澡,不能和其他日志路徑?jīng)_突

(2) 創(chuàng)建必要目錄
mkdir -p /data/mysql/binlog
chown -R mysql.mysql /data/*

(3)拉取主庫(kù)binlog日志
cd /data/mysql/binlog
mysqlbinlog  -R --host=10.0.0.51 --user=mha --password=mha --raw  --stop-never mysql-bin.000001 &
>> 注意:
拉取日志的起點(diǎn),需要按照目前從庫(kù)的已經(jīng)獲取到的二進(jìn)制日志點(diǎn)為起點(diǎn)

(4) 重啟MHA
masterha_stop --conf=/etc/mha/app1.cnf
nohup masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/mha/app1/manager.log 2>&1 &

MHA修復(fù)過(guò)程

故障處理:
1. 檢查MHA狀態(tài) 
[root@db03 ~]# masterha_check_status --conf=/etc/mha/app1.cnf

2. 檢查配置文件
[server default]
manager_log=/var/log/mha/app1/manager
manager_workdir=/var/log/mha/app1
master_binlog_dir=/data/binlog
master_ip_failover_script=/usr/local/bin/master_ip_failover
password=mha
ping_interval=2
repl_password=123
repl_user=repl
report_script=/usr/local/bin/send
ssh_user=root
user=mha

[server1]
hostname=10.0.0.51
port=3306

[server2]
hostname=10.0.0.52
port=3306
[server3]
hostname=10.0.0.53
port=3306
[binlog1]
no_master=1
hostname=10.0.0.53
master_binlog_dir=/data/mysql/binlog

3. 檢查ssh狀態(tài):
[root@db03 ~]# masterha_check_ssh --conf=/etc/mha/app1.cnf


4. 檢查腳本
[root@db03 /usr/local/bin]# ls -l /usr/local/bin/

5. 檢查binlogserver 
[root@db03 /usr/local/bin]# ps -ef |grep mysqlbinlog

6. 確認(rèn)主庫(kù),恢復(fù)binlog_server
db01 [(none)]>show master status 
+------------------+----------+--------------+------------------+------------------------------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+------------------------------------------+
| mysql-bin.000006 | 194 | | | a5260572-c262-11e9-bab1-000c2980e248:1-2 |
+------------------+----------+--------------+------------------+------------------------------------------+
1 row in set (0.00 sec)

[root@db03 /usr/local/bin]# cd /data/mysql/binlog/
[root@db03 /data/mysql/binlog]# rm -rf *
[root@db03 /data/mysql/binlog]# mysqlbinlog -R --host=10.0.0.51 --user=mha --password=mha --raw --stop-never mysql-bin.000006 &

7. 檢查主庫(kù)vip
[root@db01 ~]# ifconfig eth0:1 10.0.0.55/24

8. 檢查主從狀態(tài)
[root@db03 /data/mysql/binlog]# masterha_check_repl --conf=/etc/mha/app1.cnf


9. 啟動(dòng)MHA 

nohup masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/mha/app1/manager.log 2>&1 &

[root@db03 ~]# masterha_check_status --conf=/etc/mha/app1.cnf
app1 (pid:8255) is running(0:PING_OK), master:10.0.0.51

3. 讀寫(xiě)分離及分布式架構(gòu)

1. atlas實(shí)現(xiàn)讀寫(xiě)分離

1.1 安裝ATLAS(上面分享的壓縮包中有此軟件)

[root@db03 ~]$ rpm -ivh Atlas-2.2.1.el6.x86_64.rpm 
Preparing...                          ################################# [100%]
Updating / installing...
   1:Atlas-2.2.1-1                    ################################# [100%]

1.2 配置

[root@db03 ~]$ cd /usr/local/mysql-proxy/conf/
[root@db03 conf]$ cat > test.cnf <<EOF
> [mysql-proxy]
> admin-username = user                          管理相關(guān)的用戶(hù)
> admin-password = pwd                           管理相關(guān)的用戶(hù)
> proxy-backend-addresses = 10.0.0.55:3306       主庫(kù)的IP(寫(xiě)入的庫(kù),此處為VIP)
> proxy-read-only-backend-addresses = 10.0.0.52:3306,10.0.0.53:3306   只讀節(jié)點(diǎn)
> pwds = repl:3yb5jEku5h4=,mha:O2jBXONX098=      數(shù)據(jù)庫(kù)用戶(hù),訪問(wèn)數(shù)據(jù)庫(kù)的用戶(hù)
> daemon = true
> keepalive = true
> event-threads = 8            線程數(shù)量
> log-level = message
> log-path = /usr/local/mysql-proxy/log
> sql-log=ON                   操作日志
> proxy-address = 0.0.0.0:33060          對(duì)外端口
> admin-address = 0.0.0.0:2345           對(duì)內(nèi)管理端口
> charset=utf8
> EOF

1.3 啟動(dòng)atlas

[root@db03 conf]$ /usr/local/mysql-proxy/bin/mysql-proxyd test start
OK: MySQL-Proxy of test is started
[root@db03 conf]$ ps -ef |grep proxy
root      11397      1  0 10:33 ?        00:00:00 /usr/local/mysql-proxy/bin/mysql-proxy --defaults-file=/usr/local/mysql-proxy/conf/test.cnf
root      11398  11397  0 10:33 ?        00:00:00 /usr/local/mysql-proxy/bin/mysql-proxy --defaults-file=/usr/local/mysql-proxy/conf/test.cnf
root      11411   7331  0 10:33 pts/1    00:00:00 grep --color=auto proxy

1.4 查看server_id(會(huì)自動(dòng)切換讀的數(shù)據(jù)庫(kù))

[root@db03 conf]$ mysql -umha -pmha -h 10.0.0.53 -P 33060
db03 [(none)]>select @@server_id;
+-------------+
| @@server_id |
+-------------+
|          53 |
+-------------+
1 row in set (0.00 sec)

db03 [(none)]>select @@server_id;
+-------------+
| @@server_id |
+-------------+
|          52 |
+-------------+
1 row in set (0.00 sec)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市般贼,隨后出現(xiàn)的幾起案子愧哟,更是在濱河造成了極大的恐慌,老刑警劉巖哼蛆,帶你破解...
    沈念sama閱讀 222,378評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蕊梧,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡腮介,警方通過(guò)查閱死者的電腦和手機(jī)肥矢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,970評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)叠洗,“玉大人甘改,你說(shuō)我怎么就攤上這事∶鹨郑” “怎么了十艾?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,983評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)腾节。 經(jīng)常有香客問(wèn)我忘嫉,道長(zhǎng),這世上最難降的妖魔是什么案腺? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,938評(píng)論 1 299
  • 正文 為了忘掉前任庆冕,我火速辦了婚禮,結(jié)果婚禮上劈榨,老公的妹妹穿的比我還像新娘愧杯。我一直安慰自己,他們只是感情好鞋既,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,955評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布力九。 她就那樣靜靜地躺著,像睡著了一般邑闺。 火紅的嫁衣襯著肌膚如雪跌前。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,549評(píng)論 1 312
  • 那天陡舅,我揣著相機(jī)與錄音抵乓,去河邊找鬼。 笑死靶衍,一個(gè)胖子當(dāng)著我的面吹牛灾炭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播颅眶,決...
    沈念sama閱讀 41,063評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼蜈出,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了涛酗?” 一聲冷哼從身側(cè)響起铡原,我...
    開(kāi)封第一講書(shū)人閱讀 39,991評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎商叹,沒(méi)想到半個(gè)月后燕刻,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,522評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡剖笙,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,604評(píng)論 3 342
  • 正文 我和宋清朗相戀三年卵洗,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片弥咪。...
    茶點(diǎn)故事閱讀 40,742評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡过蹂,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出酪夷,到底是詐尸還是另有隱情榴啸,我是刑警寧澤,帶...
    沈念sama閱讀 36,413評(píng)論 5 351
  • 正文 年R本政府宣布晚岭,位于F島的核電站鸥印,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏坦报。R本人自食惡果不足惜库说,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,094評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望片择。 院中可真熱鬧潜的,春花似錦、人聲如沸字管。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,572評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至亡呵,卻和暖如春抽活,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背锰什。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,671評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工下硕, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人汁胆。 一個(gè)月前我還...
    沈念sama閱讀 49,159評(píng)論 3 378
  • 正文 我出身青樓梭姓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親嫩码。 傳聞我的和親對(duì)象是個(gè)殘疾皇子誉尖,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,747評(píng)論 2 361