mysql主从复制

一、概述

将主库的数据变更同步到从库,从而保证主库和从库数据一直。
主要功能:数据备份、失败迁移、读写分离、降低单库读写压力

二、原理

1. 主库会把数据变更记录在二进制日志文件Binlog中。
2. 从库连接主库,读取Binlog日志,并写入自身中继日志relaylog。
3. slave重做中继日志,将改变反映她自己的数据。

img

三、搭建

准备服务器

搭建两台mysql服务器,参照(https://www.cnblogs.com/xiaodunan/p/17381181.html)

配置主库

  1. 修改配置文件/etc/my.cnf
vim /etc/my.cnf
#mysql服务ID,保证整个集群环境中唯一,取值范围:1-2^32-1,默认为1
server-id=1
#是否只读,1代表只读,0代表读写
read-only=0
#忽略的数据,指不需要同步的数据库
#binlog-ignore-db=mysql
#指定同步的数据库
#binlog-do-db=db01
  1. 启动MySQL服务器
systemctl restart mysql
  1. 登录mysql,创建远程连接的账号,并授予主从复制权限
mysql -uroot -p
#创建xdn用户,并设置密码,该用户可在任意主机连接该MySQL服务
create user 'xdn'@'%' identified with mysql_native_password by 'xiaodunan123';
#为'xdn'@'%'用户分配主从复制权限,'*.*'表示'所有库.所有表'
grant replication slave on *.* to 'xdn'@'%';    
  1. 通过指令,查看二进制日志坐标
show master status;

img

字段含义说明:
file:从哪个日志文件开始推送日志文件
position: 从哪个位置开始推送日志
binlog_ignore_db:指定不需要同步的数据库

配置从库

  1. 修改配置文件/etc/my.cnf
#mysql服务ID,保证整个集群环境中唯一,取值范围:1-2^32-1,默认为1
server-id=2
#是否只读,1代表只读,0代表读写
read-only=1
  1. 重新启动MySQL服务
systemctl restart mysql
  1. 登录mysql,设置 主库配置
mysql -uroot -p

change replication source to source_host='192.168.206.134',source_user='xdn',source_password='xiaodunan123',source_log_file='binlog.000004',source_log_pos=650;

上述是8.0.23中的语法,如果mysql是8.0.23之前的版本,执行如下SQL:

change master to master_host='192.168.206.134',master_user='xdn',master_password='xiaodunan123',master_log_file='binlog.000004',master_log_pos=650;
参数名 含义 8.0.23之前
source_host 主库IP地址 master_hsot
source_user 连接主库的用户名 master_user
source_password 连接主库的密码 master_password
source_log_file binlog日志文件名 master_log_file
source_log_pos binlog日志文件位置 master_log_pos
  1. 开启同步操作
start replica; #8.0.22之后
start slave; #8.0.22之前

测试

  1. 在主库上创建数据库,表,并插入数据
create table tb_user (  
    id int(11) primary key not null auto_increment, 
    name varchar(50) not null, 
    sex varchar(1) ) 
    engine=innodb default charset=utf8mb4; 

insert into tb_user(id,name,sex) values(null,'xdn','1'),(null,'zjx','0');
  1. 在主库和从库中分别查看表,可以看到从库已从主库同步到了数据
show tables;

img

select * from tb_user;

img

posted @ 2023-05-09 10:45  小肚腩吖  阅读(13)  评论(1编辑  收藏  举报