前言:
        windows系统配置MySQL主从复制,系统中需要安装两个MySQL服务。我本地用的是集成环境,集成环境已经有一个MySQL服务,那么就需要自己在单独下载安装一个MySQL服务。本篇文章就是教如何下载、安装MySQL,最后是如何主从配置的。

我本地用的集成环境是phpstudy,MySQL版本是5.7.26

第一部分:windows如何安装两个MySQL服务

第一步:由于集成环境在windows中只能启动一个MySQL服务,所以我们需要下载一个MySQL的安装包,自行安装一个非集成环境中的MySQL服务。

下载地址如下:在里面选择自己所需要的版本即可。

MySQL :: Developer Zonehttps://dev.mysql.com/

下载完成,解压之后得到如下图一个文件夹目录。

进入到  D:\mysql-5.7.39-winx64\bin 该目录下双击:mysql.exe,如下图所示

双击:mysql.exe 之后,发现闪出一个黑色的弹窗,并无其他的反应。
导致的原因:因为服务没有安装,如何安装,接着往下看。

第二步、修改自行安装的MySQL配置文件

理论上到现在这一步直接安装服务即可,但是因为是默认配置,我们使用的时候会出现很多问题。比如里面的汉字是乱码,等一系列不确定因素,建议先配置一下默认文件。在D:\mysql-5.7.39winx64(根目录下),新建个my.ini。复制下面的代码保存就ok了。

[mysql]
default-character-set=utf8[mysqld]
port = 3307
basedir=D:\mysql5.7.39winx64
datadir=D:\mysql5.7.39winx64\data
max_connections=200
character-set-server=utf8
default-storage-engine=InnoDB[client]
port=3307
default-character-set=utf8

注意:新建的 my.ini 文件一定要注意格式,要保存成 ANSI 格式 。

以管理员身份运行cmd.exe程序

1、将路径切换到:D:\>cd mysql5.7.39winx64\bin

2、执行:mysqld.exe install 命令

执行安装命令以后,会看到安装成功提示,如下图所示:

3、初始化数据库,执行命令: mysqld --initialize --console 执行结束如下图所示

 注意:最后一行是数据库的初始密码
yE/WzCr1Qdz2 就是初始密码,后续登录需要使用,后面也可以在登陆后修改密码。

执行完 mysqld --initialize --console 命令,会在开始手动创建的 data 目录下生成一些文件,如下图所示

 4、执行安装服务命令 mysqld install MySQL3

注意:这里需要指定一下服务名称,如不指定服务名称,则默认是MySQL,但是MySQL 是本地安装的集成环境中服务名称,故我将服务名称改成了 MySQL3

执行命令完成,查看电脑的服务,则发现多了一个MySQL3的服务

服务至此已安装成功,但先不要急着启动MySQL3的服务,还需修改注册表。

第三步:修改MySQL3服务的注册表

1、运行(快捷键win+R)——输入:regedit.exe 以管理员身份运行。
2、找到MySQL3服务,路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services 就能看到MySQL3

 第四步:再次启动MySQL3服务,如下图所示,启动成功。

第五步:登录MySQL3

注意:
1、密码是开始安装服务给的初始密码: yE/WzCr1Qdz2

2、登陆命令中要指定服务端口号,否则将登陆失败

 第六步:修改MySQL3的密码

ALTER user 'root'@'localhost' IDENTIFIED BY '123456';

出现 Query Ok,代表修改密码成功。

到此,windows7安装两个MySQL服务已经完成。其他windows系统安装两个MySQL服务的过程,可以参考windows7的安装教程,大同小异。其中有所不同的应该是,环境变量配置、执行系统命令的区别。

第二部分:如何配置MySQL主从

主库配置:

第一步:修改主库my.ini文件中的配置

