爱可生南区交付服务部 DBA 团队成员,主要负责 MySQL 故障处理,MySQL 高可用架构改造,OceanBase 相关技术支持。爱好足球,羽毛球。
多年DBA工作,也遇到很多数据库疑难杂症,其处理和分析值得记录和分享,准备写一个系列文章,这是第1篇。
旧环境配置差一点(新环境的1/4的内存和CPU), 还是机械盘, 故想迁移到新环境
问题背景:在配置好的mysql主备环境上,正常运行状态下,两台服务器断电,上电后报错如下:
MySQL支持单向、异步复制,复制过程中一个服务器充当主服务器,而一个或多个服务器充当从服务器
例如:如果使用 Navicat、PHPMyAdmin 之类的可视化工具,可以直接点击转储 SQL 文件,或者导出 SQL 文件之类的功能。
为了应对事务一致性要求很高的系统对高可用数据库系统的要求,并且增强高可用集群的自管理能力,避免节点故障后的failover需要人工干预或其它辅助工具干预,MySQL5.7新引入了Group Replication,用于搭建更高事务一致性的高可用数据库集群系统。MGR是基于Paxos协议的Group Replication搭建的系统,不仅可以自动进行failover,而且同时保证系统中多个节点之间的事务一致性,避免因节点故障或网络问题而导致的节点间事务不一致。此外还提供了节点管理的能力,真正将整个集群做为一个整体对外提供服务。
由于前面前面已经介绍过了mycat的安装以及配置,这里就不在细说,如果下面对mycat的操作不是很清楚,可以看上一篇文章。
一旦使用 MySQL 的复制功能,就很大可能会碰到主备切换的情况。也许是为了迭代升级服务器,或者是主库出现问题时,将一台备库转换成主库,或者只是希望重新分配容量。不过出于什么原因,都需要将新主库的信息告诉其它备库。
xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品。xtrabackup有两个主要的工具:xtrabackup、innobackupex,xtrabackup只能备份InnoDB和XtraDB两种数据表,且只备份数据文件(.ibd),并不备份数据表结构文件(.frm),同时不能备份MyISAM数据表,所以使用xtrabackup恢复的时候,你必须有对应表结构文件(.frm);innobackupex-1.3.1则封装了xtrabackup,是一个脚本封装,所以能同时备份处理InnoDB和MyISAM,但在处理MyISAM时需要加一个读锁。
在前面的第24、25和26篇文章中,介绍了 MySQL 主备复制的基础结构,但这些都是一主一备的结构。
宝塔现在知名度很高了,但是软件商店里却没有实现数据库主主热备的插件,尝试了MySQL主从复制(重构版)插件,但是主从还要在网站代码方面做自改才能真正上线使用,对于我这种业余选手来说满足不了需求,于是各种看教程摸索了一天终于实现了MySQL主主复制的需求,两个数据库各自为主,互相复制。再就是可视化操作对于业余选手真的很方便,下面的教程尽量可视化。也是博主想记录一下方便下次部署的时候不需要找东找西。
内容为慕课网的《高并发 高性能 高可用 Mysql 实战》视频的学习笔记内容和个人整理扩展之后的笔记,这一节讲述搭建Mysql三高架构中的复制,Mysql的复制在实战中实现比较简单,但是Mysql针对复制的内部优化却是一直在进行,这样说明这是值得重视和学习的内容,所以本节针对复制这一特征介绍相关的理论内容。
转:http://blog.csdn.net/qq394829044/article/details/53203645
在上一篇文章中,我和你介绍了一主多从的结构以及切换流程。今天我们就继续聊聊一主多从架构的应用场景:读写分离,以及怎么处理主备延迟导致的读写分离问题。
不同场景下 MySQL 的迁移方案 一 目录 一 目录 二 为什么要迁移 三 MySQL 迁移方案概览 四 MySQL 迁移实战 4.1 场景一 一主一从结构迁移从库 4.2 场景二 一主一从结构迁移指定库 4.3 场景三 一主一从结构双边迁移指定库 4.4 场景四 一主一从结构完整迁移主从 4.5 场景五 双主结构跨机房迁移 4.6 场景六 多实例跨机房迁移 五 注意事项 六 技巧 七 总结 二 为什么要迁移 MySQL 迁移是 DBA 日常维护中的一个工作。迁移,究其本义,无非是把实际存在的物体挪走,保
原文出处: 温国兵(@dbarobin) 一 为什么要迁移 MySQL 迁移是 DBA 日常维护中的一个工作。迁移,究其本义,无非是把实际存在的物体挪走,保证该物体的完整性以及延续性。就像柔软的沙滩上,两个天真无邪的小孩,把一堆沙子挪向其他地方,铸就内心神往的城堡。 生产环境中,有以下情况需要做迁移工作,如下: 磁盘空间不够。比如一些老项目,选用的机型并不一定适用于数据库。随着时间的推移,硬盘很有可能出现短缺; 业务出现瓶颈。比如项目中采用单机承担所有的读写业务,业务压力增大,不堪重负。如果 IO 压
许春植(Luocs) (阿里巴巴高级数据库管理员,7年以上数据库运维管理经验,擅长MySQL、Oracle及MongoDB数据库,目前主要研究并建设MongoDB一套完整的运维体系) 编辑手记:感谢许春植授权独家转载其精华文章,这是系列文章之一,与大家分享其个人学习与经验总结,编辑时略有修订与节略。也欢迎读者朋友向我们投稿。 首先我们看一下数据库以及常看到的 HA 以及分布式架构方案: 数据库类型架构方案架构类型MySQLKeepalived+MySQL ReplicationHA MHA+MySQL
先在docker下创建几个 mysql server,docker-compose.xml 如下:
1、在业务复杂的系统中,有这么一个情景,有一句sql语句需要锁表,导致暂时不能使用读的服务,那么就很影响运行中的业务,使用主从复制,让主库负责写,从库负责读,这样,即使主库出现了锁表的情景,通过读从库也可以保证业务的正常运作
先说说不是那么重要的LocalBinlogEventParser,它主要用于本地binlog文件的复制的场景。例如将mysql的binlog文件拷贝到canal的机器上进行解析。很明显这是一个离线的场景,听起来似乎很少用到,实际也确实如此。
一、日志 1.redo、undo 2.mysql主要的日志:1、错误日志2、查询日志(普通查询日志和慢查询日志)3、二进制日志
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。 Fayson的github:https://github.com/fayson/cdhproject 提示:代码块部分可以左右滑动查看噢 1.文档编写目的 本文主要介绍由Cloudera Manager管理的CDH集群的角色划分。实际部署你可能还需要考虑工作负载的类型和数量,真实要部署的哪些服务,硬件资源,配置,以及其他因素。当你使用Cloudera Manager的安装向导来安装CDH时,CM会根据主机的可用资源,自动的分配角色到各台主机,边
MySQL主备是最简单的MySQL集群,和单机MySQL相比,只多了一个用于同步备份的MySQL。
sysbench /usr/share/sysbench/oltp_read_write.lua --mysql-host=10.1.1.201 --mysql-port=3320 --mysql-user=root --mysql-password='xxx@2021' --mysql-db=ww_test --tables=10 --table_size=100000 --mysql_storage_engine=Innodb --threads=2 --time=3000 --report-interval=10 --rand-type=uniform run
🧑个人简介:大家好,我是 shark-Gao,一个想要与大家共同进步的男人😉😉
Fayson在之前的文章中介绍过《CDH网络要求(Lenovo参考架构)》,《如何为Hadoop集群选择正确的硬件》和《CDH安装前置准备》,而我们在搭建Hadoop集群时,还一件很重要的事就是如何给集群分配角色。
前几天碰到一个看起来有些奇怪的例子,今天抽空把分析过程整理了一下。 有一主一备的一套测试环境,之前环境在我手里,交给另外一个同事之后,重新搭建了dataguard,我检查了一圈,发现都没有问题,然后过了一个星期的 样子,无意中再次查看的时候,发现这个备库竟然在dg broker中的状态是disable,当然我也不能看到这个现象就反问同事,说当时dataguard怎么有这种低级操作问题。我想了想,根据我的印 象,当时也确实是搭建成功了。这些天这个主库也从来没有任何的操作,zabbix也一直没有相关的报警,这
洪嘉铭,就职于世纪证券信息技术部,目前负责运维、监控系统的相关架构设计、开发工作。对操作系统、网络编程、服务器后台架构有丰富实践经验。
一套MySQL主-备-备-备数据库,其中的备库升级到主库之后,系统监控报警 Seconds_Behind_Master 瞬间为0,瞬间为数十万秒。第一感觉是遇到了复制风暴--不同于主备server_id 的log event在主备库之间无限循环复制。升级的逻辑图如下:
1.mysql复制概念 指将主数据库的DDL和DML操作通过二进制日志传到复制服务器上,然后在复制服务器上将这些日志文件重新执行,从而使复制服务器和主服务器的数据保持同步。复制过程中一个服务器充当主服务器(master),而一个或多个其它服务器充当从服务器(slaves)。主服务器将更新重新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环。这些日志可以记录发送到从服务器的更新。当一个从服务器连接主服务器时,它通知主服务器、从服务器在日志中读取的最后一次成功更新的位置。从服务器接受从那时起发生的任何
MySQL集群具备高可用、可扩展、以管理、低成本的特点。生产环境中MySQL部署会使用Mysql 主从架构或Mysql双主互备架构。同时采用keepalived来实现mysql的自动故障切换。两台Mysql服务器互为主从,但同一时刻只有一个Mysql服务器可读写,另一个Mysql服务器只能进行读操作,保证数据的一致性。MySQl主主同步就是两台机器互为主的关系,在任何一台机器上写入都会同步至备端。
MySQL 本身通过 show slave status 提供了 Seconds_Behind_Master ,用于衡量主备之间的复制延迟,但是今天碰到了一个场景,发现 Seconds_Behind_Master 为 0 , 备库的 show slave status 显示 IO/SQL 线程都是正常的 , MySQL 的主库上的变更却长时间无法同步到备库上。如果没有人为干预,直到一个小时以后, MySQL 才会自动重连主库,继续复制主库的变更。 影响范围: MySQL , Percona , MariaD
系列文章: 1.MySQL主从复制 2.OneProxy实现MySQL读写分离
某客户的业务中有一张约4亿行的表,因为业务扩展,表中open_id varchar(50) 需要扩容到 varchar(500).
依托前文的解析来讲5.7中 GTID带来的运维改变,我想理解应该是更加深刻,这节主要讨论以下几个部分:
GitHub - tencent-wechat/phxsql: A high availability MySQL cluster that guarantees data consistency between a master and slaves.
一、双击热备介绍 1.基本概念 双机热备特指基于高可用系统中的两台服务器的热备(或高可用),双机高可用按工作中的切换方式分为:主-备方式(Active-Standby方式)和双主机方式(Active-Active方式),主-备方式即指的是一台服务器处于某种业务的激活状态(即Active状态),另一台服务器处于该业务的备用状态(即Standby状态)。而双主机方式即指两种不同业务分别在两台服务器上互为主备状态(即Active-Standby和Standby-Active状态)。 2.实现方式 a.基于共享存
MySQL 主备切换(Master-Slave Switching)是指在 MySQL 主从复制架构中,将从库(Slave)提升为主库(Master),原主库降为从库的过程。这种切换通常用于故障恢复、负载均衡、系统升级等场景。腾讯云混沌演练平台可对云 MySQL 进行主备切换故障注入,通过混沌实验帮助构建高韧性的系统。
从MySQL 5.6.5 开始新增了一种基于 GTID 的复制方式。通过 GTID 保证了每个在主库上提交的事务在集群中有一个唯一的ID。这种方式强化了数据库的主备一致性,故障恢复以及容错能力。 GTID (Global Transaction ID)是全局事务ID,当在主库上提交事务或者被从库应用时,可以定位和追踪每一个事务,对DBA来说意义就很大了,我们可以适当的解放出来,不用手工去可以找偏移量的值了,而是通过CHANGE MASTER TO MASTER_HOST='xxx', MASTER_AUTO_POSITION=1的即可方便的搭建从库,在故障修复中也可以采用MASTER_AUTO_POSITION=‘X’的方式。
MySQL主从同步是在MySQL主从复制(Master-Slave Replication)基础上实现的,通过设置在Master MySQL上的binlog(使其处于打开状态),Slave MySQL上通过一个I/O线程从Master MySQL上读取binlog,然后传输到Slave MySQL的中继日志中,然后Slave MySQL的SQL线程从中继日志中读取中继日志,然后应用到Slave MySQL的数据库中。这样实现了主从数据同步功能。
MySQL通过复制(Replication)实现存储系统的高可用。目前,MySQL支持的复制方式有:
在状态1中,客户端的读写都直接访问节点A,而节点B是A的备库,只有将A的更新都同步过来,到本地执行,这样可以保证节点B和A的数据是相同的
上部分状态:客户端的读写都直接访问A,B是A的备库,只是将A的更新都同步过来,到本地执行。这样可以保持B和A的数据相同。
3、一个GTID在一个服务器上只执行一次,避免重复执行导致数据混乱或者主从不一致。
我们接着上一个文档继续做!由于还要用到上面装的mysql数据库,在这个进行一些配置
假设主备切换前,我们的主库是节点A,节点B是节点A的备库,客户端的读写都是直接访问节点A,节点B只是将A的更新同步过来然后本地执行,同步完成以后,节点AB的数据就一致了。
领取专属 10元无门槛券
手把手带您无忧上云