mysql分库复制_第四弹:MySQL分库分表与主从复制

分库分表

简单理解,就是把原本存储于一个库的数据分块存储到多个库上,把原本存储于一个表的数据分块存储到多个表上。

说到分库分表之前,需要先说说分区的概念

分区:在单机中,将一张表的数据分成N个放置在磁盘内,分区的作用是将一张表分配为多个区块存储到一起。(缺点:数据库内部实现,研发执行不可控。可与分库分表结合使用)

分库: 数据库集群环境,一个库里表太多了,导致了海量数据,系统性能下降,把原本存储于一个库的表拆分存储到多个库上,通常是将表按照功能模块、关系密切程度划分出来,部署到不同库上。少增量数据写入时的锁对查询的影响 由于单表数量下降,常见的查询操作由于减少了需要扫描的记录,使得单表单次查询所需的检索行数变少,减少了磁盘IO,时延变短

分表:

垂直拆分:

按照业务线进行拆分,业务功能的使用频次。把主要的、热门的字段放在一起做为主要表。然后把不常用的,拆分到不同的次要表中;主要表和次要表的关系一般都是一对一的。

水平拆分:

单表的容量不超过500W,否则建议水平拆分。把一个表复制成同样表结构的不同表,然后把数据按照一定的规则划分,分别存储到这些表中,从而保证单表的容量不会太大,提升性能;当然这些结构一样的表,可以放在一个或多个数据库中。

主要方法:MD5 hash方法、按照时间、按照用户ID拆分

分库分表存在的问题:

事务问题

跨库跨表的join问题

额外的数据管理负担和数据运算压力。数据的定位问题和数据的增删改查的重复执行问题,通过应用程序解决,会引起额外的逻辑运算。

729714a21fce7fe3bd0a4a0cdac7bd8c.png

主从复制

slave 会从 master 读取 binlog 来进行数据同步

master将改变记录到二进制日志(binary log)。这些记录过程叫做二进制日志事件;

salve 将 master 的 binary log events 拷贝到它的中继日志(relay log);

slave 重做中继日志中的事件,将改变应用到自己的数据库中。

MySQL 复制是异步且是串行化的。

复制的基本原则(一主多从、主主复制) - 每个 slave只有一个 master - 每个 salve只能有一个唯一的服务器 ID - 每个master可以有多个salve

复制的最大问题:延时、主从复制过程中的性能问题。

c135be0167cd298e7b5680eca192e405.png 

030d760a76ff00f5dba41b5aaa88efff.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL主从复制是一种常见的数据库备份和负载均衡方案。在主从复制中,主库将更新记录到二进制志中,从库通过读取主库的二进制日志来同步更新。在这个过程中,如果从库的Slave_IO_Running状态为No,则说明从库无法连接到主库或者无法读取主库的二进制日志。这可能是由于以下原因导致的: 1. 主库无法连接:从库无法连接到主库,可能是由于网络故障、主库宕机或者主库防火墙等原因导致的。可以通过ping主库IP地址或者telnet主库的3306端口来检查主库是否可达。 2. 主库二进制日志文件不存在:从库无法读取主库的二进制日志文件,可能是由于主库的二进制日志文件已经被删除或者被移动到其他位置导致的。可以通过在主库上执行show master status命令来查看当前的二进制日志文件名和位置。 3. 从库配置错误:从库的配置文件中可能存在错误,例如主库的IP地址、端口号、用户名、密码等信息配置错误,或者主从库的server_id没有设置或者设置重复等问题。可以通过检查从库的配置文件my.cnf来查看是否存在配置错误。 如果从库的Slave_IO_Running状态为No,可以尝试执行以下步骤来解决问题: 1. 检查主库和从库的网络连接是否正常,确保从库可以ping通主库的IP地址或者telnet主库的3306端口。 2. 在主库上执行show master status命令,查看当前的二进制日志文件名和位置,并在从库上执行change master to命令,将主库的二进制日志文件名和位置设置为与主库一致。 3. 检查从库的配置文件my.cnf,确保主库的IP地址、端口号、用户名、密码等信息配置正确,且server_id没有设置或者设置正确。 4. 在从库上执行start slave命令,重新启动从库的复制进程。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值