一、为什么要搭建主从架构呢
1.数据安全 , 可以进行数据的备份 。
2.读写分离 , 大部分的业务系统来说都是读数据多 , 写数据少 , 当访问压力过大时 , 可以把读请求给到从服务器 。从而缓解数据库访问的压力
3.故障转移(高可用) , 当主节点宕机之后 , 将从服务切换为主节点继续提供服务 。当然要实现主从切换还需要其他中间件来实现 。
二、主从数据同步原理
MySQL的主从架构一般都是通过binlog日志实现 , binlog日志会记录主库的每一次操作 。从库和主库建立连接TCP后 , 请求主库将binlog传输过来 , 这是主库有一个dump线程把binlog传输给从库 。
【Docker如何构建mysql主从?】从库将读取到的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
确保两个mysql容器都正常启动了 , 可以使用工具连接3306和3307端口看看是否能够连接上mysql 。
2.修改配置 , 这个时候我们需要进入到docker容器内部去修改/etc/mysql目录下的mysql的my.cnf文件
docker exec -it 容器ID/容器名字 /bin/bash
文章插图
docker容器是轻量级的嘛 , 所以有些操作是不支持的 , 我们想要修改文件一般都会使用vim命令嘛 , 所以我们还需要安装一下:
先执行
apt-get update
在执行
apt-get install vim
master的my.cnf文件:
[mysqld] #保证唯一性 server-id=1 #开启binlog日志并设置文件名字 log_bin=master-bin
slave的my.cnf文件:
[mysqld]#保证唯一性server-id=2#开启relay日志并设置文件名字relay_log=slave-relay
配置完之后重启两个容器的mysql服务 service mysql restart 或者重启容器 , 因为重启mysql服务容器也会停止 。
windows桌面版的docker可以直接在这儿重启容器
文章插图
3.查看master状态配置并进行连接
show master status;
文章插图
可以看到binlog文件 , 还有文件中的索引位置 。Binlog_Do_DB和Binlog_Ignore_DB这两个字段是表示需要记录binlog文件的库或者不需要记录binlog文件的库 。暂时没有配置 , 就表示是针对全库记录日志 。
在从节点上面执行sql语句:
change master to master_host='172.17.0.3',master_user='root',master_password='root',master_port=3306,master_log_file='master-bin.000001',<br>master_log_pos= 154;
master_host :Master的地址 , 这儿需要的是容器在的独立IP 可以进入容器查看 , 也可执行docker指令查看:
docker inspect --format='{{
.NetworkSettings.IPAddress}}' 容器名称/容器id
master_user master_password:用于同步的用户的密码,实际中肯定不能使用root用户
master_log_file:指定 Slave 从哪个日志文件开始复制数据
master_log_pos:从哪个 Position 开始读 , 都是对应master中的值
执行成功之后在启动slave就可以了
start slave;
show slave status
查看从节点信息了:
文章插图
现在去主库建库表 , 写数据 , 从库都会吧数据同步过去了
推荐阅读
- 自媒体小白应该如何运营好自己的自媒体账号!这五点绝对稳!
- 职场法则|不做职场的弃子,如何在职场中不掉队,职场潜规则
- 央视|央视曝光的土坑酸菜现状如何?农民改行、有厂家退单50多万
- 脂溢性脱发如何生长有哪些技巧
- 如何做好运输公司管理工作
- 自动挡汽车该如何正确启动?
- node是什么?如何在linux下安装node?
- 喝剩黑茶用处多,如何泡黑茶
- 如何理解c/c++和php语言的区别
- 如何选购普洱熟茶,如何鉴别普洱熟茶的好坏