MySQL主从复制作用和配置
一、复制概述
Mysql内建的复制功能是构建大型,高性能应用程序的基础。将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重新执行一遍来实现的。复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环。这些日志可以记录发送到从服务器的更新。当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置。从服务器接收从那时起发生的任何更新,然后封锁并等待主服务器通知新的更新。
请注意当你进行复制时,所有对复制中的表的更新必须在主服务器上进行。否则,你必须要小心,以避免用户对主服务器上的表进行的更新与对从服务器上的表所进行的更新之间的冲突。
1.1 mysql支持的复制类型
- 基于语句的复制:在主服务器上执行的SQL语句,在从服务器上执行同样的语句。MySQL默认采用基于语句的复制,效率比较高。一旦发现没法精确复制时,会自动选着基于行的复制。
- 基于行的复制:把改变的内容复制过去,而不是把命令在从服务器上执行一遍。从mysql5.0开始支持。
- 混合类型的复制:默认采用基于语句的复制,一旦发现基于语句的无法精确的复制时,就会采用基于行的复制。
1.2 复制的作用
- 备份,确保数据安全;做数据的热备,作为后备数据库,主数据库服务器故障后,可切换到从数据库继续工作,避免数据的丢失。
- 数据分布,提升I/O性能;随着日常生产中业务量越来越大,I/O访问频率越来越高,单机无法满足,此时做多库的存储,有效降低磁盘I/O访问的频率,提高了单个设备的I/O性能。
- 读写分离,使数据库能支持更大的并发;在报表中尤其重要。由于部分报表sql语句非常的慢,导致锁表,影响前台服务。如果前台使用master,报表使用slave,那么报表sql将不会造成前台锁,保证了前台速度。
1.3 复制的原理
整体上来说,复制有3个步骤:
- master将修改(增、删、改)记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events)
- slave将master的binary log events拷贝到它的中继日志(relay log)
- slave执行中继日志中的事件,将修改的数据同步到它自己的数据中
1.4 复制应用的注意点
从库同步主库数据的过程是串行化的,也就是说主库上并行的操作,在从库上会串行执行。在高并发场景下,从库的数据会比主库慢一些,是有延时的。所以经常出现,刚写入主库的数据可能是读不到的,要过几十毫秒,甚至几百毫秒才能读取到。而且这里还有另外一个问题,如果主库宕机,然后数据恰好还没同步到从库,那么没同步的数据可能在从库上是没有的,有些数据可能就丢失了。所以建议mysql主从同步一般在读远远多于写,而且读的时候一般对数据时效性要求没那么高的应用场景。
mysql实际上有两个机制用来解决主从同步数据库丢失和延时的问题。一个是半同步复制,用来解决主库数据丢失问题;一个是并行复制,用来解决主从同步延时问题。
所谓半同步复制,semi-sync复制,指的就是主库写入binlog日志之后,就会强制将此时数据立即同步到从库,从库将日志写入自己本地的relay log之后,接着会返回一个ack给主库,主库接收到至少一个从库的ack之后才会认为写操作完成了。
所谓并行复制,指的是从库开启多个线程,并行读取relay log中不同库的日志,然后并行重放不同库的日志,这是库级别的并行。
二、配置主从
2.1 同步master数据库的数据到slave数据中
2.1.1 在主节点(192.168.0.58)数据库备份数据
mysqldump -uroot -pmysql --all-databases --lock-all-tables > ./master_db.sql
参数说明:
- --all-databases :备份所有数据库
- --lock-all-tables :备份时锁住所有表,防止操作时有数据修改
- >:导出
- ./master_db.sql :备份数据存放的位置

2.1.2 在从节点(192.168.0.68)数据库还原数据
使用 scp 将备份文件发送到 从数据库节点
scp master_db.sql root@192.168.0.68:~


使用命令恢复备份数据
mysql -uroot -p123456 < master_db.sql

2.2 修改master数据库和slave数据库的配置文件
2.2.1 在master数据库配置文件中设置log_bin和server-id,并重启mysql服务

2.2.2 登录master数据库创建用于slave数据库同步数据使用的账号
grant replication slave on *.* to "slave"@"%" identified by "slave";
flush privileges;

2.2.3 获取master数据库的二进制日志信息

File为使用的日志文件名称,Position为使用的文件位置,这两个参数会在配置slave数据库时用到
2.2.4 在slave数据库配置文件中设置server-id,并重启mysql服务

2.2.5 进入slave数据库配置连接master数据库
change master to master_host="192.168.0.58",master_user="slave",master_password="slave",master_log_file="mysql-bin.000004",master_log_pos=154;
flush privileges;
参数说明:
- master_host:master数据库服务器的ip地址
- master_user 和 master_password:master中为slave创建的创建
- master_log_file: 前面查询到的master数据库使用的日志文件名称
- master_log_pos: 前面查询到的master数据库使用的日志文件位置

2.2.6 开启同步状态
start slave;
show slave status \G; -- \G让查询结果便于查看

