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

参数名

相关推荐
LilySesy22 分钟前
ABAP+如果在join的时候需要表1的字段某几位等于表2的字段的某几位,需要怎么做?
服务器·前端·数据库·sap·abap·alv
口_天_光健26 分钟前
制造企业的数据目录编写
大数据·数据库·数据仓库·数据分析
mpHH28 分钟前
postgresql pg_upgrade源码阅读--doing
数据库·postgresql
苦学编程的谢1 小时前
Redis_6_String
数据库·redis·缓存
秋已杰爱1 小时前
技术准备十:etcd
数据库·etcd
研究司马懿1 小时前
【ETCD】ETCD集群部署(TLS)
数据库·chrome·云原生·自动化·运维开发·etcd
行者游学1 小时前
ETCD 备份脚本
数据库·etcd
研究司马懿1 小时前
【ETCD】ETCD单节点二进制部署(TLS)
数据库·chrome·云原生·运维开发·etcd·argocd·gitops
行者游学1 小时前
ETCD 压力测试脚本
数据库·压力测试·etcd
春生野草2 小时前
SpringBoot配置文件
java·数据库·spring boot