无标题文章

普通文件方式

简单数据的导入和导出

编辑配置文件my.cnf添加如下配置项

[mysqld]

secure_file_priv = 保存到本地目录

例如

secure_file_priv = /tmp

配置完成后需要重启服务

本地目录需要给mysql用户授予读写权限

登录到服务器,可以验证配置项是否生效

SELECT@@GLOBAL.secure_file_priv;或者SHOWVARIABLESLIKE"secure_file_priv";

假如没有使用此配置项,查询到的值为NULL。

mysql> SELECT @@GLOBAL.secure_file_priv;+---------------------------+| @@GLOBAL.secure_file_priv |+---------------------------+| NULL                      |+---------------------------+1rowinset (0.00sec)

执行下面的导入导出语句时就会报如下错误

ERROR1290(HY000): The MySQL server is runningwiththe --secure-file-priv option so it cannot executethisstatement

导出

select *fromschool.classinto outfile"/tmp/class2.db";

导入

导入到数据文件中的列必须和表中的一一对应。包含id列的值。

实例文件

5,云计算1809

6,云计算1901

7,云计算1902

导入语句

载入外部“形式整齐”的数据(csv 格式的文件,没有域之家用逗号隔开): load data infile'文件完整名(含路径)'into table 表名fields terminated by'域分隔符'optionally    enclosed  by'"'ignore 1 lines;

optionally    enclosed  by '"' 用于识别域值的界定符

ignore 1 lines;  忽略第一行

MySQL 逻辑备份 mysqldump

逻辑备份特点

备份的是建表、建库、插入等操作所执行SQL语句(DDL DML DCL),适用于中小型数据库。

效率相对较低

在日常工作中,我们会使用 mysqldump 命令创建SQL格式的转储文件来备份数据库。或者我们把数据导出后做数据迁移,主从复制等操作。mysqldump是一个逻辑备份工具,复制原始的数据库对象定义和表数据产生一组可执行的SQL语句。 默认情况下,生成insert语句,也能生成其它分隔符的输出或XML格式的文件。

特点

自动记录position位置。

show master  status\G;

可用性,一致性

锁表机制

用法

mysqldump-h服务器-u用户名-p密码  数据库名  > 备份文件.sql/*查看帮助*/mysqldump--help

日常用法

备份所有库

// 先配置用户名和密码shell> vi ~/.mysql_user[mysqldump]user=rootpassword=123shell> mysqldump --defaults-file=~/.mysql_user -h172.16.153.10 --all-databases > `date +%FT%H_%M_%S`dump_all.sql# 不包含 INFORMATION_SCHEMA,performance_schema,sys

备份指定的多个库

// 为了考虑篇幅,请自行添加指定用户名密码参数和指定服务器的参数

// --defaults-file=~/.mysql_user -hip

shell> mysqldump --databases db1 db2 db3 > `date +%FT%H_%M_%S`dump_all.sql

备份指定库的指定几个表

shell>mysqldumpdb1t1t3t7>dump.sql

其他参数

--master-data=0|1|2

服务器的二进制日志必须打开

0    不记录二进制日志文件及位置:

1    以CHANGE MASTER TO 的方式记录位置,可用于恢复后直接启动从服务器:

2  以CHANGE MASTER TO 的方式记录位置,但默认被注释:

--dump-slave 用于在slave上dump数据,建立新的slave。因为我们在使用mysqldump时会锁表,所以大多数情况下,我们的导出操作一般会在只读备库上做,为了获取主库的Relay_Master_Log_File(二进制日志)和Exec_Master_Log_Pos(主服务器二进制日志中数据所处的位置),需要用到这个参数,不过这个参数只有在5.7以后的才会有

--no-data, -d 不导出任何数据,只导出数据库表结构

--lock-all-tables:锁定所有表 对MyISAM引擎的表开始备份前,先锁定所有表。

优势

mysqldump的优势:

可以查看或者编辑十分方便,它也可以灵活性的恢复之前的数据。

不关心底层的存储引擎,既适用于支持事务的,也适用于不支持事务的表。

不过它不能作为一个快速备份大量的数据或可伸缩的解决方案。如果数据库过大,即使备份步骤需要的时间不算太久,但有可能恢复数据的速度也会非常慢,因为它涉及的SQL语句插入磁盘I/O,创建索引等等。 对于大规模的备份和恢复,更合适的做法是物理备份,复制其原始格式的数据文件,可以快速恢复。

恢复

shell>mysql

或者,在mysql中,使用source命令:

mysql>sourcedump.sql

如果文件是不包含CREATE DATABASEUSE语句的单数据库转储 ,请首先创建数据库(如有必要):

