MySQL主从复制binlog实现

1 引言

MySQL主从复制的意义在于实现数据的同步和备份,保证数据的安全性和高可用性。主从复制的主要好处包括:

  • 数据备份:从服务器上可以有一个备份数据库,实现数据的备份和故障转移。
  • 负载均衡:通过将查询分配到不同的服务器上,可以分散数据库负载。
  • 读写分离:主服务器负责处理写操作,从服务器处理读操作,减少主服务器的压力。
  • 高可用和故障转移:当主服务器出现故障时,可以快速切换到从服务器继续提供服务。
  • 扩展性:通过增加从服务器可以提高系统的扩展性。

2 准备工作

如图,准备两个MySQL数据库:

  • 主库:33066,从库:33067。
  • 分别在主库和从库创建数据库:test。
  • 记录下主库支持远程访问的用户名和密码。
    在这里插入图片描述

3 修改配置文件

3.1 主库my.cnf

编辑主库my.cnf文件,在[mysqld]节点下添加配置,然后重启数据库。如下图。
在这里插入图片描述

# mysql服务ID,保证整个集群环境中唯一,取值范围1~2^32_1,默认为1。
server_id=1
# 是否只读,1代表只读,0代表读写
read_only=0
# 启动binlog日志,并指定文件名前缀
log_bin=mysql-bin
#超过5天定时清理,0表示Binlog文件永不过期,即不自动清除Binlog文件。
expire_logs_days=5
 #binlog每个日志文件大小
max_binlog_size=100m
# 忽略的数据,指不需要同步的数据库
binlog_ignore_db=test_ignore_001
binlog_ignore_db=test_ignore_002
# 指定同步的数据库
binlog_do_db=test

3.2 从库my.cnf

编辑从库my.cnf文件,在[mysqld]节点下添加配置,然后重启数据库。如下图。
在这里插入图片描述

# mysql服务ID,保证整个集群环境中唯一,取值范围1~2^32_1,和主库不一样即可。
server_id=2
# 是否只读,1代表只读,0代表读写
read_only=1
# 启动binlog日志,并指定文件名前缀
log_bin=mysql-bin
#超过5天定时清理,0表示Binlog文件永不过期,即不自动清除Binlog文件。
expire_logs_days=5
 #binlog每个日志文件大小
max_binlog_size=100m


4 从库同步配置

4.1 登录主库, 查看binlog日志文件名和位置。

在这里插入图片描述

show master status;

4.2 登录从库,进行同步配置

在这里插入图片描述

#8.0.22之前 
CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_USER='root', MASTER_PORT=3306,
MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000002',
MASTER_LOG_POS=624;
#8.0.22之后
CHANGE REPLICATION SOURCE TO SOURCE_HOST='127.0.0.1', SOURCE_USER='root', SOURCE_PORT=3306,
SOURCE_PASSWORD='123456', SOURCE_LOG_FILE='mysql-bin.000002',
SOURCE_LOG_POS=624;

4.3 登录从库,开启同步操作

在这里插入图片描述

#8.0.22之前 
start slave; 
#8.0.22之后
start replica; 

4.4 登录从库,查看主从同步状态

在这里插入图片描述

 #8.0.22之前
show slave status;
#8.0.22之后
show replica status; 

5 同步测试

5.1 在主库创建表t_user_a

可以看到从库同时也创建了t_user_a表。
在这里插入图片描述

CREATE TABLE `t_user_a` (
  `id` bigint(20) NOT NULL,
  `name` varchar(255) DEFAULT NULL,
  `phone` varchar(255) DEFAULT NULL,
  `create_time` datetime DEFAULT NULL,
  `update_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

5.2 在主库t_user_a表新增数据

可以看到从库同样也新增了这条数据,说明主从复制成功。在这里插入图片描述

INSERT INTO test.t_user_a
(id, name, phone, create_time, update_time)
VALUES(1, '张三', '1', '2021-01-01', '2021-01-01');
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值