2.2.7 验证主从复制
在master数据库创建数据库,并在slave数据库中查看


MySQL主从复制作用和配置的更多相关文章
- Mysql主从复制原理及配置
Mysql主从复制原理及配置 1.复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其 ...
- MySQL主从复制原理及配置过程
一.Mysql数据库的主从复制原理过程: (多实例的安装请参考我的另一篇文章:https://www.cnblogs.com/Template/p/9258500.html) Mysql的主从复制是一 ...
- MySQL主从复制原理及配置详细过程以及主从复制集群自动化部署的实现
一.复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重 ...
- MySQL主从复制作用和原理
一.什么是主从复制?主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库:主数据库一般是准实时的业务数据库. 二.主从复制的作用1.做数据的热备,作为后备数据库,主数据库服务器故障后, ...
- MySQL 主从复制(实时热备)原理与配置
MySQL是现在普遍使用的数据库,但是如果宕机了必然会造成数据丢失.为了保证MySQL数据库的可靠性,就要会一些提高可靠性的技术.MySQL主从复制可以做到实时热备数据.本文介绍MySQL主从复制原理 ...
- MySQL主从复制(Master-Slave)实践
MySQL数据库自身提供的主从复制功能可以方便的实现数据的多处自动备份,实现数据库的拓展.多个数据备份不仅可以加强数据的安全性,通过实现读写分离还能进一步提升数据库的负载性能. 下图就描述了一个多个数 ...
- mysql主从复制的一些东西的整理
最近给新上线的项目进行主从结构的搭建,因此整理些有用的东西出来,供作记录: 一.mysql主从复制的一般配置步骤: 1.准备两台数据库环境,或者单台多实例的环境,能够正常的启动和登陆. 2.配置my. ...
- mysql主从复制、redis基础、持久化和主从复制
一.mysql(mariadb)基础 1.基础命令(centos7操作系统下) 1.启动mysql systemctl start mariadb 2.linux客户端连接自己 mysql -uroo ...
- MySQL主从复制与读写分离[修改]
作者:lixiuran 日期:2014年5月2日 备注[本人根据网上资源修改,参考http://www.cnblogs.com/luckcs/articles/2543607.html] 测试环境 ...
随机推荐
- jquery:iframe里面的元素怎样触发父窗口元素的事件?
例如父窗口定义了一个事件. top: $(dom1).bind('topEvent', function(){}); 那么iframe里面的元素怎样触发父窗口dom1的事件呢?这样吗? $(dom1, ...
- springmvc中拦截器的定义和配置
package com.hope.interceptor;import org.springframework.lang.Nullable;import org.springframework.web ...
- 什么是maven(二)
转自博主--一杯凉茶 maven项目构建ssh工程(父工程与子模块的拆分与聚合) 前一节我们明白了maven是个什么玩意,这一节就来讲讲他的一个重要的应用场景,也就是通过maven将一个ssh项目 ...
- 【阿菜做实践】利用go语言写一个简单的Pow样例
本篇博客的主要内容是用go写一个简单的Proof-of-Work共识机制,不涉及到网络通信环节,只是一个本地的简单demo.开发IDE用的是JB Golang. 整个项目的文件结构如下: PoWdem ...
- C#内建接口:IEnumerable
这节讲一下接口IEnumerable. 01 什么是Enumerable 在一些返回集合数据的接口中,我们经常能看到IEnumerable接口的身影.那什么是Enumerable呢?首先它跟C#中的e ...
- 攻击科普:ARP攻击
目录 一.介绍 二.解决办法 一.介绍 ARP攻击的局限性 ARP攻击仅能在以太网(局域网如:机房.内网.公司网络等)进行. 无法对外网(互联网.非本区域内的局域网)进行攻击. ARP攻击就是通过伪造 ...
- shell脚本 用户登录服务器发送钉钉提醒
一.企业微信配置 1.获取AgentId(AppID).Secret .CropID.部门ID 创建一个企业微信应用获取到AgentId(AppID).Secret 2.获取CropID,点击 &qu ...
- Linux Ubuntu18.04 安装配置 clash
我最近一段时间在搭建用于构建 Docker 镜像的开发测试环境,这个环境是一台运行于 Windows 笔记本上的虚拟机,其操作系统为 Ubuntu 18.04 .构建场景中经常要去 Github 获取 ...
- <转>libevent基本使用demo
这篇文章介绍下libevent在socket异步编程中的应用.在一些对性能要求较高的网络应用程序中,为了防止程序阻塞在socket I/O操作上造成程序性能的下降,需要使用异步编程,即程序准备好读写的 ...
- IO多路复用技术总结
来源:微信公众号「编程学习基地」 IO 多路复用概述 I/O 多路复用技术是为了解决进程或线程阻塞到某个 I/O 系统调用而出现的技术,使进程不阻塞于某个特定的 I/O 系统调用. 在IO多路复用技术 ...