复制监控和Binlog Server

怎么判断复制有没有延迟

  • show slave status
    • 比较Master_Log_File和Relay_Master_Log_File一致不,不一致延迟大于一个binlog,已经比较大了
    • 上面一致在比较Read_Master_Log_Pos和Exec_Master_Log_Pos差多少,如果一致说明没有延迟,差距比较大说明延迟大
    • 没有延迟->Master_Log_File==Relay_Master_Log_File&&Read_Master_Log_Pos==Exec_Master_Log_Pos
    • 多源复制要用gtid,用Retrieved_Gtid_Set和Executed_Gtid_Set去做对比,判断是否延迟
  • mysql高可用核心思想
    • 传统复制&GTID复制
      • 当主服务器crash之后,检测从库是否复制完成
      • 复制完成的标志是Master_Log_File==Relay_Master_Log_File&&Read_Master_Log_Pos==Exec_Master_Log_Pos
      • 如果没有完成用while等待完成,保证sql_thread在运行,没运行要讲sql_thread启动
      • 上述等待时长过长可以直接报警
      • 下一步是所有复制完成的机器做冒泡排序,排序的东西是(Master_Log_File,Read_Master_Log_Pos)
      • 选出最靠前的一个从库,将其变成主库
      • 如果上述从库有大于一个相等的情况,可以自行做一个算法选择
    • GTID复制
      • 推荐用Retrieved_Gtid_Set和Executed_Gtid_Set去做对比
      • 选择执行靠前的做主库
    • 复制错误监控
      • 先看
        • Slave_IO_Running Man=Yes
        • Slave_SQL_Running Man=Yes
        • 如果为双Yes
          • Second_Behind_Master是否大于0
        • 如果为NO
          • Last_IO_Errno
          • Laster_IO_Error
          • Last_SQL_Errno
          • Laster_SQL_Error
    • Relay_Log_Space
      • 这个参数是大家在监控中可以忽略的
    • Relay_log什么时间会删除掉
      • 代码里的逻辑:在产生新的Relay_log时,会把执行完的Relay_log删除
      • 或者从库上调用flush logs也会删除执行完的Relay_log
    • Until Condition
      • None
      • Master:指定Slave必须执行到Master的某个binlog及位置
      • Relay:指定Slave必须执行到Relay log里的指定的binlog及位置
      • SQL_Before_gtids:指定的某个GTID之前停下来 小于概念
      • SQL_After_gtids:指定的某个GTID之后,等于指定的GTID停下来 等于概念
    • start slave ... until
      • 指定同步到某个位置
      • 并行复制
        • start slave until SQL_AFTER_MTS_GAPS;
        • set global slave_parallel_workers=0; #停止并行复制
        • start slave sql_thread;
  • Last_IO_Errno & Laster_IO_Error
    • IO_thread的出错代码以及消息出错的时间位置可以结合:Last_SQL_Error_Timestamp方便在主库上找到位置
  • Last_SQL_Errno & Laster_SQL_Error
    • SQL_thread出错信息,如果这里有信息会输出到Error log中
    • 在5.7.2后这个信息会记录到performance_schema.replication_applier_status_coordinator中
    • 处理位置的时间可以参考:Last_SQL_Error_Timestamp
  • SQL_Delay
    • 和主库保持多少秒的延迟
  • Master_bind
    • 把复制绑定到某个指定的网卡上
  • Master_Server_id
  • Master_UUID
  • Retrieved_Gtid_Set
    • Slave获取到Master上的GTID,并不马上执行,有可能在Relay-log中存放.reset slave:change master to,relay-log-recover对这个值有影响
  • Executed_Gtid_Set
    • 表示已经执行写入Binlog中的GTID事务,和gtid_executed值相同
  • Auto_Position
    • Gtid中引入的新特性,自动补全空洞
  • Channel_name
    • 多源复制中哪个来源的标识

复制过滤

  • MySQL5.7可以动态的更改从库的过滤规则
CHANGE REPLICATION FILTER filter[, filter][, ...]

filter:
    REPLICATE_DO_DB = (db_list)
  | REPLICATE_IGNORE_DB = (db_list)
  | REPLICATE_DO_TABLE = (tbl_list)
  | REPLICATE_IGNORE_TABLE = (tbl_list)
  | REPLICATE_WILD_DO_TABLE = (wild_tbl_list)
  | REPLICATE_WILD_IGNORE_TABLE = (wild_tbl_list)
  | REPLICATE_REWRITE_DB = (db_pair_list)

db_list:
    db_name[, db_name][, ...]

tbl_list:
    db_name.table_name[, db_table_name][, ...]
wild_tbl_list:
    'db_pattern.table_pattern'[, 'db_pattern.table_pattern'][, ...]

db_pair_list:
    (db_pair)[, (db_pair)][, ...]

db_pair:
    from_db, to_db
- 建议:
    - binlog_format=row
    - 过滤规则在从库设置

binlog server

  • binlog放置在共享存储
  • 利用mysqlbinlog命令备份远程的Binlog
mysqlbinlog --read-from-remote-server --raw --host=xxx --port=xxx --user=xxx --password=xxx --stop-never mysql-bin.000001
  • read-from-remote-server|-R 指定需要备份的实现IP或Hostname
  • raw 指定存储格式是binary log format
  • host 需要有一个复制replication slave权限
  • port 端口号
  • stop-never 不要停,直到远程Server退出或是终止本连接
  • stop-never-slave-server-id 默认使用65535这个ID,如果冲突,可以声明
  • to-last-log 备份到哪个日志停止,如果stop-never声明了.这个参数会被忽略
  • 特别注意:
    • 使用raw连接master时,以4K为单位写入磁盘.并不能实时写入磁盘.和主库断开,flush logs都会实时把日志写入磁盘
    • 如果不使用raw参数时,接收的日志以文本格式写入(意义不大)

复制结构注意事项

  • 复制结构数据是不是一致性
  • 基于半同步复制,性能方面怎么样
  • 如何能高效并安全的使用复制结构
    • 基于5.7增强半同步
    • 将binlog放到存储上
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容

  • 复制中的重要参数 master上的参数 log-bin server-id #必须 建议端口+ip serve...
    显卡hg阅读 714评论 0 0
  • 环境 操作系统:CentOS-6.5-x86_64-bin-DVD1.iso MySQL版本:mysql-5.6....
    宇信智臻sy阅读 2,618评论 0 6
  • 小时候盼过年,日日盼夜夜盼,盼着过年穿新衣,吃好吃的。那时候很不理解为什么过年这样一件美好的事情,叫“年关”呢?那...
    玟心亲子频道阅读 278评论 2 0
  • 从小到大,也不知道为什么特别喜欢看美人鱼的故事。刚刚刷完十几集的“蓝”,这是一部关于人与美人鱼之间的爱情,关于转世...
    零点篮球阅读 440评论 0 0
  • 我啊,是家里最小的孩子,也是一个幸运儿,在一个充满爱的家庭中出生,成长。请注意,我说得不是一个“完美”的家,而是一...
    彩虹心理频道阅读 1,626评论 0 0