mysql_master__(mysql_relay)__(mysql_slave)

本文详细介绍了如何部署M-S-S(Master-Slave-Relay)架构,包括配置Master、Relay_Server和Slave_Server的步骤,以及解决同步过程中遇到的错误方法。通过创建用户并授权,调整my.cnf配置文件,实现数据的一致性和同步。同时,文章提供了当从服务器未同步主服务器表时的错误排查和解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

部署 M-S-S

  • 首先确保三台机器要同步的库的数据一致性的情况下
  • Master的配置

    1. 创建用户repl并授权,为 relay_server提供服务,可以在relay_server机器上用repl帐号,刷新权限使生效
    2. 配置 my.cnf,重启 mysqld
      log-bin
      server-id
      binlog-do-db
      binlog-ignore-db
      sync-binlog=1
      binlog-format=row
  • relay_server的配置
  1. 配置 my.cnf
    a) Server-id=
    b) Log-bin=
    c) Log-slave-updates=1
    d) Binlog-format=row
  2. 重启mysqld
  3. 开始slave,指定主服务器的相关信息
  4. 查看relay_server的状态
  5. 作为slave_server的主,为slave提供服务,创建用户并授权,刷新权限
  • Slave_server的配置

    配置my.cnf
    a) Server-id=
    b) Log-bin=
    c) Binlog-format=row
    重启msqld
    开始slave,指定主服务器的相关信息
    查看slave的状态

在 master上插入数据测试:
分别在 relay_server,slave_server上查看

Relay_server也能查到数据,是因为存储引擎的原因

作为relay_server只提供中继服务,不储存数据
Mysql> Set sql_log_bin=off;
Mysql> Alter table t1 engine=blackhole;

Mysql> set sql_log_bin=on;
特别注意:mysql –uroot –p123456 –e “set sql_log_bin=off”这样设置是不会生效的
本人在这里浪费了很长时间???

这样就实现了中继,不提供存储数据。


错误排查:

当从服务器没有主服务器同步的表t1时,向主服务器的表t1插入数据,些时从服务器会报错。
Mysql> show slave status\G -- 挑选出来下面的问题点
Read_Master_Log_Pos: 2274
Slave_SQL_Running: No
Exec_Master_Log_Pos: 2020
Last_SQL_Errno: 1146
Last_SQL_Error: Error executing row event: 'Table 'db1.t1' doesn't exist'
查看主的事件记录
mysql> show binlog events in 'apenglinux-001.000002' from 2020\G
End_log_pos: 2085
End_log_pos: 2274
在从上跳出两个事务,2085,2274
在从上的操作:
mysql> stop slave;
mysql> set global sql_slave_skip_counter=2;
mysql> start slave;
mysql> show slave status\G -- 再次查看主从同步了

转载于:https://blog.51cto.com/13480443/2311591

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值