实现MySql的主从复制(两台虚拟机)详解

实现MySql的主从复制(非单机)



首先了解心跳线实现数据同步


一、mysql主从复制原理是什么?

1、master将操作语句记录到binlog日志中,然后授予slave远程连接的权限(master一定要开启binlog二进制日志功能;通常为了数据安全考虑,slave也开启binlog功能)。

2、slave开启两个线程:IO线程和SQL线程。其中:IO线程负责读取master的binlog内容到中继日志relay log里;SQL线程负责从relay log日志里读出binlog内容,并更新到slave的数据库里,这样就能保证slave数据和master数据保持一致了。

3、Mysql复制至少需要两个Mysql的服务,当然Mysql服务可以分布在不同的服务器上,也可以在一台服务器上启动多个服务。(本次演示为Mysql在不同的服务器上)

4、注意:在Mysql8版本,后面的实现主从复制的时候,需要添加一个条件。
5、master和slave两节点间时间需同步
在这里插入图片描述

二、使用步骤

1.安装Mysql

可以查看此文章

2.数据库进行同步

我们需要一个主节点,即主数据库mysql(为次数据库提供更新日志)

主节点配置

#主节点配置
#在 /etc/my.cnf中新增以下代码
#开启二进制日志
log_bin=master_bin
#设置当前节点全局唯一ID 这个随便,只要与保证唯一即可。这里需要小小的记住一下。后面在创建连接的时候,需要这个id
server-id=7
#重启mysql服务
service mysql start
#查看从二进制日志的文件和位置开始进行复制
mysql> show master status;

创建用户账号 第一个(10.70.20.%是允许前边IP是10.70.20的下的IP,)
mysql> create user repluser@'10.70.20.%' identified by '123456';
授权用户
mysql> grant replication slave on *.* to gaoch@'10.70.20.%';

从数据库配置

#从节点配置
#为当前节点设置一个全局惟的ID号
server_id=17
#开启二进制日志
log-bin=slave_log
#设置从数据库只读(对root用户无效)
read_only=ON
#relay log的文件路径
relay_log=relay-log
#默认值hostname-relay-bin.index
relay_log_index=relay-log.index

3、使用有复制权限的用户账号连接至主服务器,并启动复制线程

使用show master status; 查看

在这里插入图片描述

4、创建连接

mysql> change master to master_host='10.70.20.25',master_user='repluser',master_password='123456',master_log_file='master_bin.000005',MASTER_LOG_POS=139325,get_master_public_key=7;
需要自己变更的有:
master_host,master_password,master_log_file(这是上面查看状态的file),MASTER_LOG_POS(这个是Position),get_master_public_key(这个是配置主数据库的id)

在Mysql8版本在后面添加这句get_master_public_key=7,解决的是这个问题 ----》Slave_IO_Runnning :一直是Connection的话

5、开启,啥看状态

mysql> START SLAVE;
mysql> SHOW SLAVE STATUS\G;

在这里插入图片描述
这样既可


总结

提示:这里对文章进行总结:

如果连接不成功的话,记得开放指定端口的防火墙,或者直接将防火墙关闭(在测试的阶段)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
MySQL主从复制MySQL数据库中非常重要的功能之一,它可以实现将一个MySQL服务器上的数据自动复制到其他MySQL服务器上,从而实现数据的备份、负载均衡、分布式数据处理等功能。下面是MySQL主从复制的原理详解: 1. 主从服务器的配置 MySQL主从服务器的配置分为两个步骤:一是在主服务器上开启二进制日志(Binary Log),二是在从服务器上设置从属关系(Slave)。 开启二进制日志的命令是: ``` mysql> SET GLOBAL binlog_format = 'ROW'; mysql> SET GLOBAL log_bin = 'mysql-bin'; ``` 设置从属关系的命令是: ``` mysql> CHANGE MASTER TO -> MASTER_HOST='master_host_name', -> MASTER_USER='replication_user_name', -> MASTER_PASSWORD='replication_password', -> MASTER_LOG_FILE='recorded_log_file_name', -> MASTER_LOG_POS=recorded_log_position; ``` 2. 主服务器的操作 在主服务器上,所有的写操作都会被写入到二进制日志中,这些日志文件会被保存在主服务器上。 3. 从服务器的操作 在从服务器上,首先要连接到主服务器上,获取二进制日志文件并进行解析,然后将解析后的内容应用到自己的数据库中。从服务器会定期地从主服务器上获取新的二进制日志文件,并更新自己的数据。 4. 数据同步的方式 MySQL主从复制有两种同步方式:基于语句的复制和基于行的复制。基于语句的复制是指从服务器将主服务器上执行的SQL语句复制到自己的数据库中,这种方式比较简单,但是有些复杂的SQL语句可能会导致从服务器上的数据不一致。基于行的复制是指从服务器将主服务器上每一行数据的变化复制到自己的数据库中,这种方式比较安全,但是需要更多的网络带宽和存储空间。 5. 数据库的故障处理 如果主服务器发生故障,从服务器可以自动切换到其他可用的主服务器上,尽量避免数据的丢失和服务的中断。 以上就是MySQL主从复制的原理详解

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值