windows下两个mysql5.7的主从配置实现数据库同步

时间:2021-07-28 03:26:24

一、实验环境

两台电脑均为 win7  32位

主服务器地址:49.123.105.71    从机地址:10.63.42.107

为了实现可以将主机中的数据库同步到从机:主机-------->从机

二、配置过程

1.主机部分

①直接修改配置文件D:\ProgramData\MySQL Server 5.7\my.ini
在最后添加如下内容:
#Master Config 
server-id=1;
log-bin=mysql-bin;
binlog-do-db=iot    
binlog-ignore-db=world
binlog-ignore-db=sakila
binlog-ignore-db=test

(说明:binlog-do-db是需要同步的数据库;binlog-ignore-db是忽略的数据库)

②在主服务器的mysql命令行里为从机赋予权限:
grant replication slave on *.* to root@10.63.42.107 identified by '123456'

③重启mysql服务,查看主机配置:
show master status;
显示:
File                                       Position
mysql-bin.000002            5442170


2.从机配置

①在配置文件里C:\ProgramData\MySQL Server 5.7\my.ini
在最后添加:
#Slave Config
server-id=2
log-bin=mysql-bin
replicate-do-db=iot

②在mysql命令行里进行其他关联配置,否则导致从机的mysql服务不能启动,与数据库版本先关:
change master to master_host='49.123.105.71', master_user='root', master_password='123456', master_log_file='mysql-bin.000002',master_log_pos=5442170;

(配置值的对应关系:

master_host:主机地址

master_user:主机赋权限的用户名

master_password:主机赋权限时设置的密码

master_log_file:show master status之后的显示的File

master_log_pos:show master status之后的显示的Position)

③重启mysql服务,查看从机配置:
show slave status;
显示Slave_IO_Running:Yes
    Slave_SQL_Running:Yes
则配置完全,正在同步。。

(如果显示不能对slave进行修改时,需要先停止slave:stop slave,完成修改之后再启动slave: start slave)

数据库的同步不在完成如上配置之后启动,一直不间断。。。



配置过程中出现的错误:

show slave status;
后显示:Slave_IO_Running:Yes
        Slave_SQL_Running:No


错误提示:
Last_SQL_Errno: 1062
Last_SQL_Error: Error 'Duplicate entry '1438019' for key 'PRIMARY'' on query. Default database: 'iot'. Query: 'INSERT INTO ticket (tn, title, create_time_unix, queue_id, ticket_lock_id, user_id, group_id, ticket_priority_id, ticket_state_id, ticket_answered, escalation_start_time, timeout, valid_id, create_time, create_by, change_time, change_by) VALUES ('2012061310001851', 'Your order ORD201205A000016 was bounced back', 1339585744, 44, 1, 43, 1, 3, 4, 0, 1339585744, 0, 1, current_timestamp, 43, current_timestamp, 43)'


采用下种方法跳过错误:
stop slave;
set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
start slave;
show slave status\G;
但是还是有很多错误,在主机mysql中查看错误事件:
show binlog events in 'mysql-bin.000002' from 4940585\G
查看到2537条。。。
发现解决方法都是与log_pos有关,所以根据master的Position修改了slave的相关部分:
change master to master_pos=5442170  所以在从机slave的配置中要注意此项内容