mysql主从配置 热备_Mysql主从分离与双机热备超详细配置

一、概述

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

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

二、过程

1、安装第二台数据库

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

3cea28c39a71064f9499078684f5adb9.pngwAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

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

a2e7bcae790326034ed03a68d0ca401c.pngwAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

client>port 改成3307。

6660012e0f2473a9b5cfb29b637a0b80.pngwAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

mysqld>port  改成3307。

f79938767a00dfd97b7bd726fc69d118.pngwAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

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

347257a8ecc8de2ad2bcccac8034c9f1.pngwAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

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

b1917004d498f2aafc71835bd5c43676.pngwAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

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

mysqld -initialize -insecure -user=mysql

2efbaf230ddca316050ec052fd4bb711.pngwAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

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

d7e7249bba6bab55565710fb48787ed5.pngwAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

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

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

0ca5f9e36eb44f39cfb64902e30c9856.pngwAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

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

mysqld --install MySQL57_3307

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

4574e3e449f2fc0e748b71a5a8c213ae.pngwAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

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

92524354ab4b1a5aed7c2efcd80f6bad.pngwAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

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

d28b96aa59bc1aab30cfed749b9ce3db.pngwAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

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

7f09d53956057afb5290caffd926caed.pngwAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

找到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

刷新服务并启动。

671169c930e83351f87742ab0a5c462e.pngwAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

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

a11e93a257e708abb88366629f18fb82.pngwAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

连接成功:

de466424d22199973e0abd4bacfc9353.pngwAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

表文件成功复制:

1ae680e40f42c08986c5449e3a10bd3f.pngwAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

2、配置主从

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

主库配置:

# Server Id.

server-id=1# 设置同步数据库名

binlog-do-db=api

# 不记录日志的库,即不需要同步的库

binlog-ignore-db=mysql

# Logforsync

log-bin=mysql-bin

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

从库配置:

# Server Id.

server-id=2# 从服务器同步数据库名

replicate-do-db=api

# 不从服务器同步数据库名

replicate-ignore-db =mysql,information_schema,performance_schema

# Logforsync

log-bin=mysql-bin

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

SHOW MASTER STATUS;

d2a8725211999efdfabdf028a08ad719.pngwAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

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

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

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

在从库执行开始同步:

START SLAVE;

执行查看从库状态:

SHOW SLAVE STATUS;

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

467662cbb553445c0866be567fc62fb6.pngwAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

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

主库执行:

a2faf1fff598446764c7b0df2acecc2f.pngwAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

主库数据:

3b31778d1d4a0afb4044268721ee658d.pngwAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

查看从库数据:

eed52e5fb0d3f08cb691b58a65cc944d.pngwAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

数据同步成功。

3、配置双机热备

3306库配置:

# Server Id.

server-id=1# 设置同步数据库名

binlog-do-db=api

# 不记录日志的库,即不需要同步的库

binlog-ignore-db=mysql

# 从服务器同步数据库名

replicate-do-db=api

# 不从服务器同步数据库名

replicate-ignore-db =mysql,information_schema,performance_schema

# Logforsync

log-bin=mysql-bin

3307库配置:

# Server Id.

server-id=2# 从服务器同步数据库名

replicate-do-db=api

# 不从服务器同步数据库名

replicate-ignore-db =mysql,information_schema,performance_schema

# 设置同步数据库名

binlog-do-db=api

# 不记录日志的库,即不需要同步的库

binlog-ignore-db=mysql

# Logforsync

log-bin=mysql-bin

查询3306库MASTER信息:

SHOW MASTER STATUS;

06ed6830d5a990c69590809545c50f34.pngwAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

在3307库设置SLAVE信息:

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

查询3307库MASTER信息:

SHOW MASTER STATUS;

06ed6830d5a990c69590809545c50f34.pngwAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

在3306库设置SLAVE信息:

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

测试1:在3306库插入数据

3306:

199a6ab48052eff7b73a7a082dadd5e6.pngwAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

3307:

df1c8eec1eaaf2188bf37e75174e2ecd.pngwAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

结果一致,正确。

测试2:在3307插入数据

3307:

efd8298c96bd60dbf5d56153e71fde22.pngwAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

3306:

2496d932f08240df4ab5a08d1c465cc7.pngwAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

结果一致,正确。

三、问题

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

cd88886c86aae9b1a8a01add0c141708.pngwAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

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

STOP SLAVE;

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

RESET SLAVE;

RESET MASTER;

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值