[mysql]
default-character-set=utf8[mysqld]
port=3306
basedir=D:/PhpStudyV8/phpstudy_pro/Extensions/MySQL5.7.26/
datadir=D:/PhpStudyV8/phpstudy_pro/Extensions/MySQL5.7.26/data/
character-set-server=utf8
default-storage-engine=MyIsam
max_connections=1000
collation-server=utf8_unicode_ci
init_connect='SET NAMES utf8'
innodb_buffer_pool_size=64M
innodb_flush_log_at_trx_commit=1
innodb_lock_wait_timeout=120
innodb_log_buffer_size=4M
innodb_log_file_size=256M
interactive_timeout=120
join_buffer_size=2M
key_buffer_size=32M
log-error="D:/PhpStudyV8/phpstudy_pro/Extensions/MySQL5.7.26/data"
log_error_verbosity=1
max_allowed_packet=16M
max_heap_table_size=64M
myisam_max_sort_file_size=64G
myisam_sort_buffer_size=32M
read_buffer_size=512kb
read_rnd_buffer_size=4M
skip-external-locking=on
sort_buffer_size=256kb
table_open_cache=256
thread_cache_size=16
tmp_table_size=64M
wait_timeout=120
binlog_format=mixed
#server_id=1
server-id=1
log-bin=mysql-bin
#binlog记录内容的方式,记录被操作的每一行
binlog_format=ROW
#减少记录日志的内容,只记录受影响的列
binlog_row_image=minimal
#指定需要复制的数据库名为db_test,如果备份多个数据库,重复设置这个选项即可
binlog-do-db=db_test
#不需要备份的数据库名,如果备份多个数据库,重复设置这个选项即可
binlog-ignore-db=mysql
binlog-ignore-db=performance_schema
binlog-ignore-db=information_schema
binlog-ignore-db=sys
# 这个参数要加上,否则不会给更新的记录些到二进制文件里(未测试)
log-slave-updates=1[client]
port=3306
default-character-set=utf8

重点部分是:

#server_id=1
server-id=1
log-bin=mysql-bin
#binlog记录内容的方式,记录被操作的每一行
binlog_format=ROW
#减少记录日志的内容,只记录受影响的列
binlog_row_image=minimal
#指定需要复制的数据库名为db_test,如果备份多个数据库,重复设置这个选项即可
binlog-do-db=db_test
#不需要备份的数据库名,如果备份多个数据库,重复设置这个选项即可
binlog-ignore-db=mysql
binlog-ignore-db=performance_schema
binlog-ignore-db=information_schema
binlog-ignore-db=sys
# 这个参数要加上,否则不会给更新的记录些到二进制文件里(未测试)
log-slave-updates=1

第二步:创建提供给从库,用来同步数据的账号

#创建允许从库同步数据的账号
GRANT REPLICATION SLAVE ON *.* TO 'root'@'%' identified by '123456';
#刷新权限
FLUSH PRIVILEGES;

第三步:重启MySQL服务,并查看主库的状态

修改完配置以后,需要重新启动MySQL服务,如下图所示

登录MySQL,查看主库记录二进制的文件名和位置,如下图所示

文件名:mysql-bin.000005  位置:154

从库配置:

第一步:修改从库的my.ini配置文件

[mysql]
default-character-set=utf8[mysqld]
port = 3307
basedir=D:\mysql5.7.39winx64
datadir=D:\mysql5.7.39winx64\data
max_connections=200
character-set-server=utf8
default-storage-engine=InnoDB
#服务的唯一编号
server-id=2
#开启mysql binlog功能
log-bin=mysql-bin
#binlog记录内容的方式,记录被操作的每一行
binlog_format=ROW
# 减少记录日志的内容,只记录受影响的列
binlog_row_image = minimalreplicate_wild_ignore_table=mysql.%
replicate_wild_ignore_table=performance_schema.%
replicate_wild_ignore_table=information_schema.%[client]
port=3307
default-character-set=utf8

配置的重点是:

#服务的唯一编号
server-id=2
#开启mysql binlog功能
log-bin=mysql-bin
#binlog记录内容的方式,记录被操作的每一行
binlog_format=ROW
# 减少记录日志的内容,只记录受影响的列
binlog_row_image = minimalreplicate_wild_ignore_table=mysql.%
replicate_wild_ignore_table=performance_schema.%
replicate_wild_ignore_table=information_schema.%

