在本博客中,"mysql"是一个系列文章,这些文章主要对mysql/mariadb的常用知识点进行了总结,每一篇博客总结的知识点有所不同,具体内容可参考mysql文章列表。
mysql文章列表直达链接:mysql知识点总结
我们来考虑一个问题,如果我们要备份数据,我们一定要保证备份出的数据的可用性,如果备份后的数据在恢复以后,无法正常使用,那么备份出的数据也就失去了备份的意义,数据可用的前提就是数据的正确性、完整性、一致性。正确性和完整性比较容易理解,一致性只通过字面理解不太容易,我们来举个小例子理解一下。
不过在举例之前,我们还是先来看一下"一致性"的一些专业解释,虽然这些专业解释不容易理解,但是没有关系,我们先大概了解一下,在看完后面通俗的示例后你自然会理解。
数据的一致性:通常指关联数据之间的逻辑关系是否正确和完整。
数据库的一致性:是指数据库从一个一致性状态变到另一个一致性状态。
好吧,专业的术语说的很模糊,我们来通俗的、不严谨的举个例子,可能有不当之处,但是方便理解。
数据的一致性
先说说什么是数据的一致性,举例如下。
假设,今天下午3点的时候,小朱的"某宝"账户中有200元钱,小朱想要在网上买一辆自行车,这辆自行车售价198,然后小朱把这辆自行车加入到了购物车中,但是并没有付款,那么某宝认为,小朱在3点的时候,是有能力购买这辆自行车的,于是,某宝就记录了一下,小朱在3点的时候有能力购买这辆自行车(这里只是假设),假设某宝3点开始备份数据库,那么,理论上来说,某宝备份出的数据应该是3点那一刻所有数据的状态,某宝把这次备份命名为"某宝在3点时的数据备份",但是某宝的用户辣么多,数据量辣么大,备份总是需要时间的,假设小朱是某宝的第88888888888个用户,从某宝备份数据开始,到备份结束,需要2个小时,而备份到小朱的账户信息时需要一个半小时,换句话说,某宝从3点开始备份,备份完成,需要到5点,可能会在4点半备份到小朱的数据,那么如果,在3点之后到4点半之前这段时间内,小朱从"某宝"账户中转出了100元,还在账户中剩余了100元,那么,在4点半的时候,某宝备份到的小朱的账户数据将是"小朱的账户中有100元",可是我们不要忘了,某宝是从3点开始备份的,某宝会认为这次备份中的数据都是3点时的数据,那么,如果出现上述的情况,这次备份的数据就变成了"3点时,小朱的账户中有100元",这与实际情况不符 啊,这与实际情况"不一致"啊,3点那一刻,小朱的账户中明明有"200"元,可是备份中却显示"3点那一刻,小朱的账户中有