Window环境下配置MySQL 5.6的主从复制、备份恢复
1、环境准备
- Windows 7 64位
- MySQL 5.6
- 主库:192.168.103.207
- 从库:192.168.103.208
- navicat无法连接MySQL8解决方案
#修改加密规则
ALTER USER 'root123'@'%' IDENTIFIED BY 'root123' PASSWORD EXPIRE NEVER;
#更新密码(mysql_native_password模式)
ALTER USER 'root123'@'%' IDENTIFIED WITH mysql_native_password BY 'root123';
2、配置新数据库的主从复制
2.1、修改主库配置文件
先在主数据库中创建新数据库rep_test。
然后编辑主数据库的 my.ini 文件
在 [mysqld] 节点中增加或修改如下内容:
server-id= #指定唯一的ID,1至32,必须的
log-bin=mysql-log-bin #指定二进制日志存放路径,必须的
binlog-do-db=rep_test #指定要同步的数据库,必须的
#binlog-ignore-db=mysql #指定不要同步的数据库,如果指定了binlog-do-db就不用再指定该项
2.2、配置主库备份账户
重启主数据库,然后在主数据库中建立一个备份账户
mysql>grant replication slave on *.* to slave@192.168.103.208 identified by 'slave123' ;
mysql>flush privileges;
PS:identified by 指定的slave是账号slave@192.168.1.128 的密码
2.3、查看主服务器状态
显示主服务器的状态信息,并且找到File 和 Position 的值记录下来;
mysql>show master status;

2.4、修改从库配置文件
在从数据库中创建新的数据库rep_test。
然后编辑从数据库的 my.ini 文件
在 [mysqld] 节点中增加如下内容:
server-id= #指定唯一的ID,2至32,必须的,并且不能跟主数据库一样
replicate-do-db=rep_test #指定要同步的数据库,必须的
#replicate-ignore-db=mysql #指定不要同步的数据库,
2.5、设置从库slave
重启从数据库,设置登录主数据库的账号和密码等信息,然后启动slave
mysql>change master to master_host='192.168.103.207',master_port=,master_user='slave',master_password='slave123', master_log_file='mysql-log-bin.000001',master_log_pos=;
mysql>start slave;
2.6、查看从数据库的信息
mysql>show slave status \G;
如果出现: Slave_IO_Running: Yes Slave_SQL_Running: Yes以上两项都为Yes,那说明没问题了

2.7、测试主从复制
在主数据库中创建一个新的表,然后再切换到从数据库查看是否同样多出同名的数据库

