主从复制
什么是主从复制
- 传统数据库中存在的问题
- 传统数据库设计时,如果服务器宕机,会导致数据丢失
- 为了防止数据丢失,要进行实时备份
- 冷备份:通过数据库工具进行人为的导出sql,但是手动导出数据可能在中间节点宕机时也会造成数据丢失
- 主从复制
- 用来建立一个和主数据库完全一样的数据库环境,称为从数据库
主从复制的作用
- 做数据的备份,作为后备数据库,主数据库服务器故障后,可以切换到从数据库继续工作,避免数据丢失。
- 架构的扩展,业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O的频率,提高单个机器的I/O性能
- 读写分离,使数据库能支持更大的并发
主从复制的原理
- 数据库有个bin-log二进制文件,记录了所有sql语句
- 把数据库的bin-log文件的sql语句复制过来
- 在从数据库的relay-log重做日志文件中再执行一次这些sql语句
-
具体分三个线程操作
-
i/o线程去请求主库binlog,并将得到的binlog日志写到relay-log(中继日志)文件中
-
主库会生成一个log dump线程,用来给从库i/o传binlog
-
sql线程,会读取relay-log文件中的日志,并解析具体操作,来实现主从的一致,而最终数据一致。
-
主从复制的实现过程
-
主机
- 首先修改mysql的配置文件,使其支持二进制日志功能
- 在主服务器上为从服务器分配一个账号,就像一把钥匙,从服务器拿着这个钥匙,才能到从服务器上来共享主服务器的日志文件
- 查询主服务器BIN日志的信息
-
从机
- 修改配置文件
- 执行关联主机的sql语句
- 查看是否配置成功
知是行之始,行是知之成