shell> mysqladmin create db1

然后在加载转储文件时指定数据库名称:

shell>mysqldb1

或者,在mysql中创建数据库,将其选为默认数据库,然后加载转储文件:

mysql> CREATE DATABASEIFNOT EXISTS db1;mysql>USEdb1;mysql>source dump.sql

Example

shell> mysql --defaults-file=~/.mysql_user < /backup/2016-12-08-04-mysql-all.sql

MySQL 物理备份: Innobackupex 和 xtrabackup(热备)

Percona XtraBackup是一款基于MySQL的热备份的开源实用程序,它可以备份5.1到5.7版本上InnoDB,XtraDB,MyISAM存储引擎的表, Xtrabackup有两个主要的工具:xtrabackup、innobackupex 。

第一种安装方式: 使用YUM方式安装

地址

https://www.percona.com/downloads/Percona-XtraBackup-LATEST/

确保安装 EPEL 源

yum installhttps://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

安装libev

为了成功安装Percona XtraBackup libev包需要先安装。

yum  install -y libev

安装Percona存储库

yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm

测试存储库的可用性

shell> yumlist| grep percona

应该输出如下信息

...percona-xtrabackup-20.x86_642.0.8-587.rhel5percona-release-x86_64percona-xtrabackup-20-debuginfo.x86_642.0.8-587.rhel5percona-release-x86_64percona-xtrabackup-20-test.x86_642.0.8-587.rhel5percona-release-x86_64percona-xtrabackup-21.x86_642.1.9-746.rhel5percona-release-x86_64percona-xtrabackup-21-debuginfo.x86_642.1.9-746.rhel5percona-release-x86_64percona-xtrabackup-22.x86_642.2.13-1.el5percona-release-x86_64percona-xtrabackup-22-debuginfo.x86_642.2.13-1.el5percona-release-x86_64percona-xtrabackup-debuginfo.x86_642.3.5-1.el5percona-release-x86_64percona-xtrabackup-test.x86_642.3.5-1.el5percona-release-x86_64percona-xtrabackup-test-21.x86_642.1.9-746.rhel5percona-release-x86_64percona-xtrabackup-test-22.x86_642.2.13-1.el5percona-release-x86_64...

安装软件

shell> yum install percona-xtrabackup-24

验证安装

image.png

第二种安装方式:下载对应版本的软件包,在本地安装

点击下载页面,选择对应版本后进行下载

image.png

示例:

下载2.4.4版本

wgethttps://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.4/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.4-1.el7.x86_64.rpm

安装

yumlocalinstallpercona-xtrabackup-24-2.4.4-1.el7.x86_64.rpm

注意:像这样手动安装软件包时,您需要确保解决所有依赖项并自行安装缺少的软件包。

卸载

yum remove percona-xtrabackup

80 版本

注意:

这个版本只支持 MySQL8.0的数据进行备份,不支持 MySQL8.0版本之前的数据进行备份。

# 安装仓库文件yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm# 启用仓库percona-releaseenable-only tools release#安装软件yum install percona-xtrabackup-80

报错解决

来自file:///etc/pki/rpm-gpg/RPM-GPG-KEY-percona 的无效 GPG 密钥:No key foundingiven key data

或者

源"CentOS 7 - Percona"的 GPG 密钥已安装,但是不适用于此软件包。请检查源的公钥 URL 是否配置正确。 失败的软件包是:Percona-Server-shared-56-5.6.43-rel84.3.el7.x86_64 GPG  密钥配置为:file:///etc/pki/rpm-gpg/RPM-GPG-KEY-percona

修改仓库文件percona-release.repo不使用密钥认证

image.png

再次安装会看到如下报错信息

Transaction check error:  file /etc/my.cnffrominstallofPercona-Server-shared-56-5.6.43-rel84.3.el7.x86_64 conflictswithfilefrompackage mysql-community-server-5.7.25-1.el7.x86_64错误概要-------------

需要安装如下软件

yum install -y  mysql-community-libs-compat

注意:

这个软件的源是mysql57-community

[mysql57-community]name=MySQL5.7Community Serverbaseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/enabled=1gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql文件内容如下:

点我传送门

再执行安装命令

yum install percona-xtrabackup-24

日常操作

条件:

在 MySQL 服务器本地安装 Xtrbackup 并执行相关操作。

给执行备份到用户进行相应的授权。

配置选项

配置选项可以在sh命令行中直接使用,也可以在my.cnf文件中配置

# my.cnf 文件的配置[xtrabackup]target_dir = /backups/mysql/# 备份数据放置的位置