涉及到的常用配置说明:replicate_wild_ignore_table

使用replicate_do_db和replicate_ignore_db时有一个隐患,跨库更新时会出错。

在Slave上使用 replicate_wild_do_table 和 replicate_wild_ignore_table 来解决跨库更新的问题。

第二步:重启MySQL3服务。

重启MySQL3服务,并登录。登录时需要注意指定端口号 3307(具体原因第一部分安装MySQL服务时有说明)。

第三步:在从库中配置主库的信息 ,执行如下命令

CHANGE MASTER TO MASTER_HOST='127.0.0.1',MASTER_PORT=3306,MASTER_USER='root',MASTER_PASSWORD='root',MASTER_LOG_FILE='mysql-bin.000006',MASTER_LOG_POS=154;
命令中参数说明:
MASTER_HOST 是主库的ip
MASTER_PORT 是主库mysql的端口
MASTER_USER 是用户名
MASTER_PASSWORD 是主库mysql的密码
MASTER_LOG_FILE 是主库的二进制文件
MASTER_LOG_POS  是主库的位置

执行结果如下图所示,代表成功。

启动 slave 同步进程

mysql> start slave;

查看 slave 状态

mysql> show slave status \G;

Slave_IO_Running: Yes,Slave_SQL_Running: Yes时说明两个线程已启动,主从复制配置成功。

在主库创建新表,看从库是否将新表同步了。
可能出现的问题如下:
1、从库未能同步主库数据可以通过show slave status\G;检查Slave_IO_Running和Slave_SQL_Running的状态是否都为Yes。
如果Slave_IO_Running的状态为Connecting,一般是从库数据被修改导致的Position失效导致的(当然原因也可能是因为网络不通、密码不对):
2、程序也可能在slave上进行了写操作
3、可能是slave机器重启后,事务回滚造成的.
所以不要手动修改从表数据,否则数据冲突会导致主从同步失败(超过了一定的重试次数,从库不再进行同步)

实际过程中遇到的问题

在slave服务器上通过如下命令

mysql> show slave STATUS \G;

提示:

Slave_SQL_Running: No 表示slave不同步

 第一种解决方法:

1、先停止从库的运行
mysql> stop slave;
Query OK, 0 rows affected (0.01 sec)
2、跳过错误步数,后面步数可变
mysql> set global sql_slave_skip_counter=1;
3、再启动slave
mysql> start slave;
Query OK, 0 rows affected (0.01 sec)
4、查看同步状态
mysql> show slave STATUS \G;
显示如下信息则表示正常
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

第二种解决方法(重新做主从,完全同步):

1、先进入主库进行锁表,注意窗口不要关闭
mysql> flush table with read lock;
2、把数据进行备份
> mysqldump -uroot -p --opt -R 数据库 > /data/bak.sql
3、再新开个窗口,查看主数据库信息
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File       | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000005 |   1158 |       |         |          |
+------------------+----------+--------------+------------------+-------------------+
4、在从库上停止slave
mysql> stop slave;
5、导入备份的数据文件
mysql> source /data/bak.sql
6、重置同步
mysql> reset slave;
7、重新设置同步节点
CHANGE MASTER TO MASTER_HOST='127.0.0.1',MASTER_PORT=3306,MASTER_USER='root',MASTER_PASSWORD='root',MASTER_LOG_FILE='mysql-bin.000007',MASTER_LOG_POS=154;
8、开启slave
mysql> start slave;
9、查看slave状态
mysql> show slave status\G;
显示如下信息则表示正常
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
10、对主数据库解锁
mysql> unlock tables;

第三部分:测试主从同步

在主库的db_test中,新建一张user_infos表,刷新从库db_test库,会发现从库也出现了一张user_infos表。

MySQL主从配置-GTID模式
MySQL主从配置-之GTID复制【第二篇】_Super乐的博客-CSDN博客MySQL主从配置之GTID复制https://blog.csdn.net/wplblog/article/details/126975106?spm=1001.2014.3001.5502

