189 8069 5689

MySQL两主四从怎么做 mysql双主和主从区别

mysql keepalive+ 双主多从是怎么做的

我们通常说的双机热备是指两台机器都在运行,但并不是两台机器都同时在提供服务。当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,而且切换的时间非常短。MySQL双主复制,即互为Master-Slave(只有一个Master提供写操作),可以实现数据库服务器的热备,但是一个Master宕机后不能实现动态切换。使用Keepalived,可以通过虚拟IP,实现双主对外的统一接口以及自动检查、失败切换机制,从而实现MySQL数据库的高可用方案。之前梳理了Mysql主从/主主同步,下面说下Mysql+keeoalived双主热备高可用方案的实施。

成都创新互联专注于金平企业网站建设,成都响应式网站建设,购物商城网站建设。金平网站建设公司,为金平等地区提供建站服务。全流程定制网站建设,专业设计,全程项目跟踪,成都创新互联专业和态度为您提供的服务

Keepalived看名字就知道,保持存活,在网络里面就是保持在线了,也就是所谓的高可用或热备,用来防止单点故障(单点故障是指一旦某一点出现故障就会导

整个系统架构的不可用)的发生,那说到keepalived不得不说的一个协议不是VRRP协议,可以说这个协议就是keepalived实现的基础。

1)Keepalived的工作原理是VRRP(Virtual Router Redundancy Protocol)虚拟路由冗余协议。在VRRP中有两组重要的概念:VRRP路由器和虚拟路由器,主控路由器和备份路由器。

2)VRRP路由器是指运行VRRP的路由器,是物理实体,虚拟路由器是指VRRP协议创建的,是逻辑概念。一组VRRP路由器协同工作,共同构成一台虚拟路由器。

Vrrp中存在着一种选举机制,用以选出提供服务的路由即主控路由,其他的则成了备份路由。当主控路由失效后,备份路由中会重新选举出一个主控路由,来继

续工作,来保障不间断服务。

如何使用mysql 主从服务器

一. 准备服务器

准备两台主机,分别安装好Mysql (要相同版本),确定版本无误,确保mysql服务正常启动,确保两台主机处于同一个局域网中,确定好哪台做为主、备机器,假设A为主机,B为备机,假设:

A主机IP地址为:172.16.16.90 端口3306

B主机IP地址为: 172.16.99.98 端口3306

二. Mysql建立主-从服务器热备配置步骤

1. 创建同步用户

进入MySql操作界面,在主服务器上为从服务器建立一个连接帐户,该帐户必须授予REPLICATION SLAVE权限。

操作指令如下:

1) grant select,replication slave on *.* to 'replicate'@'172.16.99.98' identified by '1234567';

2) flush privileges;

2. 修改Mysql配置

如果上面的准备工作做好,就可以进行对Mysql配置文件进行修改了,首先找到主服务器Mysql安装文件所有在目录,找到my.ini文件用记事本打开。在[mysqld]下增加如下内容:

server-id = 1

log-bin=mysql-bin

binlog-do-db =test   #需要备份的数据库,多个写多行

binlog-ignore-db = mysql      #不需要备份的数据库,多个写多行

3. 重启mysql服务

修改完配置文件保存后,重启一下mysql服务。

4. 查看主服务器状态

进入A服务器Mysql 客户端输入命令

1)Show master STATUS;

2)返回结果如下:

注意看里面的参数,特别前面两个File和Position,在从服务器(Slave)配置主从关系会有用到的。

5. 从服务器Slave配置修改配置文件

因为这里面是以主-从方式实现mysql双机热备的,所以在从服务器就不用在建立同步帐户了,直接打开配置文件my.ini进行修改即可,道理还是同修改主服务器上的一样,只不过需要修改的参数不一样。

如下:

[mysqld]

server-id = 2

log-bin=mysql-bin

replicate-do-db = test

replicate-ignore-db =mysql

6. 重启mysql服务

修改完配置文件保存后,重启一下mysql服务。

7. 配置从服务器

先停止slave服务线程,这个是很重要的,如果不这样做会造成下面操作不成功,再用change mster 语句指定同步位置,操作如下:

1) stop slave;

2) change master to master_host='172.16.16.90',

master_user='replicate',master_password='1234567',master_port=3306,

master_log_file='mysql-bin.000001',master_log_pos=98;

3) start slave

4) show slave status

查看下面两项值均为Yes,即表示设置从服务器成功。

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

