一、数据库的主从复制

Mysql内建的复制功能是构建大型,高性能应用程序的基础。将 Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的 某一台主机(Master)的数据复制到其它主机(slaves)上,并重新执 行一遍来实现的。复制过程中一个服务器充当主服务器,而一个或多个其 它服务器充当从服务器。主服务器将更新写入二进制日志文件,这些日志 可以记录发送到从服务器的更新。当一个从服务器连接主服务器时,它通 知主服务器从服务器在日志中读取的最后一次成功更新的位置。从服务器 接收从那时起发生的任何更新,然后封锁并等待主服务器通知新的更新。

Mysql的复制功能主要有3个步骤:

(1)主服务器(master)将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events)

(2)从服务器(slave)将主服务器master的binary log events拷贝到它的中继日志(relay log)

(3)slave重做中继日志中的事件,将改变反映它自己的 数据。

Mysql主从复制工作原理:

1、该过程的第一部分就是master记录二进制日志。在每个事务更新数据完成之前, master在二进制日志记录这些改变。MySQL将事务串行的写入二进制日志,在事件 写入二进制日志完成后,master通知存储引擎提交事务。此后可接收slave的请求

2、下一步就是slave将master的binary log拷贝到它自己的中继日志。首先,slave 开始一个工作线程——I/O线程。I/O线程在master上打开一个普通的连接,然后开 始在主节点上binlog dump process(二进制转存线程)。Binlog dump process 从master的二进制日志中读取事件,如果已经跟上master,它会睡眠并等待master 产生新的事件。I/O线程将这些事件写入中继日志。

3、SQL slave thread(SQL从线程)处理该过程的最后一步。SQL线程从中继日 志读取事件,并重放其中的事件而更新slave的数据,使其与master中的数据一致。 只要该线程与I/O线程保持一致,中继日志通常会位于OS的缓存中,所以中继日志的 开销很小。

Mysql主从复制大致流程图

Mysql主从复制架构实战演练:

1,准备两台虚拟机

master 172.17.254.242

slave 172.17.254.249

清空防火墙策略,关闭selinux。使用yum安装好mysql,并启动mysql

2,相关配置文件

a、配置master主服务器

server-id=1        #配置server-id,让主机有唯一id号

log-bin=mysql-bin     #开启二进制日志

b、在Master的数据库中建立一个备份帐户:每个slave使用标准的MySQL用户名和密码连接master 。进行复制操作的用户会授予REPLICATION SLAVE权限。

GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO slave@'172.17.%.%' IDENTIFIED BY 'centos';

c、使用命令show master status;查看二进制日志

d、配置slave服务器

server-id=2           #切记server-id必须是唯一的不能重复

relay-log=mysql-relay-log     #开启中继日志

read-only=1           #设置只读权限

log-bin=mysql-bin        #开启从服务器二进制日志

log_slave_updates=1      #使得更新的数据写进二进制日志

e、启动从服务器复制线程 让slave连接master,并开始重做master二进制日志中的事件。

CHANGE MASTER TO MASTER_HOST='172.17.254.242',

MASTER_USER='slave',

MASTER_PASSWORD='centos',

MASTER_LOG_FILE='mysql-bin.000006',

MASTER_LOG_POS=245;

执行start slave;# 启动复制线程。

f、查看从服务器状态 可使用SHOW SLAVE STATUS\G查看从服务器状态

Slave_IO_Running: Yes #IO线程正常运行

Slave_SQL_Running: Yes #SQL线程正常运行

测试:

在master服务器上创建一个数据库create database test;

在slave服务器上使用命令show databases;会发现test库

实现了两台服务器的数据的一致性

注意事项:在做实验过程中如果在slave服务器上出现了Slave_IO_Running:Connecting/No问题,首先先检查一下防火墙是否已经关闭;如果不是此问题,检查一下二进制日志以及配置文件是否相对应如果以上问题都没有出现,可能就是slave有残余日志文件,在slave服务器上使用命令reset slave,然后重新开启一下start slave就可以了。

转载于:https://blog.51cto.com/13296660/1984226

