mysql集群方案

1 介绍

对于一个互联网项目而言,在mysql这块,主要是分为两种职业:oltp和dba;开发人员和数据库运维人员
我们常常将一个项目分为三个阶段:初期,发展,爆发
1 项目初期:此阶段主要是但结点,需要解决可靠性,单点故障的问题(一般情况下采用主从复制就好了),但是目前我遇到的项目基本上没有,直接单台mysql
2 发展阶段:常见的问题宕机,读写性能问题;主要解决的可用性(合理的时间内提供合理的回复,专业一点说法:多少时间内完成切换),采用什么样的集群方案实现了多长时间的切换。解决方案:读写分离;缓存方式。
3 爆发期:主要解决高扩展性,能进行横向扩展(分库分表,多个主db等)
对于开发人员,需要掌握mysql的知识体系,在dba介入之前的知识体系。

2 主从复制

主从复制作用:使用binlog恢复数据(增量数据);
用来主从复制(replication)
1 原理图
在这里插入图片描述
2 具体流程
对于数据库来说,为了提供可用性mysql提供了可以部署多个机制来进行主从复制。master写,slave读。
master服务器而言:主线程接受客户端来写sql语句,当有数据改变的时候写入binlog日志;
slave服务器而言:它是有一个io_thread会去隔一段时间去主服务器从去请求数据,而master会将binlog日志会通过log dump thread返回给从服务器;从服务器io_thread接收到,会将数据丢写入到中继日志(relay log)。从服务器中还有一个数据sql thread会将中继日志回放一遍放入数据库中。
3 binlog
产生时机,事务提交后;重启生成新的binlog;
flush logs 生成新的binlog;
4 配置开启使用

[mysqld]
log-bin=mysql-bin
# 每提交n次事务,MySQL将进行一次fsync之类的磁盘同步指令来将binlog_cache中的数据强制写入
磁盘。
sync_binlog=1
# 开启两段式事务提交
# 1.prepare,先将redolog持久化到磁盘;
# 2.prepare成功,再将事务日志持久化到binlog;
# 3.再在redolog上持久化commit操作;
innodb_support_xa=1

4 总结
1 binlog 文件会随服务的启动创建一个新文件;
2.通过 flush logs 可以手动刷新日志,生成一个新的 binlog 文件;
3.通过 show master status 可以查看 binlog 的状态;
4.通过 reset master 可以清空 binlog 日志文件;
5.通过 mysqlbinlog 工具可以查看 binlog 日志的内容;
6.通过执行 DML 操作,mysql 会自动记录 binlog;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

丰恒谷

你的鼓励是我最大创作动力!!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值