复制相关总结

第一章 复制的概念及用途
第二章 基于二进制日志的复制的搭建
第三章 基于二进制日志的复制的问题及处理
第四章 基于GTID的复制的搭建
第五章 基于GTID的复制的问题及处理
第六章 复制所涉及的相关参数



文章目录

  • 复制相关总结
  • 一、概述
  • 二、复制的搭建
  • 1.配置主库(源)
  • 2.迁移数据
  • 3.配置从库(副本)
  • 4.开启复制
  • 总结



一、概述

作为源(数据库更改的源)运行的 MySQL 实例将更新和更改作为“事件”写入二进制日志。根据记录的数据库更改,二进制日志中的信息以不同的日志格式存储。副本配置为从源读取二进制日志并在副本的本地数据库上执行二进制日志中的事件。

每个副本都会收到一份二进制日志全部内容的副本。副本有责任决定应该执行二进制日志中的哪些语句。除非您另外指定,否则源二进制日志中的所有事件都在副本上执行。如果需要,您可以将副本配置为仅处理适用于特定数据库或表的事件。

每个副本都会记录二进制日志坐标:它从源读取和处理的文件名和文件中的位置。这意味着多个副本可以连接到源并执行同一二进制日志的不同部分。由于副本控制此过程,因此单个副本可以与服务器连接和断开连接,而不会影响源的操作。此外,由于每个副本都记录了二进制日志中的当前位置,因此副本可能会断开连接,重新连接,然后继续处理。

源和每个副本必须配置一个唯一的 ID(使用server_id系统变量)。此外,每个副本都必须配置有关源主机名、日志文件名和该文件中位置的信息。可以使用CHANGE MASTER TO副本上的语句从 MySQL 会话中控制这些详细信息。详细信息存储在副本的连接元数据存储库中,它可以是文件或表

二、复制的搭建

1.配置主库(源)

1.1 配置文件(基础版)

[mysqld]
server-id = 1
log-bin=/home/mysql/3306/mysql-bin
binlog_format=row

1.2 配置文件解释:

  • server-id: 服务器 ID,同一复制拓扑中必须唯一,必须是 1 和 (2**32 )-1之间的正整数,在非0的情况下可以在线修改
  • log-bin: 开启二进制并配置二进制的路径和名称
  • binlog_format: 二进制日志的格式,官方主推的是基于行的复制,还可以设置基于语句的复制或者混合模式

2.迁移数据

2.1 简介
如果源(主库)数据量少,且保留了从创建实例以来的所有二进制日志,则不需要迁移,负责需要将源数据迁移到副本上

2.2 数据迁移方式
2.2.1 逻辑迁移

  • mysqldump
  • mysqlpump
  • mydumper

2.2.2 物理迁移

  • 迁移数据文件
  • 使用xtrabackup迁移

2.3 mysqldump的演示示例
2.3.1 命令展示

mysqldump -hlocalhost -P3306 -A --master-data -uroot -p >test.sql

–master-data 是记录在文件中加入change master to 语句来指定dump开始时的二进制日志文件和pos点位置

3.配置从库(副本)

3.1 配置文件(基础版)

[mysqld]
server-id = 2

4.开启复制

主库操作
创建复制用户

mysql> CREATE USER 'repl'@'%.example.com' IDENTIFIED BY 'password';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%.example.com';

从库操作:
4.1 方式1

  • 4.1.1 还原数据
mysql -h****** -P**** -uroot -p <test.sql
  • 4.1.2 查看sql文件,找到对应的二进制文件和pos点
head -n 30 test.sql

找到如下图所示的语句

centos mysql二进制日志文件位置_二进制日志

  • 4.1.3 配置主从链路
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=404,master_host='******',master_port=3306,master_user='****',master_password='****';
  • 4.1.4 启动复制
start slave;

4.2 方式2

  • 4.2.1 配置主从链路
CHANGE MASTER TO master_host='******',master_port=3306,master_user='****',master_password='****';
  • 4.2.2 还原数据
mysql -h****** -P**** -uroot -p <test.sql

因为文件里有change master to 语句,所以这里在还原数据的时候便已经定位了日志和pos点

  • 4.2.3 启动复制
start slave;

4.3 常用的一些操作
(注:以下操作皆在从库执行)

  • 4.3.1 查看复制状态
show slave status\G
  • 4.3.2 停止复制
stop slave;
# 也可以分别停止io线程和sql线程,如下所示
stop slave io_thread;
stop slave sql_thread;
  • 4.3.3 清空主从链路配置
reset slave all; # 这时候show slave status则为空

总结

这是基于二进制日志的主从复制的最基础的配置,后续总结一些其他操作和遇到的问题
上一篇:复制的概念及用途