Mysql实现企业级数据库主从复制架构实战相关推荐

  1. 好书要“读书有味”--《SOD框架“企业级”应用数据架构实战》序(宇内流云)

    注: 本文是知名.NET跨平台专家,Linux Web Server产品Jexus作者,曾任MVP的宇内流云(网名)先生为<SOD框架"企业级"应用数据架构实战>一书做 ...

  2. MySQL+Amoeba实现数据库主从复制和读写分离

    MySQL读写分离是在主从复制的基础上进一步通过在master上执行写操作,在slave上执行读操作来实现的.通过主从复制,master上的数据改动能够同步到slave上,从而保持了数据的一致性.实现 ...

  3. MySQL搭建主从复制架构实战

    主从复制原理 主库配置文件my.conf 在主库创建同步用户 从库配置文件my.conf 搭建主库 解决docker MySQL容器group by报错问题: vi my.cnf 搭建从库 主从复制模 ...

  4. mysql 1677_mysql之数据库主从复制配置报错1677

    mysql之数据库某表字符集和数据库字符集不一致导致主从复制配置报错1677 mysql数据库中某张表字符集是utf8而my.cnf设置的数据库的字符集是utf8mb4,导致在配置主从复制时,报如下错 ...

  5. mysql 1677_MySQL之数据库主从复制配置报错Last_Errno: 1677

    MySQL之数据库某表字符集和数据库字符集不一致导致主从复制配置报错1677 mysql数据库中某张表字符集是utf8而my.cnf设置的数据库的字符集是utf8mb4,导致在配置主从复制时,报如下错 ...

  6. dmb: 数据库监控及灾备系统(for mysql)_MySQL企业级数据库灾备(备份)系统-DMB v2.1发布...

    为了这系统宅了很多个周末,又一个小长假过去了, DMB v2.1终于可以那得出手了,现在分享出来让朋友们使用,希望能得到更多更好的建议.DMB 对InnoDB存储引擎支持在线热备(ibbackup, ...

  7. 致敬平凡的程序员--《SOD框架“企业级”应用数据架构实战》自序

    "简单就是美" "平凡即是伟大" 上面两句话不知道是哪位名人说的,又或者是广大劳动人民总结的,反正我很小的时候就常常听到这两句话,这两句话也成了我的人生格言,而 ...

  8. 企业级nosql数据库应用与实战-redis

    企业级nosql数据库应用与实战-redis 项目场景: 随着互联网2.0时代的发展,越来越多的公司更加注重用户体验和互动,这些公司的平台上会出现越来越多方便用户操作和选择的新功能,如优惠券发放.抢红 ...

  9. 企业级集群架构体系实战(一)

    企业级集群架构体系实战(一) 企业级集群架构体系实战一 1试验拓扑图 总体层次划分拓扑简图 2试验准备 3前端接入层调度器部署及高可用配置 node1node2 4缓存层部署及动静分离配置 node3 ...

  10. MyCAT+MySQL 搭建高可用企业级数据库集群

    第1章 课程介绍 课程介绍 1-1 MyCAT导学 试看 1-2 课程介绍 第2章 MyCAT入门 这一章中,我们将回顾了垂直切分,水平切分,分库分表等基础概念,然后快速回如何安装和启动MyCAT的, ...

最新文章

  1. PHP运算符与表达式
  2. 65. Leetcode 153. 寻找旋转排序数组中的最小值 (二分查找-局部有序)
  3. android应用案例开发大全_vue.js入门及经典应用案例总结(前端开发必看)
  4. 理解卷积神经网络的利器:9篇重要的深度学习论文(下)
  5. python call agilent com_PyVISA通过RS232(USB)与安捷伦34970A通信时出现超时错误
  6. dmb显示服务器断开连接,dmb联网信息发布系统操作手册企业加强版.docx
  7. [android开发IDE]adt-bundle-windows-x86的一个bug:无法解析.rs文件--------rs_core.rsh file not found...
  8. oracle erase,Arc SDE forOracle实现erase空间分析计算
  9. Python 运维总结
  10. 2345 网址导航劫持 解决办法
  11. Service Unavailable出现原因及解决方法
  12. c语言将输入的字母串转为数字,C语言把字符串转换为数字
  13. amd cpu 安卓模拟器_Android 模拟器现已支持 AMD 处理器和 Hyper-V
  14. Spectrum数据采集卡和任意波形发生器在杨百翰大学声波研究中的应用
  15. 解决键盘模式(布局)的错误导致的部分键位失灵或异常(姑且这样描述问题吧)
  16. U盘里的文件都变成了.exe文件
  17. SpringBoot实现zip文件下载
  18. 室内定位之蓝牙Beacon-部署方案
  19. matlab2018a安装(里面有matlab2018a_win64的下载路径以及详细步骤,自己亲自测试运行没有问题!)
  20. 中国航信2020java校招笔试题_航信校招java笔试题

热门文章

  1. 移除单元格选中时的高亮显示状态
  2. 机器学习基础:逻辑回归(Machine Learning Fundamentals: Logistic Regression)
  3. 教你如何关闭Mac电脑的Microsoft AutoUpdate弹框提示
  4. 适用于Mac的WinX HD视频转换器:视频转换教程
  5. VEGAS不等双11,提前嗨购!助你成为视频大神!
  6. 【Flutter】基础组件【05】Icon
  7. iOS底层探索之多线程(十一)—GCD源码分析(调度组)
  8. Vue 过滤器filters
  9. iOS中使用URL Scheme进行App跳转
  10. 可爱的 CreateMessageDialog