原理:

MySQL主从复制涉及到三个线程,一个运行在主节点(log dump thread),其余两个(I/O thread, SQL thread)运行在从节点,如下图所示:

l 主节点 binary log dump 线程

当从节点连接主节点时,主节点会创建一个log dump 线程,用于发送bin-log的内容。在读取bin-log中的操作时,此线程会对主节点上的bin-log加锁,当读取完成,甚至在发动给从节点之前,锁会被释放。

l 从节点I/O线程

当从节点上执行`start slave`命令之后,从节点会创建一个I/O线程用来连接主节点,请求主库中更新的bin-log。I/O线程接收到主节点binlog dump 进程发来的更新之后,保存在本地relay-log中。

l 从节点SQL线程

SQL线程负责读取relay log中的内容,解析成具体的操作并执行,最终保证主从数据的一致性。

对于每一个主从连接,都需要三个进程来完成。当主节点有多个从节点时,主节点会为每一个当前连接的从节点建一个binary log dump 进程,而每个从节点都有自己的I/O进程,SQL进程。从节点用两个线程将从主库拉取更新和执行分成独立的任务,这样在执行同步数据任务的时候,不会降低读操作的性能。比如,如果从节点没有运行,此时I/O进程可以很快从主节点获取更新,尽管SQL进程还没有执行。如果在SQL进程执行之前从节点服务停止,至少I/O进程已经从主节点拉取到了最新的变更并且保存在本地relay日志中,当服务再次起来之后,就可以完成数据的同步。

开始之前先交代下开发环境:

window10 家庭版系统

docker 执行 mysql:5.6

映射到本地的 3307和3306两个端口,其中 3307是master 数据库服务器、3306是slave 数据库服务器

数据库主服务器操作:

1.1创建用户并授权

// 创建用户
create user "slave_admin"@"%" identified by "123456";
// 用户授权
grant replication slave on *.* to "slave_admin"@"192.168.99.100";// 刷新权限flush privileges;

1.2修改配置文件(/etc/mysql/mysql.conf.d)

[mysqld]
log-bin=mysql-bin
server-id=3307

1.3重启数据库查看主数据库的当前状态

mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |      120 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+

从数据库服务器操作:

2.1修改配置文件(/etc/mysql/mysql.conf.d)并重启mysql

server-id=3306

2.2设置从服务器的信息并启动

mysql> change master to-> master_host = "192.168.99.100:3307",-> master_port = 3307,-> master_user = "slave_admin",-> master_password = "123456",-> master_log_file = "mysql-bin.000001",-> master_log_pos = 120;
Query OK, 0 rows affected, 2 warnings (0.06 sec)mysql> start slave;
Query OK, 0 rows affected (0.01 sec)

2.3查看是否配置成功

mysql> show slave status\G;
*************************** 1. row ***************************Slave_IO_State: Connecting to masterMaster_Host: 192.168.99.100:3307Master_User: slave_adminMaster_Port: 3306Connect_Retry: 60Master_Log_File: mysql-bin.000001Read_Master_Log_Pos: 120Relay_Log_File: mysqld-relay-bin.000001Relay_Log_Pos: 4Relay_Master_Log_File: mysql-bin.000001Slave_IO_Running: Yes  //主要查看这两个指标状态Slave_SQL_Running: Yes    //主要查看这两个指标状态

到这里主从配置就配置完了!

可能遇到的问题:

在2.3那一步的时候不一定就能够正好 “Slave_IO_Running” 和 “Slave_SQL_Running” 的值都是 YES 这个时候可以这么检查下

第一种 当 “Slave_IO_Running” 的值为 Connecting 时是因为slave数据库服务器去访问 master数据库服务器的 bin-log 时失败导致的,这时候应该检查 2.2中设置的参数是不是正确,如果参数无误的话就要检测下在 slave服务器连接 master数据库是否能够成功;

第二种 当 “Slave_SQL_Running” 的值为 No 时可以执行如下命令

mysql> stop slave ;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> start slave ;

或者重新执行2.2这一步!其他的问题我配置的过程中就没有碰到啦~~~

                                                            ——部分参考网络文件,如有侵权请联系

转载于:https://www.cnblogs.com/itsuibi/p/10779553.html

