1、Mysql主从复制架构
在实际生产中,数据的重要性不言而喻,因此考虑到数据的重要性比如单点故障导致后端数据库奔溃,或者后端数据库访问压力过大等,mysql数据库做主从非常有必要,减轻后端数据库压力,主服务器负责读写,从服务器只负责读,这样一来即保证了数据的可靠性,同时提高服务器的高可用。
主从复制是指一台服务器充当主数据库服务器,另一台或多台服务器充当从数据库服务器,主服务器中的数据自动复制到从服务器之中。对于多级复制,数据库服务器即可充当主机,也可充当从机。MySQL主从复制的基础是主服务器对数据库修改记录二进制日志,从服务器通过主服务器的二进制日志自动执行更新。通常需要注意的是,当进行复制时,所有对复制中的表的更新必须在主服务器上进行。
MYSQL的主从复制架构类似如下形式:
MySQL数据库支持同步复制、半同步复制、单向赋值、异步复制,在复制的过程中一个服务器充当主服务,而一个或多个服务器充当从服务器。主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环。这些日志可以记录发送到从服务器的更新。当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置。从服务器接收从那时起发生的任何更新,然后封锁并等待主服务器通知新的更新
2、Mysql主从复制不一致的解决方案
稍微有些规模的网站,基本上都会配置mysql主从复制,一方面用mysql的主从做读写分离,另一方面也因为mysql本身的单机备份不是很强,所以一般采用主从架构,在从上进行数据备份。但是在Mysql主从复制过程中,或多或少都会出现一些主从不同步的情况,有的是因为网络的延迟导致、有的是因为Mysql的设置问题或者服务器异常宕机导致。
为解决不一致的问题,通常可采用下述三种方法:
- 通过sql_slave_skip_counter跳过同步错误,适用于一般异常如插入时主键冲突。
- 重新做主从,然后使用change master指定同步位置,但此方式一般耗时长。
- 利用第三方工具,如pt-table-checksum及pt-table-sync作主从数据的检验及同步。