一、为什么要搭建主从架构呢
1.数据安全,可以进行数据的备份。
2.读写分离,大部分的业务系统来说都是读数据多,写数据少,当访问压力过大时,可以把读请求给到从服务器。从而缓解数据库访问的压力
3.故障转移(高可用),当主节点宕机之后,将从服务切换为主节点继续提供服务。当然要实现主从切换还需要其他中间件来实现。
二、主从数据同步原理
mysql的主从架构一般都是通过binlog日志实现,binlog日志会记录主库的每一次操作。从库和主库建立连接TCP后,请求主库将binlog传输过来,这是主库有一个dump线程把binlog传输给从库。
从库将读取到的binlog日志写入自己的relaylog,另外一个线程读取relaylog里面的内容进行重放。有那么一点点像redis的AOF持久方式,也是重放操作记录。
三、docker搭建mysql主从
感觉用docker会方便很多,自己写点demo之类需要构建集群的时候确实方便很多。
1.拉镜像,再启动两个mysql容器
我的docker是装的windows版本的。
-d 后台启动 最后的mysql:5.7 是我自己的镜像版本,分别映射到宿主机的3306和3307端口 方便等下使用工具连接
docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7 docker run -p 3307:3306 --name mysqlslave -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7