异步复制:
异步复制(主从复制)master节点不会关心slave的节点状态,只需要写自己的数据,能不能完成复制看slave节点的io线程(外部)和sql线程(内部)是否开启。
MySQL默认的复制即是异步的,主库在执行完客户端提交的事务后会立即将结果返给给客户端,并不关心从库是否已经接收并处理,这样就会有一个问题,主如果crash掉了,此时主上已经提交的事务可能并没有传到从上,如果此时,强行将从提升为主,可能导致新主上的数据不完整。
数据备份:
数据备份是一种古老而有效的数据保护手段,早期的数据备份手段主要是数据冷备,即定期将数据复制到
某种存储介质(磁带,光盘…)上并物理存档保管,如果系统存储损坏,那么就从冷备的存储中恢复数据
冷备的优点是简单和廉价,成本和技术难度都较低,缺点是不能保证数据最终一致
由于数据是定期复制,因此备份设备中的数据比系统中的数据陈旧,如果系统数据丢失,那么从上个备份点开始后更新的数据就会永久丢失,不能从备份中恢复,同时也不能保证数据的可用性,从冷备存储中恢数据需要较长的时间,而这段时间无法访问数据,系统也不可用
mysql的主从复制
1.主从复制的要求:
(1)主库开启binlog日志(设置log-bin参数)
(2)主从server-id不同
(3)从库服务器能连同主库
** 2. 主从复制的原理:**
mysql的主从配置又叫replication,AB复制,基于binlog二进制日志,主数据库必须开启binlog二进制日志才能进行复制
(1) master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events);
(2)从库生成两个线程,一个i/o线程,一个SQL线程,i/o线程去请求主库的binlog,sql线程进行日志回放来复制
(3) slave将master的binary log events拷贝到它的中继日志(relay log);
(4)slave重做中继日志中的事件,将更改应用到自己的数据上。
3.主从复制的过程
mysql的主从复制(异步复制)(基于position)把一个事件拆开来复制,并不是以一个完整的事件为单位来进行复制
一开始两个mysql必须一模一样,否则会报错,master自己做自己的,写在自己的日志里,slave能否同步成功取决于IO线程,和SQL线程回放日志
IO通过联系master拿到master的二进制日志,SQL回放日志
slave节点的数据总比master节点的数据慢
异步复制:在主节点写入日志即返回成功,默认情况下MySQL5.5/5