​好在,别人如何分析我,跟我本身是一点关系也没有的。(by 三毛)

主从复制的常见用途

1.数据备份

对备份来说,复制是一项很有意义的技术补充,但复制既不是备份也不能取代备份

2.负载均衡(读写分离)

通过MySQL主从复制,可以把写操作放在主库(master),读取操作放在多个从库(slave),能够很好的将负载分离到不同的MySQL服务器上,从而减轻单一数据库的操作压力

3.高可用性和故障切换

复制能够帮助应用程序避免MySQL单点失败,当主库(master)发生故障后,可以立马切换到从库(slave),降低服务器数据风险。

4.MySQL升级测试

使用一个更高版本的MySQL作为备库,保证在升级全部实例前,查询能够在备库预期执行

主从复制的原理

面试题:1 主从复制是如何工作的?2 简单介绍下主从复制的基本原理?

Plus版

1.主库将数据更改记录到二进制日志(Binary Log)

2.从库将主库上的日志复制到自己的中继日志(Relay Log)中

3.从库读取中继日志中的事件,将其重放到从库数据之上

大众

主库(master)记录下自己的操作日志,授权从库可以读取操作日志,从库(slave)会开启两个线程。

  • IO线程 负责连接主库(master) 连接成功后,睡眠并等待主库(master)产生新的事件,有新的就保存到自己的中继日志中,中继日志通常位于操作系统的缓存中,所以开销很小。
  • sql进程 负责执行中继日志中的sql操作,这样从库(slave)的内容就和主库(master)的一致了

执行步骤

第一步

主库记录二进制日志,在每次更新事件(update、insert、delete)事务提交前,主库会将数据更新的事件写入二进制日志中(Binary Log)

第二步

从库会启动一个工作线程(I/O线程),I/O线程会跟主库建立一个客户端连接,然后主库会启动一个特殊的二进制转储(binlog dump)线程,这个线程会读取主库中的二进制日志中的事件并将其读到的binlog的内容发到从库

第三步

从库的SQL线程执行最后一步,该线程从中继日志中读取更新事件并在从库执行,从而实现从库的数据更新

配置主从复制(以Centos 7 为例)

首先

停止对主库(master)数据库的操作,把主库(master)中的数据库全部导入到从库(slave),使两边数据库完全一致。

小提示 主从配置需要注意的点1 主从服务器操作系统版本和位数一致2 主库和从库的版本保持一致(注:从库的版本可以高于主库,但一定不能低于主库)3 主库和从库的数据要一致4 主库开启二进制日志,主库和从库的server_id在局域网内必须各自唯一

主库(master)配置

1.创建复制账号

MySQL会给一些特殊权限到复制线程,从库的I/O线程会创建一个连接到主库的TCP/IP连接,这就需要主库上创建一个复制用户,并赋予其合适的权限,语句如下

mysql> GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO repl@'%' IDENTIFIED BY '123456';

2.修改主库的配置文件

修改master的配置文件,使用二进制日志,指定server-id,重启服务。

cd /etc/vi my.cnf

添加如下配置

log_bin=mysql-bin //[*]启用二进制日志server_id=10 //[*]服务器唯一ID

配置完成后需要重启mysqlserver才能生效。

systemctl restart mysqld

3.检查二进制日志文件名

mysql> show master status;

从库(slave)配置

1.修改配置文件my.cnf

vi /etc/my.cnf

添加如下配置

log_bin=mysql-binserver_id=2relay_log=/var/lib/mysql/mysql-relay-binlog_slave_updates=1read_only=1

2.将从库(slave)指向主库(master)

CHANGE MASTER TO MASTER_HOST='你主库的IP地址',MASTER_USER='你创建的复制用户名',MASTER_PASSWORD='密码',MASTER_LOG_FILE='你的二进制日志文件名',MASTER_LOG_POS=主库查到的Position;

3.启动slave

mysql>start slave;

4.查看slave状态

mysql> mysql slave statusG

结果中有两个重要数据项:

Slave_IO_Running: Yes IO线程状态,必须YESSlave_SQL_Running: Yes SQL线程状态,必须YES

测试

我搭建了两套CentOS7环境,给大家演示一下.

mysql主从复制Testhttps://www.zhihu.com/video/1191670270795292672

扫码关注左羊公社,回复关键字“面试”,即可无套路获取JAVA面试资源​。​

更多精彩内容

请关注左羊公社