假如是编译安装的 mysql ,需要在配置文件my.cnf中指定 socket 文件的路径。

[xtrabackup]socket =/tmp/mysql.sock

1. 全备

下面的命令均假设没有在my.cnf中配置任何关于 xtrabackup 的选项

要执行备份需要指定 备份数据放置的位置,就是目录,假如目录不存在,则会自动创建;==注意这个目录不会被递归创建,仅仅会创建最后一级目录;==假如存在,就会直接开始备份,并且不会覆盖原来的数据。

开始备份

shell> xtrabackup --backup --user=root --password='123'--target-dir=/backups/full# 备份完成后,可以看到备份时的LSN号,当下次进行增量备份时,xtrabackup就只备份大于此号的page即可。

查看备份文件

[root@mysql-master ~]# ls -lh /backups/full总用量 13M-rw-r----- 1 root root  487 8月  18 09:44 backup-my.cnf-rw-r----- 1 root root  293 8月  18 09:44 ib_buffer_pool-rw-r----- 1 root root  12M 8月  18 09:44 ibdata1drwxr-x--- 2 root root 4.0K 8月  18 09:44 mysqldrwxr-x--- 2 root root  88 8月  18 09:44 one_dbdrwxr-x--- 2 root root 8.0K 8月  18 09:44 performance_schemadrwxr-x--- 2 root root  58 8月  18 09:44 shark_dbdrwxr-x--- 2 root root 8.0K 8月  18 09:44 sys-rw-r----- 1 root root  115 8月  18 09:44 xtrabackup_checkpoints-rw-r----- 1 root root  446 8月  18 09:44 xtrabackup_info-rw-r----- 1 root root 2.5K 8月  18 09:44 xtrabackup_logfile

进入目录后,可以看到一些目录,这些目录与我们数据库的名称相同,没错,这些就是各个数据库的数据文件备份目录。

还有一个innodb的共享表空间文件,ibdata1,注意,如果想要使用xtrabackup备份众多数据库中的某一个,那么必须保证在创建这个数据库时,已经开启了innodb_file_per_table参数,否则将无法单独备份数据库服务器中的某一个数据库。

除了刚才描述的这些数据文件,xtrabackup还为我们生成了一些文件,我们来看看这些文件都有什么用(不同版本的xtrabackup生成的文件可能不同)。

backup-my.cnf

此文件中包含了my.cnf中的一些设置信息,但是,并不是my.cnf中的所有信息都会包含在此文件中,此文件中只包含了备份时需要的信息。

xtrabackup_binlog_info

需要开启二进制日志

此文件中记录了备份开始时二进制日志文件的"位置(position)"

xtrabackup_checkpoints

此文件中记录此次备份属于那种类型的备份,是全量还是增量,备份时起始的LSN号码,结束的LSN号码等信息。

xtrabackup_info

本次备份的概要信息,此文件中的信息还是比较全面的。

xtrabackup_logfile

记录了备份过程中的日志,在对数据进行prepare时需要通过日志将数据还原成一致的可用的数据。

准备恢复的数据

使用 xtrabackup --backup 选项进行备份后,并不能直接使用,首先需要准备它以便还原它。

如果您尝试使用这些数据文件启动InnoDB,它将检测损坏并自行崩溃,以防止您在损坏的数据上运行。

因为备份出的数据是不一致的,我们需要将同时备份出的事务日志应用到备份中,才能得到一份完整、一致、可用的数据,xtrabackup称这一步操作为prepare,直译过来就是"准备"。

xtrabackup --prepare 步骤使文件在一个时刻完全一致

shell> xtrabackup --prepare --target-dir=/backups/full

如果你要备份的数据量巨大,那么备份时长会变长,期间备份的事务日志容量有可能会很大。那么,我们可以使用--use-memory选项,加速准备工作的完成,在不指定内存大小的情况下,准备工作默认会占用100MB的内存,如果服务器有一定的空闲内存,那么我们可以让xtrabackup使用指定大小的内存完成准备工作,以提升准备工作完成的速度,示例语句如下。

shell> xtrabackup --prepare --use-memory=512M --target-dir=/backups/full

==准备备份时不建议中断xtrabackup进程,因为这可能会导致数据文件损坏,备份将无法使用。如果准备过程中断,则无法保证备份有效性。==

准备备份数据完成后,应该会看到如下信息。

InnoDB: Starting shutdown...InnoDB: Shutdown completed;logsequence number 13596200180818 10:09:19 completed OK!

恢复

xtrabackup 在执行copyback时会读取数据库的my.cnf中的配置,但是如果my.cnf中没有配置datadir,那么--datadir选项必须存在,而且,datadir目录必须为空目录,其中不能存在数据,否则在执行上述命令时会报错,--copy-back选项对应的目录就是我们准备好的可用数据的目录。