2.8、清除主从关系
mysql主从复制中,需要将主从复制关系清除,需要取消其从库角色。这可通过执行 RESET SLAVE ALL 清除从库的同步复制信息、包括连接信息和二进制文件名、位置。从库上执行这个命令后,使用show slave status将不会有输出。
删除master.info和relay-log.info文件;
删除所有的relay log(包括还没有应用完的日志),创建一个新的relay log文件;
从Mysql 5.5开始,多了一个all参数。如果不加all参数,那么所有的连接信息仍然保留在内存中,包括主库地址、端口、用户、密码等。这样可以直接运行start slave命令而不必重新输入change master to命令,而运行show slave status也仍和没有运行reset slave一样,有正常的输出。但如果加了all参数,那么这些内存中的数据也会被清除掉,运行show slave status就输出为空了。
mysql>stop slave;
QueryOK, rowsaffected (, sec) mysql>reset slave all;
QueryOK, rowsaffected (, sec) mysql> show slave status\G
Emptyset (, sec)
RESET MASTER
功能说明:删除所有的binglog日志文件,并将日志索引文件清空,重新开始所有新的日志文件。用于第一次进行搭建主从库时,进行主库binlog初始化工作;
测试如下:
未删除前
[root@mysql01 mysql]# pwd
/usr/local/data/mysql
[root@mysql01 mysql]# ls
auto.cnf client-cert.pem ibdata1 ibtmp1 localhost.localdomain.pid mysql-bin. mysql-bin. mysqld_safe.pid public_key.pem sys
ca-key.pem client-key.pem ib_logfile0 imove mysql mysql-bin. mysql-bin. performance_schema server-cert.pem
ca.pem ib_buffer_pool ib_logfile1 localhost.localdomain.err mysql-bin. mysql-bin. mysql-bin.index private_key.pem server-key.pem
[root@localhost bin]# ./mysql -uroot -p123456
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin. | | | | |
+------------------+----------+--------------+------------------+-------------------+
row in set (0.00 sec)
mysql>
当前有6个binlong日志,且Position的位置为16663694
运行RESET MASTER
mysql> reset master;
Query OK, rows affected (0.03 sec) mysql> show master status\G;
*************************** . row ***************************
File: mysql-bin.
Position:
Binlog_Do_DB:
Binlog_Ignore_DB:
row in set (0.00 sec)
显示所有的binlog已经被删除掉,且binlog从000001 开始记录
注:当数据库要清理binlog文件的时候,可以通过操作系统进行删除,也可以运行reset master进行删除。但是如果当前是主数据库,且主从数据库正常的时候,千万不能用这种方式删除。
【使用场景】第一次搭建主从数据库时,用于主库的初始化binglog操作。
RESET SLAVE
功能说明:用于删除SLAVE数据库的relaylog日志文件,并重新启用新的relaylog文件;
测试如下:
登录从数据库,未删除前
mysql> show slave status\G;
*************************** \. row ***************************
Slave_IO_State: Connecting to master
Master_Host: 192.168.47.167
Master_User: server
Master_Port:
Connect_Retry:
Master_Log_File: mysql-bin.
Read_Master_Log_Pos: Relay_Log_File: mysql02-relay-bin.
Relay_Log_Pos: Relay_Master_Log_File: mysql-bin.
当前relaylog为0004;
先停止slave,运行RESET MASTER
mysql> stop slave;
Query OK, rows affected (0.01 sec)
mysql> reset slave;
Query OK, rows affected (0.04 sec)
mysql> show slave status\G;
*************************** \. row ***************************
Slave_IO_State:
Master_Host: 192.168.47.167
Master_User: server
Master_Port:
Connect_Retry:
Master_Log_File:
Read_Master_Log_Pos: ** Relay_Log_File: mysql02-relay-bin.
Relay_Log_Pos: **
RESET SLAVE将使SLAVE忘记主从复制关系的位置信息。该语句将被用于干净的启动, 它删除master.info文件和relay-log.info 文件以及所有的relay log 文件并重新启用一个新的relaylog文件。
使用场景:当原来的主从关系被破坏之后,从库经过重新初始化后直接连接会报 ERROR 1201的错误,运行reset slave后,重新配置主从连接就可以了;
3、配置旧数据库的主从复制
3.1、修改主库配置文件
如果一开始数据库的架构不是主从复制,并且运行一段时间后已经有数据存在,那配置的方式略有不同。
在从数据库中创建新的数据库landclash。
编辑主数据库的 my.ini 文件,使用以下内容:
server-id= #指定唯一的ID,1至32,必须的
log-bin=mysql-log-bin #指定二进制日志存放路径,必须的
binlog-do-db=landclash
#binlog-ignore-db=mysql #指定不要同步的数据库,如果指定了binlog-do-db就不用再指定该项
配置主库备份账户
mysql>grant replication slave on *.* to slave123@192.168.103.208 identified by 'slave123' ;
mysql>flush privileges;
3.2、主数据库中锁定所有的表
重启主数据库,然后在主数据库中锁定所有的表
mysql>flush tables with read lock;
3.3、查看主服务器状态
显示主服务器的状态信息,并且找到File 和 Position 的值记录下来;
mysql>show master status;

3.4、数据拷贝
将主数据库data目录下需要做主从复制的数据库的同名目录拷贝到从数据库的data目录下
注意:拷贝的话也要拷贝 ibdata1 文件,不然会不显示表结构

3.5、修改从库配置文件
编辑从数据库的 my.ini 文件,加上一下内容:
server-id= #指定唯一的ID,2至32,必须的,并且不能跟主数据库一样
replicate-do-db=landclash #指定要同步的数据库,必须的
#replicate-ignore-db=mysql #指定不要同步的数据库,
3.6、设置从库slave
重启从数据库,因为主数据库在重新配置my.ini后,日志文件变成新的文件,所以需要再次设置登录主数据库的账号和密码等信息
mysql> stop slave;
mysql>change master to master_host='192.168.103.207',master_port=,master_user='slave123',master_password='slave123', master_log_file='mysql-log-bin.000001',master_log_pos=;
mysql>start slave;

