只记录一次在一个设备上实现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. 浪潮 ClusterEngineV4.0 任意命令执行

    1.浪潮ClusterEngineV4.0 任意命令执行 影响版本 ClusterEngineV4.0 2.漏洞影响 远程代码执行 3.复现 fofa语句 title='TSCEV4.0' 抓包构造e ...

  2. Maven execution terminated abnormally (exit code 1) 完美解决

    https://www.pianshen.com/article/1477185745/ 找到本地仓库这个包中, 删掉,重新导入,,完美解决

  3. 再看 Java 中的单例

    此前面试遇到了单例问题,本以为已经背的滚瓜烂熟,没想到被问单例如何避免被反射和序列化破坏,虽然后来还是等到了通知,但还是复习一下单例的实现方式,并学习防止反射和序列化破坏的手段. 基本实现方式 其他相 ...

  4. 「模拟8.13」任(liu_runda的神题,性质分析)

    考场时没有发现性质,用了个前缀和优化暴力,结果写WA了 我们发现其实联通块的个数就是点的个数-边的个数 然后我们需要维护横向上和纵向上的边的前缀和 前缀和的查询形式稍改一下 暴力 1 #include ...

  5. NOIP模拟测试25「字符串·乌鸦喝水·所陀门王的宝藏(陀螺王)」

    字符串 题解 没看出catalan怎么办 dp打表啊! 考虑大力dp拿到30分好成绩!顺便收获一张表 打表发现$C_{n+m}^{m}-C_{n+m}^{m-1}$ 仔细观察然后发现其实就是之前的网格 ...

  6. 台达PLC开发笔记(一):台达PLC连接介绍,分别使用485、网口与台达PLC建立连接

    前言   台达AS系列,型号为AS322P.     物理设备连接            使用WPL Editor连接PLC 使用RS485口当作RS232口连接PLC             注意: ...

  7. CMD批处理(2)——批处理常用符号总结

    @ 一般在它之后紧跟一条语句,则命令或语句本身在执行的时候不会显示在屏幕上. 例.创建一个test1.bat脚本文件,输入以下内容 echo apause@echo b@pause 双击test1.b ...

  8. Golang学习(用代码来学习) - 第三篇

    type Books struct { title string author string subject string id int } /** 结构体的学习 */ func struct_tes ...

  9. Android开发回收bitmap引发Canvas: trying to use a recycled bitmap错误处理

    当你的应用由于加载大量图片出现OOM异常时,肯定会上网搜索关于OOM的文章,并导求相应的解决方案,比如压缩图片大小,或手动回收资源什么的.在这里我们不讨论图片压缩或缓冲这些方法,而是讨论一下手动回收B ...

  10. kube-controller-manager源码分析-PV controller分析

    kubernetes ceph-csi分析目录导航 概述 kube-controller-manager组件中,有两个controller与存储相关,分别是PV controller与AD contr ...