MySQL--主从复制

主从复制

主从复制是指将主数据库的DDL和DML操作通过二进制日志传到从库服务器中,然后在从库上对这些日志重新执行(也叫重做),从而使得从库和主库的数据保持同步。

MySQL支持一台主库同时向多台从库进行复制,从库同时也可以作为其他从服务器的主库,实现链状复制。

MySQL复制的有点主要包含以下三个方面:

  1. 主库出现问题,可以快速切换到从库提供服务。
  2. 实现读写分离,降低主库的访问压力。
  3. 可以在从库中执行备份,以避免备份期间影响主库服务。
原理

MySQL的主从复制原理如下

从上图来看,复制分成三步:

Master主库在事务提交时,会把数据变更记录在二进制日志文件Binlog中。

从库读取主库的二进制日志文件Binlog,写入到从库的中继日志RelayLog。

slave重做中继日志中的事件,将改变反映它自己的数据。

搭建

服务器准备

主库配置

1.修改配置文件/etc/my.cnf

bash 复制代码
#mysql服务ID,保证整个集群环境中唯一,取值范围:1-232-1,默认为1
server-id=1
#是否只读,1代表只读,0代表读写
read-only=0
#忽略的数据,指不需要同步的数据库
#binlog-ignore-db=mysql
#指定同步的数据库
#binlog-do-db=db01

2.重启MySQL服务器

bash 复制代码
systemctl restart mysqld

3.登录mysql,创建远程连接的账号,并授予主从复制权限

bash 复制代码
#创建itcast用户,并设置密码,该用户可在任意主机连接该MySQL服务
CREATEUSER'itcast'@'%'IDENTIFIEDWITH mysql_native_passwordBY'Root@123456';
#为itcast'@'%'用户分配主从复制权限
GRANT REPLICATIONSLAVE ON**TO'itCaSt'@'%';

4.通过指令,查看二进制日志坐标

bash 复制代码
show master status;

字段含义说明:

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

从库配置

1.修改配置文件/etc/my.cnf

bash 复制代码
#mysql服务ID,保证整个集群环境中唯一,取值范围:1-232-1,和主库不一样即可
server-id=2
#是否只读,1代表只读,0代表读写
read-only=1

2.重新启动MySQL服务

bash 复制代码
systemctl restart mysqld

3.登录mysql,设置主库配置

bash 复制代码
CHANGE REPLICATION SOURCE TO SOURCE_HOST='xXX.XXX', SOURCE_USER='xxX', SOURCE_PASSWORD='xxX', SOURCE_LOG_FILE='xXx', SOURCE_LOG_POS=XXX;

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

bash 复制代码
CHANGE MASTER TO MASTER_HOST='xXX.XXX.XXX.XXX', MASTER_USER='xxX', MASTER_PASSWORD='xXX', MASTER_LOG_FILE='xXX', MASTER_LOG_POS=XXX

参数名

相关推荐
宇钶宇夕36 分钟前
S7-1200 系列 PLC 中 SCL 语言的 PEEK 和 POKE 指令使用详解
运维·服务器·数据库·程序人生·自动化
绿蚁新亭40 分钟前
Spring的事务控制——学习历程
数据库·学习·spring
scilwb2 小时前
占用栅格地图数据集
数据库
时序数据说3 小时前
时序数据库的存储之道:从数据特性看技术要点
大数据·数据库·物联网·开源·时序数据库·iotdb
鸥梨菌Honevid3 小时前
QT解析文本框数据——概述
数据库·qt·mysql
今天又得骑车了4 小时前
一、MySQL 8.0 之《EXPLAIN ANALYZE 执行计划》
数据库·mysql·database
icecreamstorm4 小时前
MySQL 事务 最全入门
后端·mysql
weixin_420571874 小时前
Windos服务器升级MySQL版本
运维·服务器·mysql
万能小锦鲤4 小时前
《Java EE与中间件》实验三 基于Spring Boot框架的购物车
java·spring boot·mysql·实验报告·购物车·文档资源·java ee与中间件
Hoking4 小时前
CentOS7环境安装包部署并配置MySQL5.7
mysql