1、主从复制架构和原理1.1服务性能扩展方式 Scale Up,向上扩展,垂直扩展
Scale Out,向外扩展,横向扩展1.2MySQL的扩展 读写分离 复制:每个节点都有相同的数据集,向外扩展,基于二进制日志的单向复制
1.3复制的功用
@数据分布 @负载均衡读 @备份 @高可用和故障切换 @MySQL升级测试
1.4主从复制架构
一主一从复制架构
一主多从复制架构
1.5主从复制原理
主从复制相关线程
主节点:
dump Thread:为每个Slave的I/O Thread启动一个dump线程,用于向其发送binary log events
从节点:
I/O Thread:向Master请求二进制日志事件,并保存于中继日志中
SQL Thread:从中继日志中读取日志事件,在本地完成重放
跟复制功能相关的文件:
master.info:用于保存slave连接至master时的相关信息,例如账号、密码、服务器地址等
relay-log.info:保存在当前slave节点上已经复制的当前二进制日志和本地relay log日志的对应关系
mariadb-relay-bin.00000#: 中继日志,保存从主节点复制过来的二进制日志,本质就是二进制日志
范例: 中继日志
[root@slave ~]#file /var/lib/mysql/mariadb-relay-bin.000001
/var/lib/mysql/mariadb-relay-bin.000001: MySQL replication log, server id 18MySQL V5+, server version 10.3.17-MariaDB-log
[root@slave~]#mysqlbinlog /var/lib/mysql/mariadb-relay-bin.000001|head
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;/*!40019 SET @@session.max_insert_delayed_threads=0*/;/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER/*!*/;
# at4#200615 17:58:48 server id 18 end_log_pos 256 CRC32 0x7bd00c79Start:
binlog v4, server v 10.3.17-MariaDB-log created 200615 17:58:48BINLOG'WEbnXg8cAAAA/AAAAAABAAAAAAQAMTAuMy4xNy1NYXJpYURCLWxvZwAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAEzgNAAgAEgAEBAQEEgAA5AAEGggAAAAICAgCAAAACgoKAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
1.6主从复制特点
@异步复制 @主从数据不一致比较常见
1.7各种复杂架构
@一master/一slave @一主一从 @从服务器还可以再有从服务器 @Master/Master
@一从多主:适用于多个不同数据库 @环状复制
2、实现主从复制配置
参考官网
https://mariadb.com/kb/en/library/setting-up-replication/
https://dev.mysql.com/doc/refman/5.5/en/replication-configuration.html
主节点配置:
(1) 启用二进制日志
[root@centos8 ~]# vim /etc/my.cnf.d/mariadb-server.cnf
[mysqld]
log_bin
(2) 为当前节点设置一个全局惟一的ID号
[mysqld]
server-id= #设置的IP最后一位log-basename=master #可选项,设置datadir中日志名称,确保不依赖主机名 文件前缀
server-id的取值范围
1 to 4294967295 (>= MariaDB 10.