MySQL 主从,5 分钟带你掌握

MySQL 主从一直是面试常客,里面的知识点虽然基础,但是能回答全的同学不多。

比如楼哥之前面试小米,就被问到过主从复制的原理,以及主从延迟的解决方案,因为回答的非常不错,给面试官留下非常好的印象。你之前面试,有遇到过哪些 MySQL 主从的问题呢?

所谓 MySQL 主从,就是建立两个完全一样的数据库,一个是主库,一个是从库, 主库对外提供读写的操作,从库对外提供读的操作 ,下面是一主一从模式:

对于数据库单机部署,在 4 核 8G 的机器上运行 MySQL 5.7 时,大概可以支撑 500 的 TPS 和 10000 的 QPS, 当遇到一些活动时,查询流量骤然,就需要进行主从分离。

大部分系统的访问模型是读多写少,读写请求量的差距可能达到几个数量级,所以我们可以通过一主多从的方式, 主库只负责写入和部分核心逻辑的查询,多个从库只负责查询,提升查询性能,降低主库压力。

MySQL 主从还能做到服务高可用,当主库宕机时,从库可以切成主库,保证服务的高可用,然后主库也可以做数据的容灾备份。

整体场景总结如下:

MySQL 的主从复制是依赖于 binlog 的,也就是记录 MySQL 上的所有变化并以二进制形式保存在磁盘上二进制日志文件。

主从复制就是将 binlog 中的数据从主库传输到从库上,一般这个过程是异步的,即主库上的操作不会等待 binlog 同步的完成。

详细流程如下:

当主库和从库数据同步时,突然中断怎么办?因为主库与从库之间维持了一个长链接,主库内部有一个线程,专门服务于从库的这个长链接的。

对于下面的情况,假如主库执行如下 SQL,其中 a 和 create_time 都是索引:

我们知道,数据选择了 a 索引和选择 create_time 索引,最后 limit 1 出来的数据一般是不一样的。

所以就会存在这种情况:在 binlog = statement 格式时,主库在执行这条 SQL 时,使用的是索引 a,而从库在执行这条 SQL 时,使用了索引 create_time,最后主从数据不一致了。

那么我们改如何解决呢?

可以把 binlog 格式修改为 row,row 格式的 binlog 日志记录的不是 SQL 原文,而是两个 event:Table_map 和 Delete_rows。

Table_map event 说明要操作的表,Delete_rows event用于定义要删除的行为,记录删除的具体行数。 row 格式的 binlog 记录的就是要删除的主键 ID 信息,因此不会出现主从不一致的问题。

但是如果 SQL 删除 10 万行数据,使用 row 格式就会很占空间的,10 万条数据都在 binlog 里面,写 binlog 的时候也很耗 IO。但是 statement 格式的 binlog 可能会导致数据不一致。

设计 MySQL 的大叔想了一个折中的方案,mixed 格式的 binlog,其实就是 row 和 statement 格式混合使用, 当 MySQL 判断可能数据不一致时,就用 row 格式,否则使用就用 statement 格式。

有时候我们遇到从数据库中获取不到信息的诡异问题时,会纠结于代码中是否有一些逻辑会把之前写入的内容删除,但是你又会发现,过了一段时间再去查询时又可以读到数据了,这基本上就是主从延迟在作怪。

主从延迟,其实就是“从库回放” 完成的时间,与 “主库写 binlog” 完成时间的差值, 会导致从库查询的数据,和主库的不一致 。

谈到 MySQL 数据库主从同步延迟原理,得从 MySQL 的主从复制原理说起:

总结一下主从延迟的主要原因 :主从延迟主要是出现在 “relay log 回放” 这一步,当主库的 TPS 并发较高,产生的 DDL 数量超过从库一个 SQL 线程所能承受的范围,那么延时就产生了,当然还有就是可能与从库的大型 query 语句产生了锁等待。

我们一般会把从库落后的时间作为一个重点的数据库指标做监控和报警,正常的时间是在毫秒级别,一旦落后的时间达到了秒级别就需要告警了。

解决该问题的方法,除了缩短主从延迟的时间,还有一些其它的方法,基本原理都是尽量不查询从库。

具体解决方案如下:

在实际应用场景中,对于一些非常核心的场景,比如库存,支付订单等,需要直接查询从库,其它非核心场景,就不要去查主库了。

两台机器 A 和 B,A 为主库,负责读写,B 为从库,负责读数据。