centos7 mysql启动失败_Mysql主从复制相关推荐

  1. CentOS7 mysql启动失败且无log的原因分析

    用 systemctl start mysqld 启用mysql服务失败,失败后会有提示,让用 systemctl status mysqld 或者 journalctl -xe 来查看错误原因. s ...

  2. 硬盘满了 mysql启不来_MySQL数据库之磁盘已满造成的mysql启动失败问题分享

    本文主要向大家介绍了MySQL数据库之磁盘已满造成的mysql启动失败问题分享 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 突然发现mysql死活都启不起来了: 复制代码 代 ...

  3. 大数据学习笔记33:解决CentOS7上MySQL启动失败问题

    文章目录 一.查看安装的MySQL数据库版本 二.启动MySQL失败 1.启动MySQL,出现错误提示 2.执行systemctl status mysqld.service查看详情 3.执行jour ...

  4. mysql启动失败的一个解决方法

    mysql启动失败的一个解决方法 参考文章: (1)mysql启动失败的一个解决方法 (2)https://www.cnblogs.com/notfresh/p/mysqlStartError.htm ...

  5. linus启动mysql失败_Linux下MySQL启动失败的解决一例

    Linux下MySQL启动失败的解决一例: 当敲mysql命令时 Can't connect to local MySQL server through socket '/var/lib/mysql/ ...

  6. linux中的mysql启动失败(一直连续出现点点的状态)

    linux中mysql启动失败,一直出现点点没有任何错误提示 后来发现应该是进程被占用而导致的, 输入命令 : ps aux |grep mysql* 查看mysql的开启进程状态,将开启的进程杀死以 ...

  7. linux mysql 安装启动失败,Linux服务器一键安装包的mysql启动失败

    Linux服务器上用一键安装包配置的环境,启动mysql失败,提示如下错误信息: 排查方法: 1.查看服务器的磁盘空间是否正常,登录服务器执行命令 df -h 查看磁盘空间,如果服务器的系统盘或者数据 ...

  8. wamp php启动不成功,wamp的mysql 启动失败解决

    wamp启动失败,查看原因是mysql 启动失败 首先查看mysql的启动日志 命令:mysqld --console 知道error报错的地方: 然后百度了此报错,解决方法 在my.ini中添加 i ...

  9. phpstudy_pro MySQL启动失败的原因

    问题描述: 由于之前的phpstudy版本过于老旧,我对它进行了卸载,并又从官网上下载了最新版本的phpstudy,全新的UI界面由于我的操作失误带来了MySQL启动失败的问题. 老版本界面在这里插入 ...

最新文章

  1. 华为计算平台MDC810发布量产
  2. python项目部署失败的原因_python项目环境部署(一)
  3. 2017.11.7 Python 制作EFM32/ AVR批量烧录工具
  4. luogu P1361 小猫爬山 [iddfs]
  5. mac环境下node.js和phonegap/cordova创建ios和android应用
  6. Java中的Swing键盘绑定案例
  7. form表单file,select选择后自动提交
  8. 链家二手房信息爬取(内附完整代码)
  9. Chrome浏览器及调试教程
  10. this java 错误_java异常错误处理
  11. 录屏可以录声音吗?录制带声音的视频,这个方法轻松解决
  12. 转载:optparse模块OptionParser学习
  13. Excel利用公式向导快速设置成绩的评级系统!
  14. 历史名酒元氏益成永——宋曹贡酒
  15. iphone12与iphone11对比,iphone12购买指南
  16. PIN、PAN、PIN block说明
  17. 免费全功能响应式模板:黑暗元素
  18. C++ 设计模式(六)brigde模式
  19. 近期公司笔试题(4)
  20. win7 瘦身 减肥 记录!

热门文章

  1. 前端性能优化篇——浏览器同域名并发请求对限制
  2. Java Float类详解
  3. step7db块寻址_step7 根据db地址块怎样找I/O点
  4. 嵌入式linux镜像,使用Openembedded定制嵌入式Linux镜像
  5. python 操作系统学习_操作系统学习
  6. 乌龟量化估值怎么看_推荐几个查询指数估值的网址
  7. springboot jpa sql打印_SpringBoot集成Spring Data JPA以及读写分离
  8. 【性能测试】性能测试的基础理论
  9. 多任务场景下单线程异步多线程多进程
  10. Appium+Python移动端(Android)自动化测试环境搭建原来没有那么难!+ 带你实战去