美文网首页
MySQL复制原理及应用场景

MySQL复制原理及应用场景

作者: 古飞_数据 | 来源:发表于2022-10-06 16:01 被阅读0次

1.复制原理
2.复制使用场景
3.MySQL复制在5.7,8.0中的增强点

master:
dump_thread
Slave
IO_Threrad
写relay-log
SQL_Thread
读取relay-log

io_thread和主库时一个tcp的连接
5.7增强: 独立了dump_thread

https://dev.mysql.com/worklog/

5.5,5.6 不能用半同步

复制分类

       异步复制
       半同步复制(MySQL 5.5)
       增强半同步复制(MySQL 5.7)
       Binlog group commit(MySQL 5.7)
       MySQL Group Replication (MGR)复制(MySQL 5.7,MySQL 8.0)
       MySQL 8.0 writeset (io_thread)
Binlog format:
statement
row
mixed

GTID特点:
给每个事务做一个唯一的编号

小于5.1版本 用的是statement
delete from tb limit 1;
insert into(c1) values(uuid());
delete from tb order by c2 asc limit 1;

show global variables like 'binlog_format';
set global binlog_format='row';

问题,每5分钟产生一个binlog文件
排查方式
set global general_log=1;
flush logs

主从环境下,先改从库的format

在data目录下有一个auto.cnf文件记录了server-uuid

MGR在mutil-primary模式下是 区间段的uuid,不连续


stop slave; start slave;
pt-table-checksum

基于语句级的复制
binlog_format=statement

[mysqld]
binlog_format= 'statement'

·优点:
 Bin log文件较小
   日志是包含用户执行的原始SQL,方便统计和审计
   出现最早可binlog兼容较好
   Binlog方便阅读,方便故障修复

·缺点:
    存安全隐患,可能导致主从不一致
    对一些系统函数不能准复制或是不能复制
- Load_file()
- uuid()
- User()
- Found_rows ()
- sysdate ()
create table wubx(id int not null, c1 varchar(128),primary key(id));
insert into wubx(id,c1) values(1,'abc');
insert into wubx(id,c1) values(2,'uuid');
show master status;
[mysqld]
binlog_format= 'row'


·解决办法:使用Row格式的binlog
·优点:
    相比STATEMENT更加安全的复制格式
    在某些情况下复制速度更快(SQL复杂,表有主建)·
    系统的特殊函数也可以复制
    更少的锁

·缺点:
Binary log 比较大(支持binlog_row_image)
单语句更新[删除]表的行数过多,会形成大量binlog
无法从bin log看见用户执行的SQL (Event:
binlog_row_query_log_events,记录用户的query)

binlog是一个二进制文件 单位event,gtid event

1.GTID
2.query--> begin
3.rows_query -->原生SQL     可省略
4.table_map --> table_id(table name)
5.write_rows  --> event
6.Xid             --> commit

其中第三个步骤可以省略

sql_thread在row格式下对索引的利用


image.png

slave_rows_search_algorithms 8.0.18 此参数没有了

资料

https://blog.csdn.net/n88Lpo/article/details/100144083

2.复制使用场景

●主库压力较大抗不住
●把读压力分担一部分到从库上
●业务高峰数据库连接数太多
●例如高峰的认证,只需要把这个业务分拆到从库上
●有一些大的SQL出现不多,不好优化->专用从库
●后面的统计分析类的SQL
●利用从库做高可用切换

利用主从复制:实现多IDC架构
误区
      所有的SQL都要读写分离
      主从结构数据是不一致的
      过分担心主从数据延迟

3.MySQL复制在5.7,8.0中的增强点

MGR,GTID

5.7版本增强

●在线支持传统复制到GTID复制切换
●在线复制过滤规则变更
●可以利用SQL从PS库获取复制信息
●多线程复制
●半同步复制线程改进
●多源复制

8.0版本改进

●行级(write-set)并行复制
●binlog_transaction_dependency_tracking
      COMMIT_ORDER
      WRITESET
      WRITESET SESSION
●COMMIT_ ORDER
●基于锁的并发策略
●WRITESET
基于主键的并发策略,可以并发的执行同一个Session内的事务,具有最好的性能。
●WRITESET_ SESSION
●基于主键的并发策略,不可以并发执行同一-个Session内的事务。

binlog_transaction_dependency_tracking = writeset
transaction_write_set_extraction=xxhash64
binlog_transaction_dependency_history_size=25000

复制延时

select * from performance_schema.replication_applier_status_by_worker\G

original_commit_timestamp             原始主库提交的时间
immediate_commit_timestamp        当前节点执行时间
针对多源复制
       定制每个channel的过滤规则
配置Filter
       --replication-do-db=channel:database_name
       CHANGE REPLICATION FILTER REPLICATE_DO_DB=(db1) FOR CHANNEL channel_1;
监控Filter的配置和使用情况
       Performance_schem.replication_applier_filters

相关文章

  • MySQL复制原理及应用场景

    1.复制原理2.复制使用场景3.MySQL复制在5.7,8.0中的增强点 master:dump_threadSl...

  • 问题册

    MySql触发器主从复制索引设置锁机制存储引擎 Web跨域JSONP原理及应用 HTTP完成《HTTP图解》 PH...

  • msyql 主从复制原理

    mysql (master/slave)复制原理及配置 复制配置 2.5、添加新slave服务器假如master已...

  • Mysql-Master-Slave主从配置(1)

    0. Thanks To mysql (master/slave)复制原理及配置 Last_IO_Error: e...

  • mysql 主从基础知识笔记

    mysql 主从同步 mysql 主从,其实也就是mysql 复制了, mysql 主从复制的原理就是从服务器复制...

  • 思科设备静态路由配置

    1.静态路由的工作原理及应用场景 2.默认路由的应用场景及配置方法 3.静态浮动路由的应用场景及配置方法 正常情况...

  • 主从复制 & MHA

    一,mysql主从复制 (1)场景一(主从复制 _ 全新环境下) (2)场景二(主从复制 _ mysql已经使用一...

  • MySQL主从复制原理、半同步操作步骤及原理(摘选)

    MySQL主从复制原理、半同步操作步骤及原理 转载2016年09月21日 11:51:23 7195 1.1 企业...

  • TimesTen

    TimesTen原理及应用场景 TimesTen In-Memory Database Release Notes...

  • Redis缓存总结

    Redis 原理及应用(1)--数据类型及底层实现方式redis学习(八)——redis应用场景 --不错哦 Re...

网友评论

      本文标题:MySQL复制原理及应用场景

      本文链接:https://www.haomeiwen.com/subject/zndmartx.html