MySQL主从复制

2022/1/3 2:07:58

本文主要是介绍MySQL主从复制,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1.主从复制架构和原理

1.1MySQL的主从复制

  • 读写分离
  • 复制:每个节点都有相同的数据集,向外扩展,基于二进制日志的单向复制

1.2复制的作用

  • 负载均衡读操作
  • 备份
  • 高可用和故障切换
  • 数据分布
  • MySQL升级

1.3复制架构

一主一从复制架构

 一主多从复制架构

1.4主从复制原理

主从复制相关线程
  • 主节点:
        dump Thread: 为每个 Slave 的 I/O Thread 启动一个 dump 线程,用于向其发送binary log         events
  • 从节点:
        I/O Thread: 向 Master 请求二进制日志事件,并保存于中继日志中         SQL Thread: 从中继日志中读取日志事件,在本地完成重放

  1.5主从复制特点

  • 异步复制: 客户端性能良好
  • 主从数据不一致比较常见

2.实现主从复制配置

2.1主节点配置:

(1) 启用二进制日志
[mysqld]
server-id=#          #建议设置为ip地址的最后一位
log_bin
(2) 为当前节点设置一个全局惟一的 ID 号
[mysqld]
server-id=#          #建议设置为ip地址的最后一位
log-basename=master  #可选项,设置datadir中日志名称,确保不依赖主机名
说明:
server-id 的取值范围 1 to 4294967295 (>= MariaDB 10.2.2) ,默认值为 1 0 to 4294967295 (<= MariaDB 10.2.1) ,默认值为 0 ,如果从节点为 0 ,所有 master都将拒绝此 slave 的连接

 (3) 查看从二进制日志的文件和位置开始进行复制

SHOW MASTER STATUS;
(4) 创建有复制权限的用户账号
GRANT REPLICATION SLAVE  ON *.* TO 'repluser'@'HOST' IDENTIFIED BY 'replpass';
#MySQL8.0 分成两步实现
mysql> create user repluser@'10.0.0.%' identified by '123456';
mysql> grant replication slave on *.* to repluser@'10.0.0.%';

2.2从节点配置:

(1) 启动中继日志
[mysqld]
server_id=#                        #为当前节点设置一个全局惟的ID号
log-bin
read_only=ON                       #设置数据库只读,针对supper user无效
relay_log=relay-log                #relay log的文件路径,默认值hostname-relay-bin
relay_log_index=relay-log.index    #默认值hostname-relay-bin.index
(2) 使用有复制权限的用户账号连接至主服务器,并启动复制线程
CHANGE MASTER TO
  MASTER_HOST='10.0.0.8',
  MASTER_USER='repluser',
  MASTER_PASSWORD='123456',
  MASTER_PORT=3306,
  MASTER_LOG_FILE='mariadb-bin.xxxxxx',
  MASTER_LOG_POS=#;



这篇关于MySQL主从复制的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程