为了能够正常的恢复数据,我们先确定数据库服务已经停止了,而且对应的数据目录中不存在数据,然后进行数据还原工作,删除数据目录中的文件与日志。

停止数据库的服务

清理环境

修改权限

启动数据库

shell> systemctl stop mysqld.serviceshell> rm -rf /var/lib/mysql/*shell> xtrabackup --copy-back --datadir=/var/lib/mysql --target-dir=/backups/full# 下面为完成后的输出结果180818 10:59:25 [01]        ...done180818 10:59:25 completed OK!shell> chown  mysql.mysql -R /var/lib/mysql

或者使用rsync命令

shell> rsync -avrP /backup/ /var/lib/mysql/

shell> chown  mysql.mysql -R /var/lib/mysql

启动数据库

shell> systemctl start mysqld.service

innobackuper 命令实现

shell> innobackupex --defaults-file=/etc/my.cnf --host=192.168.1.146 --user=root --password=123123 /backup

shell> nnobackupex --apply-log --use-memory=4G /backups/2018-08-17_15-53-11

shell> systemctl stop mysqld.service

shell> rm -rf /var/lib/mysql/*

shell> innobackupex --datadir=/var/lib/mysql --copy-back 2018-08-17_15-53-11

shell> chown  mysql.mysql -R /var/lib/mysql

shell> systemctl start mysqld.service

全量备份思路总结

执行备份命令

指定 数据库的用户名和密码

指定 备份目录,注意只可以自动创建最后一级的目录

准备备份的数据

就是指: --prepare 参数, 保证数据的统一且完整性

停服务,并且把 mysql 的数据目录下的所有文件和文件夹清除。

/var/lib/mysql/此目录必须是空的

恢复数据

本质上就是拷贝备份的文件到指定的 mysql 数据目录下

修改 mysql 数据目录的属主和属组为 MySQL 服务器进程启动的用户,默认是 mysql

启动服务

2. 增量备份

image.png

特点:每次备份,都对自上一次备份(注意是上一次,不是第一次)到此时备份之间有变化的文件,进行备份。所 以备份体积小,备份速度快,但是恢复的时候,需要按备份时间顺序,逐个备份版本进行恢复,恢复时持续的时间长。

无论xtrabackupinnobackupex工具支持增量备份,这意味着它们可以只复制自上次备份以来发生变化的数据。

您可以在每个完整备份之间执行许多增量备份,因此您可以设置备份过程,例如每周一次完整备份和每天增量备份,或每天完整备份和每小时增量备份。

增量备份有效,因为每个InnoDB页面都包含一个日志序列号或LSN。该LSN是整个数据库系统的版本号。每个页面的LSN显示它最近的更改。

当我们做过全量备份以后会在目录下产生xtrabackup_checkpoints的文件 这里面记录了lsn和备份方式,我们可以基于这次的全量做增量的备份。

shell> cat /backups/xtrabackup_checkpoints

backup_type = full-prepared

from_lsn = 0

to_lsn = 13593159

last_lsn = 13593168

compact = 0

recover_binlog_info = 0

增量备份实际上并不将数据文件与先前备份的数据文件进行比较。事实上,如果你知道它的LSN,你可以使用xtrabackup --incremental-lsn来执行增量备份,而不需要先前的备份。增量备份只是读取页面并将其LSN与最后一个备份的LSN进行比较。但是,您仍需要完整备份来恢复增量更改;如果没有完整备份作为基础,增量备份将毫无用处。

创建增量备份

要进行增量备份,请像往常一样以完整备份开始, 使用下面的命令创建基础的全量备份。

shell> xtrabackup --backup --user=root --password=123 --target-dir=/backups/base

现在您已拥有完整备份,以后可以根据它进行增量备份。

向数据库中添加数据,以便于测试

mysql> select count(id) from shark_db.student;+-----------+| count(id) |+-----------+|    99213 |+-----------+1rowinset (0.04sec)mysql> insert into shark_db.student (name,age,phone) values('xiguatian',20,13149876789);Query OK,1row affected (0.00sec)mysql> select count(id) from shark_db.student;+-----------+| count(id) |+-----------+|    99214 |+-----------+1rowinset (0.03sec)

使用以下命令进行增量备份:

shell> xtrabackup --backup --user=root --password=123 --target-dir=/backups/inc1 --incremental-basedir=/backups/base

该/data/backups/inc1/目录现在应包含增量文件

ls -lh /backups/inc1/

总用量 116K

-rw-r----- 1 root root  487 8月  18 11:40 backup-my.cnf

-rw-r----- 1 root root  293 8月  18 11:40 ib_buffer_pool

-rw-r----- 1 root root  64K 8月  18 11:40 ibdata1.delta

-rw-r----- 1 root root  44 8月  18 11:40 ibdata1.meta

drwxr-x--- 2 root root 4.0K 8月  18 11:40 mysql

drwxr-x--- 2 root root  144 8月  18 11:40 one_db

drwxr-x--- 2 root root 8.0K 8月  18 11:40 performance_schema

drwxr-x--- 2 root root  88 8月  18 11:40 shark_db

drwxr-x--- 2 root root 8.0K 8月  18 11:40 sys

-rw-r----- 1 root root  120 8月  18 11:40 xtrabackup_checkpoints

-rw-r----- 1 root root  498 8月  18 11:40 xtrabackup_info

-rw-r----- 1 root root 2.5K 8月  18 11:40 xtrabackup_logfile

这个时候去查看增量备份的xtrabackup_checkpoints,会发现同样也记录了LSN 等信息

shell> cat /backups/inc1/xtrabackup_checkpoints

backup_type = incremental

from_lsn = 13596423

to_lsn = 13596628

last_lsn = 13596637

compact = 0

recover_binlog_info = 0

// 这也意味着你可以在增量的备份上继续增量的备份。

from_lsn是备份的起始LSN,对于增量,它必须与前一个/基本备份的to_lsn(如果它是最后一个检查点)相同。

上面的情况是,to_lsn(上一个检查点LSN)和last_lsn(上次复制的LSN)之间存在差异,这意味着在备份过程中服务器上存在一些流量

模拟增加数据

mysql> insert into shark_db.student (name,age,phone) values('xiguatian3',21,13149876789);Query OK,1row affected (0.01sec)mysql> select count(id) from shark_db.student;                                    +-----------+| count(id) |+-----------+|    99215 |+-----------+1rowinset (0.03sec)

现在可以使用此目录作为另一个增量备份的基础:

shell> xtrabackup --backup --user=root --password=123 --target-dir=/backups/inc2 --incremental-basedir=/backups/inc1

准备增量备份的数据

增量备份的步骤与完全备份的步骤不同。在完全备份中,执行两种类型的操作以使数据库保持一致:从日志文件中针对数据文件重播已提交的事务,并回滚未提交的事务。在准备增量备份时,必须跳过未提交事务的回滚,因为备份时未提交的事务可能正在进行中,并且很可能它们将在下一次增量备份中提交。您应该使用该 选项来阻止回滚阶段.

xtrabackup --apply-log-only

警告

如果不使用该 选项来阻止回滚阶段,那么增量备份将毫无用处。回滚事务后,无法应用进一步的增量备份。

要准备数据,需要从一开始就准备,现在回想一下我们都有那些备份

/backups/base

/backups/inc1

/backups/inc2

image.png

准备基础备份的数据

shell> xtrabackup --prepare --apply-log-only \--target-dir=/backups/base...省略...xtrabackup: starting shutdown with innodb_fast_shutdown = 1InnoDB: Starting shutdown...InnoDB: Shutdown completed;logsequence number 13596441InnoDB: Number of pools: 1180818 11:56:55 completed OK!

注意:

即使已跳过回滚阶段,此备份实际上也可以按原样恢复。如果你恢复它并启动MySQL,InnoDB将检测到没有执行回滚阶段,它将在后台执行,因为它通常用于启动时的崩溃恢复。它会通知您数据库未正常关闭。

把第一次增量备份的数据合并到基础备份的数据中

shell> xtrabackup  --prepare  --apply-log-only  --user=root --password=123  --target-dir=/backups/base  --incremental-dir=/backups/inc1

再把第二次增量备份的数据也合并到基础备份的数据中

shell> xtrabackup --prepare --user=root --password=123  --target-dir=/backups/base  --incremental-dir=/backups/inc2

==注意: 最后一次操作不需要加--apply-log-only参数==

停止 MySQL 服务,并删除数据目录和日志

shell> systemctl stop mysqld

shell> rm -rf /var/lib/mysql/*

开始恢复合并后的全部数据的数据库

shell> xtrabackup --copy-back  --datadir=/var/lib/mysql  --target-dir=/backups/base/

更改数据库目录的权限并启动数据库

shell> chown mysql.mysql -R /var/lib/mysql

shell> systemctl start mysqld

关于加密备份、压缩备份、部分备份

作者:xiguatian

链接:https://www.jianshu.com/p/169f96c709b1

来源:简书

简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容