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切换故障处理
背景: 以前做的的一个项目中使用了某国产双机热备产品,但是在数据库做双机热备时出现了一些问题,没办法.不得不研究一番了!经过两天的研究终于问题得以解决.将问题处理步骤记录下来以备后用,也希望能帮助到需 ...
随机推荐
- Linux下C++提示bind:address already in use
此地址下的此端口被占用,有可能你已经关闭了程序依然如此,因为TCP的TIME_WAIT(不懂的话可以可以查一查).解决方案:1.设置为SO_REUSEADDR 2.查看进程进程号(ps -ef 或者 ...
- Linux内核之 进程管理
正如上一篇我们提到过,进程是Linux系统中仅次于文件的基本抽象概念.正在运行的进程不仅仅是二进制代码,而是数据.资源.状态和虚拟的计算机组成.我们今天主要介绍进程的概念,组成,运行状态和生命周期等. ...
- IOS 如何持久化自定义对象 2014-08-01 01:38
如果持久话自定义对象 那么这个对象一定要遵循 NSCoding 协议 并实现编解码:然后再将编解码后的数据 NSKeyedArchiver 到NSData中 @interface NSKeyAnd ...
- 【特别篇】不为人知的U盘秘密
U盘是我们代码爱好者的必要东西,方便于我们更好的拷文件,使用一些已经配置好的东西,比如说:小编经常会将linux系统放进去,平时就可以随时用了. But 你的U盘真的正常吗?你了解多少? 关于U盘 ...
- Windows下nacos单机部分发现的坑
一.下载nacos的地址: https://github.com/alibaba/nacos/releases 下载 nacos-server-1.3.2.tar.gz 就好 二.在Window ...
- RPC 框架 Dubbo 从理解到使用(一)
技术架构演变 单一应用架构 通俗地讲,"单体应用(monolith application)"就是将应用程序的所有功能都打包成一个独立的单元.当网站流量很小时,只需一个应用,将所有 ...
- pypcap rpm制作
1.下载地址 https://pypi.org/project/pypcap/#history 2.下载后,解压并制作rpm tar -xvf pypcap-1.2.3.tar.gz python s ...
- 操作系统-I/O(4)I/O控制方式
I/O控制的方式分为: 程序直接控制方式(最简单的I/O方式) • 无条件传送:对简单外设定时(同步)进行数据传送 • ...
- 并发编程(叁):synchronize
synchronize synchronized是Java中的关键字,是一种常用的线程同步锁. 用法 注意:在理解synchronized时,要知道一个核心点,synchronized锁定的不是代码, ...
- 【转】camera tuning
chromatix项目必须包含有效的 ADC image.png filcker: 交流电照明灯发出的光会一定频率的抖动导致sensor图像出现行方向的水波纹,称之为filcker.目前主要的交流电频 ...