windows中MySQL主从配置【第一篇】相关推荐

  1. Windows下MySql主从配置实战教程

    Windows下MySql主从配置实战教程 MySql的主从配置教程 主库MySql的安装 1.MySQL的下载 2.MySQL配置文件的编写 3.初始化数据库 4.安装服务 5.启动MySql 6. ...

  2. Windows下Mysql主从配置(Mysql5.5)

    主数据库IP:192.168.3.169 从数据库IP:192.168.3.34 主数据库配置my.inin: 在[mysqld]下添加配置数据: server-id=1     #配一个唯一的ID编 ...

  3. docker mysql.sock,Docker mysql主从配置

    Docker mysql主从配置 一:Mysql基于Docker的主从复制搭建 1:安装docker,安装步骤可见我之前的文章:Docker-常用基建的安装与部署 docker ps 命令查询当前的容 ...

  4. Mysql主从配置,实现读写分离

    大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够.到了数据业务层.数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢 ...

  5. mysql主从配置 简书_Mysql主从配置,实现读写分离-Go语言中文社区

    转载:https://www.cnblogs.com/alvin_xp/p/4162249.html 大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够.到了数据业务层.数据访问层 ...

  6. mysql主从配置访问_Mysql主从配置,实现读写分离

    大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够.到了数据业务层.数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢 ...

  7. mysql主从配置对解决并发有用_MySQL主从配置,读写分离

    大型网站为了缓解大量的并发访问,要网站实现分布式负载均衡.但是数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢失的话,后果不堪设想.这时 ...

  8. mysql主从配置实现_MySQL主从配置实现

    //MySQL主从配置 首先,两边都要安装MySQL,启动两边的MySQL 接着,配置主从,要保证主从数据都一样的 可以用rsync弄过去 在主上配置/etc/my.cnf server-id=1 l ...

  9. 黄聪mysql_黄聪:Mysql主从配置,实现读写分离

    大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够.到了数据业务层.数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢 ...

最新文章

  1. python学习随笔(七)_函数
  2. 团队前四次作业——个人总结
  3. Gym 101606 F-Flipping Coins(概率dp)
  4. CCF 201409-1 相邻数对
  5. JS 内置对象 String对象
  6. 论文浅尝 - EMNLP2020 | 通过词重排序跨语言解析
  7. 小小知识点(九)——拉盖尔高斯波束自由空间傍轴近似条件下的复振幅
  8. ubuntu配置LAMP
  9. git:关联github和本地仓库
  10. Android属于绑定服务特点是,android – 每个Service绑定是否需要一个ServiceConnection?...
  11. 模拟退火 (poj 2420, poj 2069)
  12. linux七周四次课(3月22日)
  13. Hugging Face Course-Diving in 抱抱脸 Tokenizers library (WordPiece tokenization Unigram tokenization)
  14. plsql导入导出表结构和数据对象
  15. java怎么使用mfc,调用mfc方法
  16. 三星S5P6818移植工程
  17. unity 场景背景替换2D图片方法
  18. easyui 合并列_Easyui 合并单元格_EasyUI 教程
  19. [bzoj 2038 OR 清橙A1206 小Z的袜子]莫队算法
  20. 几分钟计算机不操作就注销,win10系统长时间不操作就自动注销的方案

热门文章

  1. Nessus详细教程
  2. 年度社区app源码,简单唯美,对接hybbs,iapp开源
  3. sublime快捷键!+tab键失效
  4. 最新可用版PanDownload网页端PHP源码
  5. 软件测试是否有存在的必要?带你了解测试的重要性!
  6. P7774 KUTEVI
  7. XTU OJ 1279 Dual Prime
  8. 西门子PLC 1214和多台G120西门子变频器Modbud RTU通讯
  9. ros发布节点信息python_ROS Twist和Odometry消息类型使用(Python)
  10. 深度神经网络调参数技巧,神经网络参数调节方法