手把手从零学习Mysql主从集群配置

手把手从零学习Mysql主从集群配置

Mysql 集群有很多种,一主一从,主主,多主多从等。根据自己的业务选择合适的集群架构。

但是这些集群架构,都是基于一主一从演变的。下面就从零开始搭建一主一从的架构模式。

参考Mysql5.7中文手册,根据文档内容,自己尝试了一遍。没问题,现在将自己配置主从模式的过程分享给大家。

首先讲解一下,主从模式能带来什么?

1.如果MySQL主服务器访问量比较大,可以通过 复制数据,然后在从同各器上进行查询操作,从而降低主服务器的访问压力
2.从服务器作为主服务器的备份,可以避免主服务器因为故障数据丢失的问题

主从的实现原理:
请看下面的主从官方标准图片
在这里插入图片描述
下面我以我自己的理解,以自己的语言简述一下执行流程。专业人士勿喷。

可以简单的理解为,Master主服务器每条写操作都会记录在这个 Binarylog 二进制文件中。
然后从Slave从服务器会去不断的读取Master的Binarylog内容,然后写进自己的Relay日志中
从服务器再从Relay日志将从主服务器复制过来的sql操作更新到自己的服务器中。这样主从服务器的数据就能够保持一致了。

总结主从搭建的过程:
1.Master开启主库的binlog日志。(默认是不开启的)
2.Master创建一个给Slave进行复制Binlog日志的账号并赋予权限。
3.为了确保数据一致性,停止主服务
(两个方法可以实现1.停止Mysql服务,2.利用锁机制,将Mysql的表全部锁住,不允许写入)
4.将Master的数据备份到Slave
5.备份完,开启Slave的主从模式
6.将Master的锁释放,或者开启Mysql服务。

下面从0开始一步步进行主从配置。
声明。 10.122.80.70 为我的主Master服务器
10.122.80.35 为我的从Slave服务器

1.开启Master的Binlog日志
可以查看log_bin 是否开启,如果开启可以略过

show global variables like '%log_bin%';

未开启,则编辑my.cnf配置文件
添加如下内容:

[mysqld] 
log-bin=mysql-bin
server-id=1

2.给Master 服务器添加 从服务器的复制账号 并赋予权限

create user 'repl_35'@'%' identified by 'repl_35';
grant replication slave on *.* to 'repl_35'@'%' identified by 'repl_35';

3.查看当前Master 的binlog日志名字与节点(重要)

show master status;

记录下自己的两个字段内容
下面是我的:
File : mysql-bin.000009
Position : 708

4.为确保数据一致性将Mysql的写入操作锁住

flush tables with read lock;

5.开始将主服务器的数据备份至从服务器
利用mysqldump工具
在Slave服务器中先备份数据到自己的临时目录下

laravel-shop 为我的数据库名

mysqldump -h10.122.80.70 -u root -p laravel-shop > /home/laravel-shop.sql

当然,前提是先有laravel-shop数据库

mysql -f -u root -p laravel-shop < /home/laravel-shop.sql

6.备份完数据后,# 配置从节点
修改Slave服务器的my.cnf


server-id = 2 
relay_log = /www/server/data/mysql-relay-bin 
relay_log-index = /www/server/data/mysql-relay-bin.index
log_slave_updates = 1 
read_only = 1

7.在Slave指定主节点的ip,端口,用户

 change master to master_host='10.122.80.70',master_port=3306,master_user='repl_35',master_password='repl_35',master_log_file='mysql-bin.000009',master_log_pos=708;

其中 master_log_file 与 master_log_pos 为第三部记住的参数

8.启动从节点

start slave;

查看主从是否成功

show slave status \G;

重点关注两个字段

Slave_IO_Running: Connecting 
Slave_SQL_Running: Yes

如有报错,请自行百度。

下面就可以在主库进行insert 操作, 从库 select 看是否实现主从。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值