使用 Xtrabackup 在线对MySQL做主从复制
- http://seanlook.com/2015/12/14/mysql-replicas/
文章信息整理与其他信息补充:
假如你的读操作压力特别大,甚至要做一主多从,还可以不同的slave扮演不同的角色,例如使用不同的索引,或者不同的存储引擎,或使用一个小内存server做slave只用于备份。(当然slave太多也会对master的负载和 络带宽造成压力,此时可以考虑级联复制,即 A->B->C );
一主一从,一旦做了主从切换,不通过其它HA手段干预的话,业务访问的还是原IP,而且原主库很容易就作废了。于是 主-主 复制就产生了,凭借各自不同的 server-id ,可以避免 “A的变化同步到B,B应用变化又同步到A” 这样循环复制的问题。但建议是,主主复制,其中一个主库强制设置为只读,主从切换后架构依然是可用的。
复制过程是slave主动向master拉取,而不是master去推的,所以理想情况下做搭建主从时不需要master做出任何改变甚至停服,slave失败也不影响主库。
复制类型
-
基于语句的复制:STATEMENT,在主服务器上执行的SQL语句,在从服务器上执行同样的语句,有可能会由于SQL执行上下文环境不同而是数据不一致,例如调用NOW()函数。MySQL在5.7.7以前默认采用基于语句的复制,在 5.7.7 及以后版本默认改用 row-based。
-
基于行的复制:ROW,把改变的内容复制过去,而不是把命令在从服务器上执行一遍。从mysql5.0开始支持,能够严格保证数据完全一致,但此时用mysqlbinlog去分析日志就没啥意义。因为任何一条update语句,都会把涉及到的行数据全部set值,所以binlog文件会比较大。grand alter create rename等管理语句会强制使用statement-based方式。
-
混合类型的复制: MIXED,默认采用基于语句的复制,一旦发现基于语句的无法精确的复制时,就会采用基于行的复制。
-
可以在slave机器上记录日志,即把master的操作记录再记上一份,可以在slave上灵活的修改binlog类型
复制类型还可以分为 异步复制和半同步复制
-
通常没说明指的都是异步,即主库执行完Commit后,在主库写入Binlog日志后即可成功返回客户端,无需等等Binlog日志传送给从库,一旦主库宕机,有可能会丢失日志。
-
而半同步复制,是等待其中一个从库也接收到Binlog事务并成功写入Relay Log之后,才返回Commit操作成功给客户端;如此半同步就保证了事务成功提交后至少有两份日志记录,一份在主库Binlog上,另一份在从库的Relay Log上,从而进一步保证数据完整性;半同步复制很大程度取决于主从 络RTT(往返时延),以插semisync_master/semisync_slave 形式存在。
-
如何使用半同步复制
https://www.cnblogs.com/zero-gg/p/9057092.html
注意
-
从库一般作为只读库使用,所以为安全起见,设置只读 set global read_only=1;
可以在从服务器的 my.cnf 里加入read-only参数来实现这一点,唯一需要注意的一点事read-only仅对没有super权限的用户有效。所以最好核对一下连接从服务器的用户,确保其没有super权限; -
skip-slave-start
主从创建完成后,默认情况下次启动从库,会自动启动复制进程,一般这也正是我们需要的,但在维护阶段时你可能不想从库启动后立即开始复制,–skip-slave-start选项可以帮到你; -
log-slave-updates
正常情况从库是不需要写回放日志产生的binlog,无形中增加服务器压力。但如果你想要实现级联复制即 A -> B -> C ,B同时是A的从库,也是C的主库,就需要开启 log-bin 和 log-slave-updates ; -
Read_Master_Log_Pos:本机I/O线程读取主服务器二进制日志位置
与在主库执行show master status;看到的值如果基本接近,说明从库IO线程已经赶上了主库的binlog; -
Exec_Master_Log_Pos: SQL线程执行来自master的二进制日志最后一个事件位置;
-
mysql将事务串行的写入二进制日志,即使事务中的语句都是交叉执行的(并行),slave上是串行操作;
Mysql主从不同步解决方法
-
http://www.rfyy.net/archives/2309.html
应该是主MYSQL上建表时,主键有重复的值 错,造成从不能同步。 -
sql_slave_skip_counter可能省事,但极有可能跳过其他events,导致主从数据不一致。对于1032、1062错误尽量修补数据,让复制进程在从库应用变更。
https://www.cnblogs.com/Uest/p/7941329.html
MYSQL主从同步故障一例及解决过程!
- https://blog.csdn.net/weixin_33857230/article/details/93063899
我需要把格式改为 mixed格式
修改从库的 my.cfg
在[mysqld]下面加入下面这行
binlog_format=mixed
为什么不是修改主库的binlog格式呢p>
MySQL auto_increment_increment,auto_increment_offset 用法
https://blog.csdn.net/leshami/article/details/39779509
-
auto_increment_increment控制列中的值的增量值,也就是步长。
-
auto_increment_offset确定AUTO_INCREMENT列值的起点,也就是初始值。
-
变量范围:可以在全局以及session级别设置这2个变量
-
mysql中database、instance、session:
mysql中建立一个会话,不是和具体的数据库相连接,而是跟某个instance建立会话(每个会话可以使用不同的用户身份)。
而一个实例可以操作多个数据库,故一个会话(在操作系统概念里,会话即是线程)可以操作一个实例上的多个数据库。
https://blog.csdn.net/rwangnqian/article/details/80087381
MySQL双主(主主)架构方案
-
https://www.cnblogs.com/ygqygq2/p/6045279.html
-
cmake
CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。只是 CMake 的组态档取名为 CMakeLists.txt。Cmake 并不直接建构出最终的软件,而是产生标准的建构档(如 Unix 的 Makefile 或 Windows Visual C++ 的 projects/workspaces),然后再依一般的建构方式使用。这使得熟悉某个集成开发环境(IDE)的开发者可以用标准的方式建构他的软件,这种可以使用各平台的原生建构系统的能力是 CMake 和 SCons 等其他类似系统的区别之处。
-
GTID模式介绍!
https://blog.csdn.net/weixin_33804990/article/details/91697873 -
配置内容需要加深研究。
-
设计 MySQL 数据表的时候一般都有一列为自增 ID,这样设计原因是什么,有什么好处r> https://www.cnblogs.com/zhhtao/p/7687361.html
配置Mysql-proxy,实现读写分离
- https://blog.51cto.com/zzclinux/1980487
- mysql-proxy
mysql-proxy是mysql官方提供的mysql中间件服务。
它使用mysql协议,任何使用mysql-client的上游无需修改任何代码,即可迁移至mysql-proxy上,具备良好的扩展性,可以用来完成:
sql拦截与修改;
性能分析与监控;
读写分离;
请求路由;
- 文章有很多配置细节;
什么是MYCAT
- http://www.mycat.io
- 一个彻底开源的,面向企业应用开发的大数据库集群
- 支持事务、ACID、可以替代MySQL的加强版数据库
- 一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群
- 一个融合内存缓存技术、NoSQL技术、HDFS大数据的新型SQL Server
- 结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品
- 一个新颖的数据库中间件产品
MySQL分布式中间件MYCAT解析
- https://my.oschina.net/ruoli/blog/1789370
学会数据库读写分离、分表分库——用Mycat,这一篇就够了!
- https://www.cnblogs.com/joylee/p/7513038.html
MySQL + Atlas 部署读写分离
- https://blog.csdn.net/AnPHPer/article/details/80566385
- 不维护不更新了
mysql环形主从配置
- http://ask.apelearn.com/question/11437
mysql架构由小变大的演变过程
- http://ask.apelearn.com/question/8025
Step By Step 搭建 MySql MHA 集群
-
http://blog.51cto.com/xiaoshuaigege/2060768
-
虚IP。何为虚IP那,就是一个未分配给真实主机的IP,也就是说对外提供数据库服务器的主机除了有一个真实IP外还有一个虚IP,使用这两个IP中的 任意一个都可以连接到这台主机,所有项目中数据库链接一项配置的都是这个虚IP,当服务器发生故障无法对外提供服务时,动态将这个虚IP切换到备用主机。
蔡猛芝同学的mysql双主+双从+keepalived+lvs架构
- http://ask.apelearn.com/question/17026 需要登陆
文章知识点与官方知识档案匹配,可进一步学习相关知识MySQL入门技能树内置函数锁相关33031 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!