3.7、查看从数据库的信息
再次输入查看从数据库状态的命令
mysql>show slave status \G;
我们看到红框标注的地方跟之前做新数据库主从复制不一样了。

3.8、主数据库解锁
完成上述配置后,回到主数据库,将表解锁
mysql>unlock tables;
之后在主数据库的修改就能同步到从数据库上了。
4、数据库备份
4.1备份脚本
- sql备份 DataBackupSql.bat
rem *******************************Code Start*****************************
@echo off set "Ymd=%date:~,4%%date:~5,2%%date:~8,2%"
"C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqldump" -P3307 -uroot123 -proot123 landclash > c:\db_bak\landclash_%Ymd%.sql
@echo on
rem *******************************Code End***************************** - 文件备份 DataBackupFile.bat
*******************************Code Start*****************************
net stop mysql
xcopy "C:\ProgramData\MySQL\MySQL Server 5.6\data\landclash\*.*" "c:\db_bak\landclash\%date:~0,10%\" /S /I
xcopy "C:\ProgramData\MySQL\MySQL Server 5.6\data\ibdata1" "c:\db_bak\landclash\%date:~0,10%\" /S /I
net start mysql
*******************************Code End *****************************
4.2、增量备份
小量的数据库可以每天进行完整备份,因为这也用不了多少时间,但当数据库很大时,就不太可能每天进行一次完整备份了,这时候就可以使用增量备份。增量备份的原理就是使用了mysql的binlog志。
1、首先做一次完整备份:
mysqldump -h192.168.103. -P3307 -uroot123 -proot123 --single-transaction --master-data= test > test.sql
这时候就会得到一个全备文件 test.sql
在sql文件中我们会看到:
-- CHANGE MASTER TO MASTER_LOG_FILE='bin-log.000002', MASTER_LOG_POS=107;是指备份后所有的更改将会保存到bin-log.000002二进制文件中。
2、在test库的t_student表中增加两条记录,然后执行 flush logs 命令。这时将会产生一个新的二进制日志文件bin-log.000003,bin-log.000002则保存了全备过后的所有更改,既增加记录的操作也保存在了bin-log.00002中。
3、再在test库中的a表中增加两条记录,然后误删除t_student表和a表。a中增加记录的操作和删除表a和t_student的操作都记录在bin-log.000003中。
自动增量备份脚本:
IncreaseDB.sql
flush logs;
DataBackupFile_IncreaseDB.bat
*******************************Code Start*****************************
"C:\Program Files\MySQL\MySQL Server 5.6\bin\mysql.exe" -P3307 -uroot123 -proot123 < "C:\Program Files\MySQL\MySQL Server 5.6\bin\IncreaseDB.sql"
*******************************Code End *****************************
4.3、恢复
1、首先导入全备数据
mysql -h192.168.103. -P3307 -uroot123 -proot123 < test.sql
也可以直接在mysql命令行下面用source导入
mysql>source "test.sql"
2、恢复bin-log.000002
mysqlbinlog bin-log. |mysql -h192.168.103. -P3307 -uroot123 -proot123
3、恢复部分 bin-log.000003
在general_log中找到误删除的时间点,然后更加对应的时间点到bin-log.000003中找到相应的position点,需要恢复到误删除的前面一个position点。
可以用如下参数来控制binlog的区间
--start-position 开始点 --stop-position 结束点
--start-date 开始时间 --stop-date 结束时间
找到恢复点后,既可以开始恢复。
mysqlbinlog mysql-bin. --stop-position= |mysql -h192.168.103. -P3307 -uroot123 -proot123
Window环境下配置MySQL 5.6的主从复制、备份恢复的更多相关文章
- Window环境下配置MySQL 5.6的主从复制
原文:Window环境下配置MySQL 5.6的主从复制 1.环境准备 Windows 7 64位 MySQL 5.6 主库:192.168.103.207 从库:192.168.103.208 2. ...
- Centos 7环境下配置MySQL 5.7读写分离
1.实验目的: 实现在Centos 7系统环境下,MySQL5.7读写分离. 2.实验条件: MySQL主服务器:Centos 7桌面环境,IP:10.10.11.31 MySQL从服务器:Cento ...
- linux环境下配置mysql双主复制
简单来说,双主复制就是让两台mysql服务器中的数据保持同步,可以用来实现灾备和负载均衡 主机1 IP:192.168.200.128 主机2 IP:192.168.200.131 两台主机系统均为c ...
- Mac 环境下配置 MySQL 以及 Mac终端登录MySQL
1.首先mysql官网下载Mac 版 mysql直接安装 2.打开偏好设置-> MySQL -> 查看是否开启mysql服务 3.打开终端 进入mysql目录: /usr/local/my ...
- Window环境下配置Redis服务的方法及查看缓存数据的工具介绍
工具下载位置:http://pan.baidu.com/s/1hqVh1f2,包括服务端配置以及查看缓存的工具. 服务端是以服务的形式运行,将Redis服务端解压到某个目录,然后执行cmd执行命令: ...
- 在window环境下挂载mysql数据卷
1.提前在指定的目录下创建一个my.cnf文件,目录名最好为英文且不带特殊符号和空格,文件内容如下,注意:粘贴时要把每一行末尾的空格去除,否则运行时会报错说utf8编码错误 [mysqld] user ...
- 在Mac OS环境下安装MySQL服务
在Mac OS环境下安装MySQL服务 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我之前介绍过window环境下安装mysql服务,以及在Linux环境下安装mysql服务,今 ...
- 【转】mysql8.0 在window环境下的部署与配置
[转]mysql8.0 在window环境下的部署与配置 今天在阿里云window服务器上配置mysql环境,踩了一些坑,分享出来.需要的朋友可以看看.额,或许有人要吐槽我为什么不在linux上去配置 ...
- mysql8.0 在window环境下的部署与配置
今天在阿里云window服务器上配置mysql环境,踩了一些坑,分享出来.需要的朋友可以看看.额,或许有人要吐槽我为什么不在linux上去配置,额,因为我window的那台服务器配置相对高些.本人技术 ...
随机推荐
- 解决jenkins slave 中文乱码 encoding=ANSI_X3.4-1968
jenkins配置slave进行构建时,发现slave构建的控制台输入中文乱码,查看master,slave的jenkins系统信息 file.encoding和sun.jnu.encoding都没有 ...
- JPA中自定义的插入、更新、删除方法为什么要添加@Modifying注解和@Transactional注解?
前几天,有个同事在使用JPA的自定义SQL方法时,程序一直报异常,捣鼓了半天也没能解决,咨询我的时候,我看了一眼他的程序,差不多是这个样子的: @Repository public interface ...
- Java基础面试知识点总结
微信公众号[程序员江湖] 作者黄小斜,斜杠青年,某985硕士,阿里 Java 研发工程师,于 2018 年秋招拿到 BAT 头条.网易.滴滴等 8 个大厂 offer,目前致力于分享这几年的学习经验. ...
- 从PRISM开始学WPF,Prism7更新了什么
当时我在搬运Prism6.3的sample代码的时候,就是因为网上的资料太老旧,万万没想到这给自己挖了一个坑,因为我在做笔记的时候,prism已经在更新7.0了 现在已经是7.2了,(lll¬ω¬), ...
- 游戏服务器h2engine架构优化和跨平台设计
H2engine的GitHub星星不知不觉已经破百了,也没有特意推广过,但是慢慢的关注的人越来越多.因为事情多,好久没有写东西了,前一段时间有了一些想法,把h2engine又更新了一下,感觉h2eng ...
- 景观指数分析 - 初识FragStats4.2
引 言 FragStats景观格局分析软件 ,简单扼要地说就是景观指数的集成分析环境,不用自己编写相关的算法和读/取文件的开发.根据了解,FragStats(Fragment Statistic)官方 ...
- Android8.0通知
android里面经常会使用Notification来显示通知的消息,一般使用NotificationManager来创建通知消息 NotificationManager manger = (Noti ...
- iOS----------上传遇到的问题
插叙:之前电脑一直遇到VPN登录不了的问题,试了几台电脑都能正常连接,只有我的电脑不可以,VPN大佬建议我直接重装系统,索性就直接重新装了系统,结果就能连接了.昨天开始上传包的时候,发现用Applic ...
- Spring之AOP详解
文章大纲 一.AOP介绍二.Spring的AOP实战三.AOP常用标签四.项目源码及参考资料下载五.参考文章 一.AOP介绍 1. 什么是AOP 在软件业,AOP为Aspect Oriented ...
- ambari2.6.50 openssl 版本问题:SSLError: Failed to connect. Please check openssl library versions. Openssl error upon host registration
I'm trying to register hostnames in Ambari but getting the error below. We tried to run yum update o ...