一、概述

本例是在Windows环境,基于一台已经安装好的Mysql57,在本机安装第二台Mysql57服务。

读完本篇内容,你可以了解到Mysql的主从分离与双机热备的知识,以及配置期间问题的解决方案。

二、过程

1、安装第二台数据库

复制一份mysql的安装目录,取名MySQL Server 5.7_3307(从数据库)。

清空Data文件夹,并修改my.ini

client>port 改成3307。

mysqld>port  改成3307。

mysqld>datadir 改为从数据库的Data文件路径。

在C:/ProgramData/MySQL/MySQL Server 5.7_3307建一个Uploads文件夹,没有的文件需要补齐。或者自己选择文件路径。

在从数据库的bin文件夹下打开命令行,执行mysql安装初始化命令

mysqld -initialize -insecure -user=mysql

此时从数据库的Data目录会增加文件。

将主数据库的数据库文件夹复制过来(主库Data目录下,文件夹名称就是数据库名称),如果是InnoDB引擎,需要将Data下的ibdata1文件复制过来,否则不能显示表。

此处将之前数据库的api数据库(看你需要复制哪些数据库,不复制也没问题,Mysql自身表需要复制)复制到从数据库。

在从库bin目录下打开命令行并执行

mysqld --install MySQL57_3307

MySQL57_3307为服务名称,出现Service successfully installed.即为注册成功。

使用win+r,弹出命令输入框,输入services.msc,出现服务窗口。

注册成功。但是选中MySQL57_3307,右键属性。发现未指定mysql启动文件。

win+r,输入regedit打开注册表。按照以下路径打开:

找到MySQL57_3307,将ImagePath修改成:

"D:\MySQL\MySQL Server 5.7_3307\bin\mysqld.exe" --defaults-file="D:\MySQL\MySQL Server 5.7_3307\my.ini" MySQL57

刷新服务并启动。

用HeidiSQL(与Navicat同为Mysql客户端)连接,由于复制了主库的mysql库,所以用户名和密码与主库一致,端口为从库的3307。

连接成功:

表文件成功复制:

2、配置主从

在my.ini里的mysqld后进行配置

主库配置:

# Server Id.
server-id= # 设置同步数据库名
binlog-do-db=api # 不记录日志的库,即不需要同步的库
binlog-ignore-db=mysql # Log for sync
log-bin=mysql-bin

从库配置:

# Server Id.
server-id= # 从服务器同步数据库名
replicate-do-db=api # 不从服务器同步数据库名
replicate-ignore-db = mysql,information_schema,performance_schema # Log for sync
log-bin=mysql-bin

需要重启主库与从库服务,后在主库执行查询,查看主库状态:

SHOW MASTER STATUS;

在从库执行语句,同步数据:

CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=, MASTER_USER='root', MASTER_PASSWORD='root', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=;

在从库执行开始同步:

START SLAVE;

执行查看从库状态:

SHOW SLAVE STATUS;

结果为yes,表示执行成功。

在主库插入数据,验证从库是否同步。

主库执行:

主库数据:

查看从库数据:

数据同步成功。

3、配置双机热备

3306库配置:

# Server Id.
server-id= # 设置同步数据库名
binlog-do-db=api # 不记录日志的库,即不需要同步的库
binlog-ignore-db=mysql # 从服务器同步数据库名
replicate-do-db=api # 不从服务器同步数据库名
replicate-ignore-db = mysql,information_schema,performance_schema # Log for sync
log-bin=mysql-bin

3307库配置:

# Server Id.
server-id= # 从服务器同步数据库名
replicate-do-db=api # 不从服务器同步数据库名
replicate-ignore-db = mysql,information_schema,performance_schema # 设置同步数据库名
binlog-do-db=api # 不记录日志的库,即不需要同步的库
binlog-ignore-db=mysql # Log for sync
log-bin=mysql-bin

查询3306库MASTER信息:

SHOW MASTER STATUS; 

在3307库设置SLAVE信息:

CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=, MASTER_USER='root', MASTER_PASSWORD='root', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=;

查询3307库MASTER信息:

SHOW MASTER STATUS; 

在3306库设置SLAVE信息:

CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=, MASTER_USER='root', MASTER_PASSWORD='root', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=;

测试1:在3306库插入数据

3306:

3307:

结果一致,正确。

测试2:在3307插入数据

3307:

3306:

结果一致,正确。

三、问题

在配置主从或双机热备失败,导致数据不一致时,不要手动删除mysql-bin文件,

可以先在数据库中停止从关系

STOP SLAVE;

然后重置主从关系,效果是文件夹中恢复为只有mysql-bin.000001,SHOW MASTER STATUS也是mysql-bin.000001。

RESET SLAVE;
RESET MASTER;

如果是双机热备,两个数据库都应执行此操作。

