Mysql主从分离与双机热备超详细配置
一、概述
本例是在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主从分离与双机热备超详细配置的更多相关文章
- MySQL数据库配置主从服务器实现双机热备
转自:http://www.cnblogs.com/cchun/p/3712637.html 一.安装MySQL 说明:在两台MySQL服务器192.168.21.169和192.168.21.168 ...
- MySQL7.5.15数据库配置主从服务器实现双机热备实例教程
环境说明 程序在:Web服务器192.168.0.57上面 数据库在:MySQL服务器192.168.0.67上面 实现目的:增加一台MySQL备份服务器(192.168.0.68),做为MySQL服 ...
- MySQL5.7.15数据库配置主从服务器实现双机热备实例教程
环境说明 程序在:Web服务器192.168.0.57上面 数据库在:MySQL服务器192.168.0.67上面 实现目的:增加一台MySQL备份服务器(192.168.0.68),做为MySQL服 ...
- MySQL主从复制,以及双机热备
MySQL数据库自身提供的主从复制功能可以方便的实现数据的多处自动备份,实现数据库的拓展.多个数据备份不仅可以加强数据的安全性,通过实现读写分离还能进一步提升数据库的负载性能. 下图就描述了一个多个数 ...
- MySQL架构备份之双机热备
M--S架构:实现双机热备(AB复制) 1.可以降低master读压力 2.可以对数据库做“热备”,热备只能解决硬件master硬件故障,软件故障等重大故障问题,但无法解决人为误操作导致的逻辑故障(列 ...
- Mysql双机热备--预备知识
1.双机热备 对于双机热备这一概念,我搜索了很多资料,最后,还是按照大多数资料所讲分成广义与狭义两种意义来说. 从广义上讲,就是对于重要的服务,使用两台服务器,互相备份,共同执行同一服务.当一台服务器 ...
- Keepalived双机热备
一,Keepalived双机热备的应用场景 1,网站流量不高,压力不大,但是对服务器的可靠性要求极其高,例如实时在线OA系统,政府部门网站系统,医院实时报医系统,公安局在线报案系统,股市后台网站系统等 ...
- ansible自动部署Keepalived实现Nginx服务双机热备
脚本实现通过ansible-playbook自动化安装Keepalived和配置,主要解决问题如下: Keepalived自动化安装: keepalived_vrid配置,自动根据vip获取最后一段作 ...
- (技能篇)双机热备之Oracle切换故障处理
背景: 以前做的的一个项目中使用了某国产双机热备产品,但是在数据库做双机热备时出现了一些问题,没办法.不得不研究一番了!经过两天的研究终于问题得以解决.将问题处理步骤记录下来以备后用,也希望能帮助到需 ...
随机推荐
- LeetCode 763划分字母区间 详解
题目详情 字符串 S 由小写字母组成.我们要把这个字符串划分为尽可能多的片段,同一个字母只会出现在其中的一个片段.返回一个表示每个字符串片段的长度的列表. 示例 1: 输入: S = "ab ...
- Eclipse的Servers中无法添加Tomcat6/7
2017年03月06日 17:14:46 阅读数:1007 Eclipse中在添加tomcat时发现6和7点击后发现ServerName是灰色的不能使用,也点不了NEXT,在各种查百度后发现需要删除w ...
- Java学习之反射篇
Java学习之反射篇 0x00 前言 今天简单来记录一下,反射与注解的一些东西,反射这个机制对于后面的java反序列化漏洞研究和代码审计也是比较重要. 0x01 反射机制概述 Java反射是Java非 ...
- 使用 .NET Core 3.x 构建RESTful Api(第三部分)
关于HTTP HEAD 和 HTTP GET: 从执行性能来说,这两种其实并没有什么区别.最大的不同就是对于HTTP HEAD 来说,Api消费者请求接口数据时,如果是通过HTTP HEAD的方式去请 ...
- PDF的来源——概率密度函数
//首发于简书,详见原文:https://www.jianshu.com/p/6493edd20d61 你不会还真的以为这是一篇讲怎么做pdf文件,怎么编辑.保存.美化的文章吧? 咳咳,很遗憾告诉你不 ...
- python2.7用socks和socket设置代理
接下来是最近遇到的一个代理问题. 背景:一个基于python2.7的自动化测试项目 目的:因调试需求,需要通过代理连接其他公司的前端网站,来检验项目运行所在的问题. 问题:RUN>等了1分钟没有 ...
- JavaScript 空间坐标
基础知识 首先参考画布分为视口(窗口)与文档的含义 网页很多都是多屏,所以文档尺寸一般大于视口尺寸 视口尺寸不包括浏览器工具条.菜单.标签.状态栏等 当打开控制台后,视口尺寸相应变小 文档像posit ...
- JAVA——JVM参数设置规则以及参数含义
JVM参数设置规则: -XX:+<option> 启用option,例如:-XX:+PrintGCDetails启动打印GC信息的选项,其中+号表示true,开启的意思-XX:-<o ...
- Jmeter 常用函数(21)- 详解 __char
如果你想查看更多 Jmeter 常用函数可以在这篇文章找找哦 https://www.cnblogs.com/poloyy/p/13291704.htm 作用 根据给定的字符值转换成 Unicode ...
- JavaScript学习系列博客_12_JavaScript中的break、continue关键字
break关键字 -break关键字可以用来退出switch或循环语句 -不能在if语句中使用break和continue,但不是说if语句里面不能写break关键字,break关键字一定要包含在sw ...