mysql主从复制搭建相关推荐

  1. 【MySQL】基于Docker的Mysql主从复制搭建

    基于Docker的Mysql主从复制搭建 为什么基于Docker搭建? 资源有限 虚拟机搭建对机器配置有要求,并且安装mysql步骤繁琐 一台机器上可以运行多个Docker容器 Docker容器之间相 ...

  2. Mysql主从复制搭建 与读写分离

    Mysql主从复制搭建 准备条件 Master-Server 配置 修改配置 重启Mysql 配置主从复制账户 Slave-Server 配置 修改配置 重启Mysql 配置Master信息开启主从复 ...

  3. 基于Docker的Mysql主从复制搭建_mysql5.7.x

    文章目录 为什么基于Docker搭建? 一.拉取镜像创建容器 1. 拉取mysql:5.7镜像 2. 创建master容器 3. 创建slave容器 4. 查看正在运行的容器 5. 此时可以使用Nav ...

  4. MySQL主从复制搭建详解

    本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 chaodev 即可关注. 文章目录 1.实现原理 2.实现步骤 2.1 主服务器配置 2.2 从服务器配置 2.3 同步测试 主从复 ...

  5. linux下mysql主从复制搭建

    目标:搭建两台MySQL服务器,一台作为主服务器,一台作为从服务器,实现主从复制 环境: 主数据库: 192.168.1.1 从数据库: 192.168.1.2 mysql安装可参考:https:// ...

  6. mysql拉荐_荐 一步一步教你MySQL主从复制读写分离

    本次我们通过docker搭建环境 虚拟机搭建对机器配置有要求,并且安装mysql步骤繁琐 一台机器上可以运行多个Docker容器 Docker容器之间相互独立,有独立ip,互不冲突 Docker使用步 ...

  7. mysql在线搭建从库_Mysql主从库搭建

    基于Docker的Mysql主从复制搭建 首先安装docker 拉取mysql镜像:5.7版本 启动主从数据库容器 docker run -p 3339:3306 --name Maste -e MY ...

  8. docker安装mysql[主从复制版]

    概述: 总所周知,使用docker安装一些中间件是非常快速和便捷的,搭建mysql主从复制[1主n从节点或n主n从节点],这里我为了演示简单一点,选择搭建mysql主从复制的[1主1从]并使用mysq ...

  9. mysql主从复制(master-slave)_mysql主从复制------Master-Slave搭建及注意事项

    前言 关于mysql主从复制的原理实际上是很通俗易懂的,可是,在实际的搭建这个结构的时候,仍是会遇到不一样的状况的.因而下面介绍的是搭建Master-Slave的操做及注意事项,本文不含数据库的调优参 ...

最新文章

  1. 让BASH,VIM美美的Powerline
  2. redux中间件的用法
  3. Bootstrap学习笔记(一)
  4. Educational Codeforces Round 47
  5. 再见,Navicat!这个 IDEA 的兄弟,真香!
  6. 最大表示法--环形字符串最大字典序(HDU 5442)
  7. Windows系统Ionic安装教程/Ionic环境配置
  8. 黑马程序员python全套视频-python视频教程免费:求黑马程序员python教程?
  9. 通过雷达图的面积进行总体对比分析是不可靠的!
  10. PHP快速入门指南-基础篇一
  11. NFA转变为DFA的子集构造法
  12. HINet | 性能炸裂,旷视科技提出适用于low-level问题的Half Instance Normalization
  13. hacks cheats injection
  14. java加载图片的问题
  15. 搭建自有HTTPS环境
  16. 大武口计算机考试培训,大武口电脑培训地址
  17. Linux内核的misc框架
  18. Cacti登录密码忘记,重置Cacti密码
  19. tcl基本语法:中括号[ ]、大括号{ }、双引号“ ”
  20. cron表达式入门_Sourcehunt:Cron管理,Hackathon入门,PHP-GUI…

热门文章

  1. 95%粉丝失联,小编感觉像失恋?
  2. 最新蓝牙版本助力实现“无连接式” 物联网
  3. 兔子--eclipse设置编码格式
  4. 巩固一下C语言中的指针
  5. Lock 与 InterruptedException
  6. CentOS 5.6配置PPTP+Radius+Daloradius认证服务器傻瓜教程
  7. 判断无线网卡是否支持5GHz频段
  8. FMDB使用的数据库的三种形式
  9. ​iOS 9音频应用播放音频之第一个ios9音频实例2
  10. java获取内存基址_安卓逆向|菜鸟的FRIDA学习笔记:内存读写