Mysql主从分离与双机热备超详细配置的更多相关文章

  1. MySQL数据库配置主从服务器实现双机热备

    转自:http://www.cnblogs.com/cchun/p/3712637.html 一.安装MySQL 说明:在两台MySQL服务器192.168.21.169和192.168.21.168 ...

  2. MySQL7.5.15数据库配置主从服务器实现双机热备实例教程

    环境说明 程序在:Web服务器192.168.0.57上面 数据库在:MySQL服务器192.168.0.67上面 实现目的:增加一台MySQL备份服务器(192.168.0.68),做为MySQL服 ...

  3. MySQL5.7.15数据库配置主从服务器实现双机热备实例教程

    环境说明 程序在:Web服务器192.168.0.57上面 数据库在:MySQL服务器192.168.0.67上面 实现目的:增加一台MySQL备份服务器(192.168.0.68),做为MySQL服 ...

  4. MySQL主从复制,以及双机热备

    MySQL数据库自身提供的主从复制功能可以方便的实现数据的多处自动备份,实现数据库的拓展.多个数据备份不仅可以加强数据的安全性,通过实现读写分离还能进一步提升数据库的负载性能. 下图就描述了一个多个数 ...

  5. MySQL架构备份之双机热备

    M--S架构:实现双机热备(AB复制) 1.可以降低master读压力 2.可以对数据库做“热备”,热备只能解决硬件master硬件故障,软件故障等重大故障问题,但无法解决人为误操作导致的逻辑故障(列 ...

  6. Mysql双机热备--预备知识

    1.双机热备 对于双机热备这一概念,我搜索了很多资料,最后,还是按照大多数资料所讲分成广义与狭义两种意义来说. 从广义上讲,就是对于重要的服务,使用两台服务器,互相备份,共同执行同一服务.当一台服务器 ...

  7. Keepalived双机热备

    一,Keepalived双机热备的应用场景 1,网站流量不高,压力不大,但是对服务器的可靠性要求极其高,例如实时在线OA系统,政府部门网站系统,医院实时报医系统,公安局在线报案系统,股市后台网站系统等 ...

  8. ansible自动部署Keepalived实现Nginx服务双机热备

    脚本实现通过ansible-playbook自动化安装Keepalived和配置,主要解决问题如下: Keepalived自动化安装: keepalived_vrid配置,自动根据vip获取最后一段作 ...

  9. (技能篇)双机热备之Oracle切换故障处理

    背景: 以前做的的一个项目中使用了某国产双机热备产品,但是在数据库做双机热备时出现了一些问题,没办法.不得不研究一番了!经过两天的研究终于问题得以解决.将问题处理步骤记录下来以备后用,也希望能帮助到需 ...

随机推荐

  1. C#开发笔记之02-什么时候使用OnXXX方法,这种命名是什么意思?

    C#开发笔记概述 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/958 访问. 你也许经常会看到别人写的代码里有OnXX ...

  2. C#算法设计查找篇之01-顺序查找

    顺序查找(Sequential Search) 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/697 访问. 顺序查找也 ...

  3. 02 Arduino-基于串口的学习

    1串口通讯的基本理论知识,想必大家都熟悉,这里就不过多的介绍,这里主要花时间来介绍串口的应用 2参考内容如下所示: 3串口通讯所涉及到的函数分析 A  if (Serial)   如果串口已经准备好了 ...

  4. Mybatis-02-CRUD及配置解析

    CRUD 1.namespace namespace中的包名要和Dao/Mapper接口的包名一致! 2.select 选择,查询语句; id:对应的namespace中的方法名 resultType ...

  5. WKWebView 网络请求Header 丢失

    WKWebView 是苹果手机上主要的H5加载控件,它相比UIWebView 有诸多优势.在次不做比较,但是它的坑缺比较多.网上也有很多的例子但是做的比较好的真不多,我在这里推荐俩博客供大家参考.ht ...

  6. 一个简单的例子让你很轻松地明白JavaScript中apply、call、bind三者的用法及区别

    JavaScript中apply.call.bind三者的用法及区别 引言 正文 一.apply.call.bind的共同用法 二. apply 三. call 四. bind 五.其他应用场景 六. ...

  7. VUE 中引入百度地图(vue-Baidu-Map)

    1.安装 $ npm install vue-baidu-map --save 2.全局注册,在main.js中引入以下代码 import BaiduMap from 'vue-baidu-map' ...

  8. MySQL · 性能优化 · MySQL常见SQL错误用法(转自-阿里云云栖社区)

    作者:阿里云云栖社区链接:https://zhuanlan.zhihu.com/p/26043916来源:知乎著作权归作者所有,转载请联系作者获得授权. 前言 MySQL在2016年仍然保持强劲的数据 ...

  9. Java 中几种常用设计模式

    Java 中一般认为有23种设计模式,当然暂时不需要所有的都会,但是其中常见的几种设计模式应该去掌握. 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模 ...

  10. 为什么我们需要Logstash,Fluentd等日志摄取器?

    前文传送门:Logging with ElasticSearch, Kibana, ASP.NET Core and Docker 疑问:既然应用能直接向ElasticSearch写日志,为什么我们还 ...