只记录一次在一个设备上实现mysql主从复制的过程,很详细,建议收藏,用到的时候照着步骤做就可以,会记录所有需要注意到的细节和一些容易遇到的坑以及解决办法!

如果需要在同一台电脑(服务器)上实现mysql的主从复制备份,需要一个主数据库和一个从数据库。

本文使用的是mysql-5.6.39-winx64免安装版。安装版的也可以,需要自行找到安装生成的data所在目录以及my.ini文件位置。

因为在这之前我已经安装好了主数据库,本文只记录从数据库的安装过程,(主数据库也是个全新的,会记录所有的配置)。

主数据库端口号 port = 3307。

从数据库端口号 port = 3308 。

安装第二个从mysql:

找到第一个安装的mysql目录,完整的复制到另一个磁盘里(因为我的是免安装的,如果有安装包或者压缩包可以重新安装一个,我懒。)(我这里放到了一起,好操作,实际看情况为了好区分,我在后面加了后缀-copy

编辑copy数据库的my.ini:

basedir = E:\MYSQL\mysql-5.6.39-winx64-copydatadir = E:\MYSQL\mysql-5.6.39-winx64-copy\data
port = 3308

添加环境变量:1、右击我的电脑-2、点击属性-3、点击高级系统设置-4、点击环境变量

在系统变量里添加两个数据库的变量,不添加的话两个mysql容易乱(两个mysql后面分别加了个1、2区分)

然后在系统变量里的PATH里追加变量值:

%MYSQL_HOME1%\bin     %MYSQL_HOME2%\bin

将两个mysql注册成windows服务:

使用管理员命令窗口进入mysql安装目录下的bin目录里:

两个数据库分别操作输入服务安装命令:

(MYSQL2_copy 是服务名字,可以随意自定义)

E:\MYSQL\mysql-5.6.39-winx64-copy\bin\mysqld install MYSQL2_copy --defaults-file="E:\MYSQL\mysql-5.6.39-winx64-copy\my.ini"

(补充:移除服务的命令:mysqld remove MYSQL2_copy)

运行提示下面内容表示服务安装成功:

Service successfully installed.

可以进入服务页面查看(服务页面进入方法:右击我的电脑,点击管理,然后点击服务和应用下的服务即可):

启动mysql服务:

一:命令启动:

net start MYSQL1

二:服务列表启动(右击服务,点击启动)

修改主数据库的my.ini配置:

在[mysqld]标签下添加:

# 服务器id 可自定义
server-id = 3307
# 开启二进制日志
log-bin=mysql-bin
log-bin-index=master-bin.index
relay_log=mysql-relay-bin
# 需要备份的数据库
binlog-do-db=test
# 不需要备份的数据库
binlog-ignore-db=mysql

保存退出,重启主数据库服务

binlog-do-db用于指定需要同步的数据库,binlog-ignore-db指定不需要同步的数据库,如果这两个参数都不设置,则从服务器会复制主服务器的所有数据库

一般同步的话会新建一个专门用在该场景的用户,所以我们需要在主服务器上创建一个新的用户(如user_cp,密码123456)

方法如下:

打开管理员命令窗口,切换至主数据库目录下的bin目录下,用 root 账户连接MySQL主服务器(-u账号 -p密码)

mysql -uroot -proot --protocol=tcp --host=localhost --port=3307

创建新用户(@后面的ip地址为允许连接的客户端的ip地址。):

create user 'user_cp'@'127.0.0.1' identified by '123456';

给新用户配置主从复制的权限(@后面的ip地址为允许连接的客户端的ip地址,如果改为 '%',就表示客户端没有ip地址的限制):

grant replication slave on *.* to 'user_cp'@'127.0.0.1' identified by '123456';

如果主服务器中的数据库“test”中,已经有数据,我们需要先手动把主服务器中的数据复制到从服务器中,为了防止我们复制数据的时候,数据库中的test里的数据发生更新变化,我们可以先锁定数据库。

方法:

使用全局锁

flush tables with read lock;

这个命令是全局读锁定,它会给主服务器中的所有数据库都加上读锁,这里顺便说一下读锁和写锁的区别:
read lock(读锁):也叫共享锁,允许所有的读操作,但阻塞写操作,即所有连接只可以读数据,但不允许写数据。
write lock(写锁):也叫排它锁、独占锁,只允许当前连接的读和写,不允许其他并发的读操作和写操作。
锁定主服务器的数据库后,我们在从服务器中,也创建一个数据库test,并将所有的表(包括表结构和表数据)都导入。
然后,我们执行下面的命令,解锁:

unlock tables;  

查看主服务器的master状态(记住列表中的File 和 Position的值,等会配置从服务器的时候需要用到):

show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000013 | 497 | test | mysql | |
+------------------+----------+--------------+------------------+-------------------+

从服务器配置:

修改从服务器的数据库配置文件E:\MYSQL\mysql-5.6.39-winx64-copy\my.ini:

[mysqld]标签下添加:

# 端口号
port = 3308
# 服务id 可自定义
server_id = 3308
# 开启二进制日志(从服务器不是必须要开启二进制日志)
log-bin=mysql-bin 

保存退出,重启MySQL服务。

使用管理员命令窗口登录:

mysql -uroot -proot --protocol=tcp --host=localhost --port=3308

然后复制以下内容运行(需要修改里面的内容,不要复制直接运行):

change master to master_host='127.0.0.1',master_user='user_cp',master_password='123456',master_port=3307,master_log_file='mysql-bin.000013',master_log_pos=497;

参数详解:

master_host: 主服务器的IP

master_user: 主服务器上新创建的用户名

master_password: 用户的密码

master_port: 主服务器的端口,如果未曾修改,默认即可。

master_log_file: 主服务器二进制日志文件的名称,填写查看主服务器的master状态时显示的File的值

master_log_pos: 日志的位置,填写查看主服务器的master状态时显示的Position的值

启动从服务器的slave复制功能:

start slave;

停止主从复制功能:

stop slave;

查看从服务器的slave状态:

show slave status \G;

mysql> show slave status \G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 127.0.0.1
Master_User: user_cp
Master_Port: 3307
Connect_Retry: 60
Master_Log_File: mysql-bin.000013
Read_Master_Log_Pos: 819
Relay_Log_File: DESKTOP-IDKR9K2-relay-bin.000003
Relay_Log_Pos: 605
Relay_Master_Log_File: mysql-bin.000013
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

如果 Slave_IO_Running 和 Slave_SQL_Running 的值都为 Yes,则说明主从复制的所有配置已成功,即从服务器已经可以自动与主服务器的数据库数据实现同步了。

此后,只要主服务器的数据有更新(比如:在 test数据库中新建了一张表或者表中的数据发生了变化),从服务器都会自动与主服务器保持一致。但如果有人刻意改变了从服务器的数据,主服务器中的数据并不会同步更新,除非我们把这两个MySQL服务器设置为互为主从。

 

MYSQL一个设备上的主从复制实现-windows的更多相关文章

  1. [转]如何:在设备上安装 SQL Server Compact 3.5

    将设备连接到计算机,或者将仿真程序插入底座. 有关更多信息,请参见如何:将设备仿真程序插入底座和移除底座. 说明: 计算机上必须已安装了 Windows Mobile Device Center 或 ...

  2. 网站环境apache + php + mysql 的XAMPP,如何实现一个服务器上配置多个网站?

    xampp 是一个非常方便的本地 apache + php + mysql 的调试环境,在本地安装测试 WordPress 等各种博客.论坛程序非常方便.今天我们来给大家介绍一下,如何使用 XAMPP ...

  3. windows server 2008 安装Microsoft ActiveSync 6.1提示缺少一个Windows Mobile设备中心所须要的Windows组件

    windows server 2008 安装WinCE的同步软件,须要安装Microsoft ActiveSync 6.1版本号的. 而不能安装ActiveSync|Microsoft ActiveS ...

  4. 在Windows笔记本上调试运行在iOS设备上的前端应用

    我在每天工作中需要在不同的移动设备上测试我们开发的前端应用是否正常工作,比如iOS设备和Android设备.我用的工作笔记本电脑又是Lenovo的,安装的是Windows操作系统. 有的时候一个开发好 ...

  5. 解决:Windows 强制升级为8.1之后 Mysql连接不上, VisualSVN Server无服务

    1.mysql 连不上,只要将mysql重新加为windows服务即可.(我的是mysql-5.6.24-winx64 解压版)    方法:mysqld --install mysql --defa ...

  6. 在设备上启用 adb 调试,有一个小秘密

    要在通过 USB 连接的设备上使用 adb,您必须在设备的系统设置中启用 USB 调试(位于开发者选项下). 在搭载 Android 4.2 及更高版本的设备上,“开发者选项”屏幕默认情况下处于隐藏状 ...

  7. mysql之使用centos7实现主从复制(读写分离)的实现过程

    什么是主从复制? 主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库:主数据库一般是准实时的业务数据库. 主从复制的作用(好处)! 1.做数据的热备,作为后备数据库,主数据库服务器故 ...

  8. Linux设备上没有空间之复盘

    某天前端在调接口的时候,发现登录页面得验证码接口居然没有响应数据,显示的是500响应码.于是我一路排查,首先排查验证码接口所属的微服务是否正常,通过lsof -i:服务端口进行排查,发现该微服务进程存 ...

  9. MySQL 系列(四)主从复制、备份恢复方案生产环境实战

    第一篇:MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:MySQL 系列(二) 你不知道的数据库操作 第三篇:MySQL 系列(三)你不知道的 视图.触发器.存储过程.函数 ...

随机推荐

  1. 构造无限级树的框架套路,附上python/golang/php/js实现

    目录 前言 需求 数据 结果 框架 递归框架 迭代框架 递归框架实现 python golang php js 迭代框架实现 python golang php js 前言 框架思维非常重要,和语言无 ...

  2. Fedora 34成哑巴了?

    原由 前几天刚更新了Fedora34,完全沉浸在Gnome40的喜悦中.但是今天用耳机听Apple Music的时候完全傻了,音量控制旋钮调了半天也没有声音,难道声卡坏了?于是,我试探性的用Parro ...

  3. 05:JS(01)

    内容概要 JavaScript编程语言开头 数值类型 字符类型 布尔值 null与undefined 对象 数组 自定义对象 流程控制 函数 内置对象 时间对象 正则对象 JSON对象 BOM操作(j ...

  4. 从 SQL 到 MongoDB,这一篇就够了

    很多开发者首次接触数据库(通常是在高校课堂)的概念,或者说接触第一个数据库,通常是 SQL 数据库,而现在,NoSQL 数据库后来居上,很多原 SQL 数据的使用者难免有转向 NoSQL 的需求.而作 ...

  5. LCD1602液晶显示模块的单片机驱动深入详解之软件篇(AVR)

    LCD1602液晶显示模块的驱动虽然比七段数码管之类的显示要复杂一些,但实际上也并不是很难,最主要的还是初始化,为什么这么说呢?我们在调试一块新液晶屏的时候,都会先初始化看看有没有光标在闪,没有光标前 ...

  6. CosId 通用、灵活、高性能的分布式 ID 生成器

    CosId 通用.灵活.高性能的分布式 ID 生成器 介绍 CosId 旨在提供通用.灵活.高性能的分布式系统 ID 生成器. 目前提供了俩大类 ID 生成器:SnowflakeId (单机 TPS ...

  7. 乘风破浪,遇见下一代操作系统Windows 11,迄今为止最美版本,原生支持安卓应用

    遇见下一代操作系统Windows 11 全新Windows体验,让您与热爱的人和事物离得更近. Windows一直是世界创新的舞台.它是全球企业的基石,助力众多蓬勃发展的初创公司变得家喻户晓.网络在W ...

  8. Docker入门与进阶(上)

    Docker入门与进阶(上) 作者 刘畅 时间 2020-10-17 目录 1 Docker核心概述与安装 1 1.1 为什么要用容器 1 1.2 docker是什么 1 1.3 docker设计目标 ...

  9. Spring Boot配置Filter

    此博客是学习Spring Boot过程中记录的,一来为了加深自己的理解,二来也希望这篇博客能帮到有需要的朋友.同时如果有错误,希望各位不吝指教 一.通过注入Bean的方式配置Filter: 注意:此方 ...

  10. 使用CI/CD工具Github Action发布jar到Maven中央仓库

    之前发布开源项目Payment Spring Boot到Maven中央仓库我都是手动执行mvn deploy,在CI/CD大行其道的今天使用这种方式有点"原始".于是我一直在寻求一 ...