MYSQL一个设备上的主从复制实现-windows
只记录一次在一个设备上实现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的更多相关文章
- [转]如何:在设备上安装 SQL Server Compact 3.5
将设备连接到计算机,或者将仿真程序插入底座. 有关更多信息,请参见如何:将设备仿真程序插入底座和移除底座. 说明: 计算机上必须已安装了 Windows Mobile Device Center 或 ...
- 网站环境apache + php + mysql 的XAMPP,如何实现一个服务器上配置多个网站?
xampp 是一个非常方便的本地 apache + php + mysql 的调试环境,在本地安装测试 WordPress 等各种博客.论坛程序非常方便.今天我们来给大家介绍一下,如何使用 XAMPP ...
- windows server 2008 安装Microsoft ActiveSync 6.1提示缺少一个Windows Mobile设备中心所须要的Windows组件
windows server 2008 安装WinCE的同步软件,须要安装Microsoft ActiveSync 6.1版本号的. 而不能安装ActiveSync|Microsoft ActiveS ...
- 在Windows笔记本上调试运行在iOS设备上的前端应用
我在每天工作中需要在不同的移动设备上测试我们开发的前端应用是否正常工作,比如iOS设备和Android设备.我用的工作笔记本电脑又是Lenovo的,安装的是Windows操作系统. 有的时候一个开发好 ...
- 解决:Windows 强制升级为8.1之后 Mysql连接不上, VisualSVN Server无服务
1.mysql 连不上,只要将mysql重新加为windows服务即可.(我的是mysql-5.6.24-winx64 解压版) 方法:mysqld --install mysql --defa ...
- 在设备上启用 adb 调试,有一个小秘密
要在通过 USB 连接的设备上使用 adb,您必须在设备的系统设置中启用 USB 调试(位于开发者选项下). 在搭载 Android 4.2 及更高版本的设备上,“开发者选项”屏幕默认情况下处于隐藏状 ...
- mysql之使用centos7实现主从复制(读写分离)的实现过程
什么是主从复制? 主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库:主数据库一般是准实时的业务数据库. 主从复制的作用(好处)! 1.做数据的热备,作为后备数据库,主数据库服务器故 ...
- Linux设备上没有空间之复盘
某天前端在调接口的时候,发现登录页面得验证码接口居然没有响应数据,显示的是500响应码.于是我一路排查,首先排查验证码接口所属的微服务是否正常,通过lsof -i:服务端口进行排查,发现该微服务进程存 ...
- MySQL 系列(四)主从复制、备份恢复方案生产环境实战
第一篇:MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:MySQL 系列(二) 你不知道的数据库操作 第三篇:MySQL 系列(三)你不知道的 视图.触发器.存储过程.函数 ...
随机推荐
- 「题解」黑暗塔 wizard
本文将同步发布于: 洛谷博客: csdn: 博客园: 简书. 题目 题意简述 给定 \(y\),求 \(\varphi(x)=y\) 中 \(x\) 的个数和最大值. \(1\leq y\leq 10 ...
- Netty 面试题 (史上最全、持续更新)
文章很长,建议收藏起来,慢慢读! 疯狂创客圈为小伙伴奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : <Netty Zookeeper Redis 高并发实战> 面试必备 + 大厂必备 ...
- csp-s模拟测试42「世界线·时间机器·密码」
$t3$不会 世界线 题解 题目让求的就是每个点能到点的数量$-$出度 设每个点能到的点为$f[x]$ 则$f[x]=x \sum\limits_{y}^{y\in son[x]} U f[y]$ 用 ...
- Linux添加永久静态路由
1.首先查看一下本机的路由 route -n 2.比如我们添加两条静态路由,访问192.168.142.100时通过192.168.142.10:访问192.168.142.200时通过192.168 ...
- typescript 中的 infer 关键字的理解
infer 这个关键字,整理记录一下,避免后面忘记了.有点难以理解呢. infer infer 是在 typescript 2.8中新增的关键字. infer 可以在 extends 条件类型的字句中 ...
- Redis之Sentinel
Redis的主从复制模式下,一旦主节点由于故障不能提供服务,需要人工将从节点晋升为主节点,同时还要通知应用方更新主节点地址,对于很多应用场景这种故障处理的方式是无法接受的.可喜的是Redis从 2.8 ...
- Windows10 准备/安装Flutter研发环境
Flutter简介 Flutter 是 Google 开源的 UI 工具包,帮助开发者通过一套代码库高效构建多平台精美应用,支持移动.Web.桌面和嵌入式平台. Flutter 中国 安装Flutte ...
- Nexus安装配置和使用
Nexus安装配置和使用 第一步安装jdk yum install java-1.8.0-openjdk-devel 第二步下载nexus-3.12.1-01-unix.tar.gzjdk 下载地址: ...
- hive学习笔记之十:用户自定义聚合函数(UDAF)
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本文是<hive学习笔记>的第十 ...
- Docker:Linux离线安装docker-compose
1)首先访问 docker-compose 的 GitHub 版本发布页面 https://github.com/docker/compose/releases 2)由于服务器是 CentOS 系统, ...