mysql 主从复制(复制文件夹,修改端口号的方式)

  1. 复制MySQL的安装目录 以及 数据库存储数据目录

  2. 在这里插入图片描述

  3. 更改从机my.ini文件 (文件在③和④中 数据库数据保存目录)

  4. 更改配置在这里插入图片描述

  5. 使用管理员cmd命令 在 从机的安装路径D:\Sort\MySQL-S\bin bin目录中 执行

  6. mysqld install mysqls1 --defaults-file="D:\Sort\MySQLData-S\my.ini" mysqls1 是服务的名称

  7. 在这里插入图片描述
    出现以上提示安装成功

安装完成 服务会有两个MySQL服务
在这里插入图片描述
使用不同的端口号都可以连接 由于文件都是复制的 所以账号密码和原来的一样

配置 MySQL 主从服务器

主服务器配置

[mysqld]
#开启日志
log-bin = mysql-bin
#设置服务id,主从不能一致
server-id = 1
#设置需要同步的数据库
binlog-do-db=user_db
#屏蔽系统库同步
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema

从服务器配置

[mysqld]
#开启日志
log-bin = mysql-bin
#设置服务id,主从不能一致
server-id = 2
#设置需要同步的数据库
replicate_wild_do_table=user_db.%
#屏蔽系统库同步
replicate_wild_ignore_table=mysql.%
replicate_wild_ignore_table=information_schema.%
replicate_wild_ignore_table=performance_schema.%

重启主从数据库 重启成功说明配置没有问题

创建用于主从复制的账号

切换至主库,登录主库3306

授权主备复制专用账号

#创建用于主从复制的账号db_sync,密码db_sync
create user 'db_sync'@'%' identified with mysql_native_password by 'db_sync';
#授权
grant replication slave on *.* to 'db_sync'@'%';
#刷新权限
FLUSH PRIVILEGES;
 

确认位点 记录下文件名以及位点

show master status;

在这里插入图片描述
WYC-bin.000019 331 这两个值会在从机配置中用到

主从数据同步设置

切换至从库,登录从库3307

修改从库指向到主库,使用上一步记录的文件名以及位点

停止同步
STOP SLAVE;
配置策略
CHANGE MASTER TO
master_host = 'localhost',
master_user = 'db_sync',
master_password = 'db_sync',
master_log_file = 'WYC-bin.000019',
master_log_pos = 331;

启动
START SLAVE;

查看
show slave status

查看Slave_IO_Runing和Slave_SQL_Runing字段值都为Yes,表示同步配置成功。如果不为Yes,请排查相关异常。

在这里插入图片描述

本机配置时 总是 Slave_IO_Runing NO ,Slave_SQL_Runing YES 通过查看从机的错误日志得知 server ids重复

查看错误日志文件名称
 SHOW VARIABLES LIKE 'log_error'; 
 

错误日志文件 文件在数据库的数据保存目录中的data,本机路径为 D:\Sort\MySQLData-S\Data\WYC.err
在这里插入图片描述

错误信息

2022-11-13T13:02:21.773170Z 22 [ERROR] [MY-013117] [Repl] Slave I/O for channel '':
 Fatal error: The slave I/O thread stops because master and slave have equal MySQL
  server ids 
  these ids must be different for replication to work (or the --replicate-same-server-id option must be used on slave but this does not always make sense; please check the manual before using it). Error_code: MY-013117

错误信息提示uuid重复
查看主机和从机 uuid

show variables like '%server_uuid%';

是由于复制的文件夹 service-id 重复

查阅资料的之 更改uuid即可 (删除从机的auto.cnf文件也行。)
于是修改从机的uuid,之后重启服务,重新设置从机配置,但是还是不行。查询主机,从机的service_id 确实不重复,文件也是不一样的。


停止
STOP SLAVE;
设置从机配置为空
STOP SLAVE IO_THREAD FOR CHANNEL '';
刷新
reset slave all;
重新配置
CHANGE MASTER TO
master_host = 'localhost',
master_user = 'db_sync',
master_password = 'db_sync',
master_log_file = 'WYC-bin.000025',
master_log_pos = 157;
#启动同步
START SLAVE;

查看
show slave status
结果还是 Slave_IO_Runing NO

之后又查阅资料执行以下语句即可

由于错误日志显示server_id 重复,便想着修改server_id 本次是在Slave_IO_RuningNO 是直接执行下面的语句 个人感觉先设置server_id和先配置从机复制策略 先后不冲突
stop slave;
set global server_id=238475;
start slave;

再次查看
show slave status

Slave_IO_Runing YES Slave_SQL_Runing YES

测试是否完成主从复制

修改3306 t_user表中的内容
查询3307 t_user中的内容,发现同步成功

版权声明:本文为m0_46267506原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。