如果 A 库发生故障,B 库成为主库负责读写,修复故障后,A 成为从库,主库 B 同步数据到从库 A。

一台主库多台从库,A 为主库,负责读写,B、C、D为从库,负责读数据。

如果 A 库发生故障,B 库成为主库负责读写,C、D负责读,修复故障后,A 也成为从库,主库 B 同步数据到从库 A。

如何设计mysql 的主从关系

MySQL主从关系设置

一,概要

1.这个文档主要实现的是MYSQL主从备份(主机数据库任何修改,备份机器都会有实现)

2.但是有个问题,就是如果对备份机器数据库进行操作,可能会导致连接失败。

二,准备工作

1.可以是多台主机和从机,在这里我只用一台主机和从机为例讲解主从关系配置。2.主机IP:192.168.0.100(例子)从机IP:192.168.0.101(例子)3.主机和从机的IP地址必须是一个网段的。

4.MySQL版本:mysql-5.5.15-win32.msi安装路径:D:\MySQL\(例子)5.其他相关软件:

①.MySQL管理客户端:Navicat8forMySQL(Windows)。

②.编辑工具:Notepad++(建议用此编辑工具修改MySQL配置文件,点击此链接进入下载

页面)

三,配置主机【master】(IP:192.168.0.100)

1.在命令行窗口中执行:netstopmysql关闭mysql服务。

2.在mysql安装路径下找到配置文件my.ini文件(Linux下是文件my.cnf),一般都在MySQL安装目录下,本实验中在D:\MySQL\下。记得先备份以下原来的配置文件。并用Notepad++打开。然后在文件末尾加入下面的代码:

server-id=1#配一个唯一的ID编号

log-bin=NEW_NAME#指定日志类型

binlog-do-db=bojinv2#设置要进行主从复制的数据库名,同时也要在从机

【Slave】上设定(同步多个另起一行输入这行代码)

Binlog-ignore-db=mysql#设置不要进行主从复制的数据库名,同时也要在

【Slave】上设定(不同步多个另起一行输入这行代码

即可。)

3.在系统管理命令窗口输入:netstartmysql按回车启动mysql服务

4.在MySQL5.5CommandLineClient命令窗口(路径:开始菜单》程序》MySQL下),

输入数据库密码:******回车,如下图所示:

然后输入:grantreplicationslaveon*.*toslaveuser@从机IP(例:192.168.1.101)identifiedby'从机数据库密码(例:123456)'回车后如下图所示:

var cpro_psid ="u2572954"; var cpro_pswidth =966; var cpro_psheight =120;

出现这样的提示后,继续输入:flushprivileges;按回车,如下图所示:

出现这样的提示后,继续输入:showmasterstatus;按回车,如下图所示:

记住出现的表格中的File列和Position的值。

5.在系统管理命令窗口输入:netstopmysql按回车关闭mysql服务

6.进入MySQL管理客户端:Navicat8forMySQL(Windows)。点击菜单栏用户,右侧显示你

刚才创建slaveuser@192.168.1.101的用户,选中该用户。点击编辑用户链接。弹出窗口,再

选择权限,将所有权限都选上保存,这样主机就配置好了。重启一下MySQL服务。

四,配置从机【slave】(Ip:192.168.1.101)

1.在命令行窗口中执行:netstopmysql关闭mysql服务。

2.在mysql安装路径下找到配置文件my.ini文件(Linux下是文件my.cnf),一般都

在MySQL安装目录下,本实验中在D:\MySQL\下。记得先备份以下

原来的配置文件。并用Notepad++打开。然后在文件末尾加入下面的代

码:

server-id=2#配一个唯一的ID编号,不能与主机和其他的从机相同

replicate-do-db=bojinv2#设置要进行主从复制的数据库名,数据库名与主机

相同

replicate-ignore-db=mysql#设置不要进行主从复制的数据库名,数据库名与

主机相同

别忘了保存修改后的文件。

3.在系统管理命令窗口输入:netstartmysql按回车启动mysql服务

4.在MySQL5.5CommandLineClient命令窗口(路径:开始菜单》程序》MySQL下),

输入数据库密码,按回车成功登录数据库。5.登录成功后,在该命令窗口输入:

Changemastertomaster_host='主机IP(192.168.1.100)',master_user='


文章标题:MySQL两主四从怎么做 mysql双主和主从区别
文章网址:http://cdxtjz.com/article/hjhiip.html

其他资讯