您当前的位置: 首页 >  windows

一一哥Sun

暂无认证

  • 1浏览

    0关注

    622博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Day15_03_分库分表教程之Windows下实现MySQL主从复制

一一哥Sun 发布时间:2019-07-04 00:22:20 ,浏览量:1

Windows下实现MySQL主从复制 一. 配置要求
  • 1️⃣. 主从服务器操作系统版本和位数一致;

  • 2️⃣. Master和Slave数据库的版本要一致;

  • 3️⃣. Master和Slave数据库中的数据要一致;

  • 4️⃣. Master开启二进制日志,Master和Slave的server_id在局域网内必须唯一.

  • 5️⃣. 安装包data目录下auto.cfg中的server_uuid必须唯一(删掉auto.cfg后,再启动mysql服务时会自动生成).

二. 配置说明 1. 说明

本教程是在window7系统下,采用mysql-5.7.26-winx64版本进行安装配置MySQL主从复制,实现读写分离.

本教程是在一台机器上,安装了两个MySQL服务,端口号分别为3306和3307,MySQL服务名称分别为MySQL和mysql-slave

请参考本人之前的mysql安装教程,提前安装配置好两个mysql服务!!!

2. MySQL下载地址

https://dev.mysql.com/downloads/mysql/

具体MySQL安装教程,请参考本人另一篇博客-->windows中安装配置MySQL 5.7.26详细教程https://blog.csdn.net/syc000666/article/details/94484959

三. 配置主库 1. 停止主mysql
net stop mysql 
2. 修改主库的my.ini文件

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8

[mysqld]
#设置3306端口
port = 3306

# 设置mysql的安装目录
# 设置mysql数据库的数据的存放目录

# 允许最大连接数
max_connections=200

# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8

# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB

#=========主从复制关键配置=====================
server_id=1 #主库和从库需要不一致,配一个唯一的ID编号,1至32,手动设定.

log-bin=mysql-master-bin #二进制文件存放路径,存放在根目录data.

#binlog-do-db=db01 #需要复制的库,多个库用逗号隔开,如果此项不配置所有主库都参与复制
#binlog-ignore-db=mysql #不需要复制的库,和上项同理
#=========主从复制关键配置=====================

3. 重启主库
net start mysql 
4. 在主库中创建一个用户

该用户专门用于连接从库,注意该用户是在主库里创建的!!!

#登陆mysql主库
mysql -uroot -p

#创建用户slave01,密码123456
grant replication slave on *.* to 'slave01'@'127.0.0.1' identified by '123';

#刷新权限
flush privileges; 

slave01是用户名,123是用户对应的密码,localhost也可以写ip.

6. 找到 Position 和 File 的值记录下来
show master status;

四. 配置从库 1. 停止从库
net stop mysql-slave 
2. 修改从库的my.ini文件
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8

[mysqld]
#设置3307端口
port = 3307

# 设置mysql的安装目录
# 设置mysql数据库的数据的存放目录

# 允许最大连接数
max_connections=200

# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8

# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB

#========主从复制关键配置======================
server_id=2 #主库和从库需要不一致
#binlog-do-db=db01 #和主库说明一致
#binlog-ignore-db=mysql #和主库说明一致
#========主从复制关键配置======================

3. 重启从库
net start mysql-slave
4. 在从库执行如下命令

#以root身份登陆从库
mysql -uroot -P 3307 -p

#修改权限
CHANGE MASTER TO MASTER_HOST='127.0.0.1',MASTER_USER='slave01',MASTER_PASSWORD='123', MASTER_LOG_FILE='mysql-master-bin.000001',MASTER_LOG_POS=1801;

#master_host= 这里是我们主库的IP; 
#master_user=’slave01’ 是我们之前创建的用于连接从库的用户;
#MASTER_LOG_FILE 是我们刚才在主库里通过 show master status;命令得到的值,根据自己的实际情况填写. 
#master_log_file=’mysql-master-bin.000001’ master_log_pos=1801
5. 停止重启slave
#先停止从库 
stop slave;

#再开启从库
start slave;
6. 查看从库状态
show slave status\G

当Slave_IO_Running=yes,Slave_SQL_Running=yes时,说明我们主从同步已成功配置完毕.

五. 验证主从复制功能

在主机中添加一条记录.

可以看到从机中自动同步过来了该记录.

至此,主从同步实现! 

六. 执行change命令失败的解决办法

当在从机中执行change master to xxx命令的时候,如果出现如图所示错误, 可以先把从机停止即可.

stop slave;
七. Slave-IO-Running为Connecting的解决办法

主从同步出现一下错误:
Slave_IO_Running: Connecting
Slave_SQL_Running: Yes
导致lave_IO_Running 为connecting 的原因主要有以下 3 个方面:
  • 1️⃣. 网络不通: 检查网络是否畅通;检查下面的命令中ip地址是否正确 :CHANGE MASTER TO MASTER_HOST='127.0.0.1' ...

  • 2️⃣. 密码不对: 检查该命令中的密码是否正确CHANGE MASTER TO ... MASTER_PASSWORD='123' ...

  • 3️⃣. pos不对: 检查该命令中的MASTER_LOG_POS是否正确:CHANGE MASTER TO ... MASTER_LOG_FILE='mysql-master-bin.000001',MASTER_LOG_POS=1801;

八. Slave-SQL-Running为No的解决办法 1. 错误原因

导致这个问题的原因是由于数据不同步,导致我们在执行主从同步的时候出现了执行不了的sql语句,进而导致从机的事务回滚,所以sql的进程就被关闭了.导致该问题的常见情况:

  • 在从机上进行了写操作(非双机热备情况下);

  • slave机器重启,事务回滚;

  • 各种原因导致的数据不同步.

2. 解决办法
STOP SLAVE;

SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;

START SLAVE;

SHOW SLAVE STATUS;

 

关注
打赏
1665624836
查看更多评论
立即登录/注册

微信扫码登录

0.0417s