win10下测试mysql主从同步

1. 准备工作

1.1 下载MySQL

首先去下载安装MySQL,这里使用的是MySQL5.7.32版本。下载地址:mysql下载地址。这里我下载的是这个版本。64位

1.2 解压zip文件到指定目录

  1. 在D盘下新建test文件夹,然后在test文件夹下分别新建mysql-master和mysql-slave文件夹;
  2. 将下载好的zip文件分别解压进去;
  3. 然后在mysql-master和mysql-slave文件夹下分别新建data目录和my.ini文件;
    如图:(mysql-slave文件夹下和图上所示一样)在这里插入图片描述
  4. 填写mysql-master中的my.ini文件,内容如下
[client]
# 设置mysql客户端默认字符集
default-character-set=utf8

[mysqld]
server_id=3
explicit_defaults_for_timestamp=true
log-bin=master-bin
binlog-format=ROW
#表示不需要备份的数据库为mysql
binlog-ignore-db=mysql

#设置免密码登录
#skip-grant-tables
# 设置端口
port = 1234
# 设置mysql的安装目录
basedir=D:\\test\\mysql-master
# 设置 mysql数据库的数据的存放目录,MySQL 8+ 不需要以下配置,系统自己生成即可,否则有可能报错
datadir=D:\\test\\mysql-master\\data
# 允许最大连接数
max_connections=20
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
  1. 填写mysql-slave中的my.ini文件,内容如下
[client]
# 设置mysql客户端默认字符集
default-character-set=utf8
 
[mysqld]
server_id=4
log-bin=slave-bin
binlog-format=ROW

#设置免密码登录
#skip-grant-tables
# 设置端口
port = 5678
# 设置mysql的安装目录
basedir=D:\\test\\mysql-slave
# 设置 mysql数据库的数据的存放目录,MySQL 8+ 不需要以下配置,系统自己生成即可,否则有可能报错
datadir=D:\\test\\mysql-slave\\data
# 允许最大连接数
max_connections=20
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

2. 安装mysql

管理员身份打开命令行cmd 否则可能因为权限不足报错

2.1主库master

管理员权限打开控制台cmd,进入目录bin下执行以下命令:

2.1.1初始化

mysqld --initialize --console
  1. 如果报错,–initialize specified but the data directory has files in it. Aborting。那么就用普通的cmd方式进入master下的bin目录,再次执行此命令即可。目前我也闹不清为啥管理员权限下执行此命令就会报错。
  2. 为避免初始化错误,配置文件中的路径最好使用’\\’
    在这里插入图片描述

2.1.2注册服务

以下命令是在管理员权限下进入bin目录中执行的。

mysqld --install testMaster --defaults-file="D:\test\mysql-master\my.ini"

2.1.3启动服务和停止服务

管理员权限下。

net start testMaster 
net stop testMaster

2.1.4 连接mysql

要先在管理员权限下启动mysql服务

mysql -uroot -P1234 -p[上面截图中的初始密码]

2.1.5修改密码

alter user 'root'@'localhost' identified by '123456';

刷新权限

flush privileges;

2.1.6创建用于同步的账号

这一步可以不做,我直接用的root。当然创建一个新账号是最安全的,但是涉及到数据库权限,我当时在新账号下连接数据库没有对数据库增删改的权限,于是在下面同步的时候直接用的root账户。

create user 'zls'@'%' identified by '123456';
grant replication slave on *.* to 'zls'@'%' identified by '123456';
flush privileges;

2.1.7 查看主库状态

show master status;

3.从库Slave

像操作主库一样进行初始化,安装,启动等操作

3.1 初始化:
mysqld --initialize --console
3.2 注册服务
mysqld --install testSlave --defaults-file="D:\test\mysql-slave\my.ini"
3.3 启动服务
net start testSlave
3.4 连接mysql 
mysql -uroot -P5678 -p[初始化生成的密码]
3.5 修改密码: 
alter user 'root'@'localhost' identified by '123456';
flush privileges;
3.6 创建用于同步的用户账号:
create user 'zls'@'%' identified by '123456';
flush privileges;
3.7 查看从库状态
show slave status;

4.准备开启主从同步

4.1查看master和slave各自目录 xxx/data/auto.cnf

如果两个文件一致,则修改slave从库的auto.cnf 使得两个库的值不一致

[auto]
server-uuid=049b7b4c-36c5-11eb-bbbf-e454e8d43410

4.2设置从库从哪里同步即设置master

change master to master_host='localhost',master_port=1234,master_user='root',master_password='123456',master_log_file='master-bin.000002',master_log_pos=810;

这里要记住master_log_file和master_log_pos参数对应的值是show master status; 命令中显示的值,主库每次重启以后,这个值都会发生改变,要重新修改再执行此命令
参数详解:

master_host: 主服务器的IP
master_user: 主服务器上新创建的用户名
master_password: 用户的密码
master_port: 主服务器的端口,如果未曾修改,默认即可。
master_log_file:主服务器二进制日志文件的名称,填写查看主服务器的master状态时显示的File值
master_log_pos:同步位置

4.3 开始主从同步

start slave;
stop slave;

4.4 查看同步状态

show slave status\G

在这里插入图片描述
注意,主从同步成功的标志:
IO线程和SQL线程都是成功运行的

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

文章转自:一台Windows10下搭建Mysql主从同步详细步骤–亲测可用

一些报错:

  1. Slave_IO_Running: NO,可以看这篇:mysql主从复制之异常解决。首先配置文件中的server_id不能相同,如果相同,修改一下即可。其次就是uuid不能相同。
  2. The slave I/O thread stops because master and slave have equal MySQL server UUIDs;这篇和上一篇差不多,就是多了几个查看配置的命令。uuid报错
  3. Slave_IO_Running: Yes和Slave_SQL_Running: Yes。但是主从不同步。解决方法。mysql主从数据库不同步的解决思路
    方法一:跳过错误(建议)(错误有可能是主库中原有一些数据,然后导致做主从的时候,主库一开始的数据同步不过来。)
    stop slave; 
    #表示跳过一步错误,后面的数字可变 
    set global sql_slave_skip_counter =1; 
    start slave; 
    之后再用mysql> show slave status\G 查看: 
    Slave_IO_Running: Yes 
    Slave_SQL_Running: Yes 
    ok,现在主从同步状态正常了。。。 
    
    方法二:重新做主从同步
  4. 2.1.2中注册的服务,win+r打开运行窗口,输入services.msc,在服务列表中都可以看到。
  5. 如果测试完主从同步,想删除无用的服务。可以使用以下方法
    1)win7系统,管理员权限进入cmd执行命令sc delete 服务名称
    2)win10解决方法:
    打开注册表(win+r输入 regedit):
    计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
    在这里边找到要删除的无用的服务,直接删除。然后重启电脑就没了。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值