mysql主从配置



一、主从的意义

a) 实时灾备,用于故障切换

 如果机器发生故障,那么可以立刻切换到其他机器,保证系统能够正常运行。

b) 读写负载均衡

 一般项目都读多写少,所以我们可以进行读写分离,主库进行请求,从库进行读操作,提升系统性能。

c) 定时任务专用

 定时任务比较固定,可以独立一个slave出来做定时任务,与业务进行隔离。

d) 开发人员查看

 当发生错误时,开发人员可能通过slave去查看数据,而不是直接连接master。

二、主从同步的原理

两种方式

1、  纯异步

a)  当有请求到达master时,会先到data

b)  再记录请求日志到binlogs中

c)  无需等待从库同步,data直接返回请求结果

d)  slave通过I/O thread获取master的binlog,将其放到relaybinlog中(异步)

e)  通过sql thread执行binlogs记录的sql,从而使用slave data与master保持同步(异步)

优点:异步同步数据,速度快

缺点:如果master与slave链接断了,可能会产生数据不一致

2、  半同步

a) 当有请求到达master时,先记录请求日志到binlogs

b) 然后到data执行请求,等待其中一个slave获取master binlogs

c)  Slave通过I/O thread获取master的binlog,将其放到relaybinlog中,并通知master binlogs

d)  Master binlog接收到slave的通知后,会通知data,最后data才会返回执行结果

e)  通过sql thread执行binlogs记录的sql,从而使用slave data与master保持同步

优点:可以在一定程度上保证数据的一致性

缺点:性能比较差,等待时间较长,用户体验较差

三、主从同步产生的问题

问题

a) 中间链路中断,数据不一致问题

b) 从库只有一个sql thread,性能比较慢

解决方案

a) 半同步

b) 并行复制(mysql5.7可以并行复制)

四、主从同步的方案

        

五、主从同步配置

a)  准备两台服务器

Master服务器:192.168.1.101

Slave服务器:192.168.1.102

b) master服务器

my.cnf 配置

server-id=1

#binlog 格式

binlog-format=ROW

log-bin=mysql-master-bin

#slave更新时是否记录到日志中;

log-slave-updates=true

#开启半同步,需要安装插件(见:补充)

rpl_semi_sync_master_enabled=ON

#需要同步的二进制数据库名;

binlog-do-db=mydatabase

#不同步的二进制数据库名,如果不设置可以将其注释掉;

binlog-ignore-db=information_schema

binlog-ignore-db=mysql

binlog-ignore-db=personalsite

binlog-ignore-db=test

创建用户,用于主从同步数据库

mysql> grant replication slave,super,reload on *.* toslave1@192.168.1.102 identified by '123456'

查看主节点状态

mysql>show master status

#在主库上查看已连接的slave主机

mysql> show slave hosts;

#查看所有binlog日志

mysql> show binary logs;

#查看所有binlog 事件

mysql> show binlog events in ' mysql-master-bin.000003';

c) slave服务器

my.cnf 配置-----

server-id = 2

log-bin=mysql-slave-bin

 #需要同步的数据库

binlog-do-db=mydatabase

binlog-ignore-db=information_schema

binlog-ignore-db=mysql

binlog-ignore-db=personalsite

binlog-ignore-db=test

slave 节点修改master 配置

mysql> change master to master_host='192.168.1.101',master_user='slave1',master_password='123456';

slave 相关操作

#启动slave

mysql>start slave;

mysql>stop slave;

#查看 slave 状态

show slave status\G;

六、验证

master执行命令

slave执行命令

mysql> show slave status


当看到以上两种结果时,意味着配置成功了

这个时候,操作master的数据,然后查看slave的数据是否会同步!

七、补充

开启半同步需要安装一个插件

在master库安装semisync_master插件:

mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME'semisync_master.so';

在slave库安装semisync_slave插件

mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME'semisync_slave.so'; 

注:本篇文章为学习笔记,勿喷!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值