首页 > 数据库 >线上业务系统的迁移思路【MySQL】

线上业务系统的迁移思路【MySQL】

时间:2023-11-26 23:47:21浏览次数:37  
标签:思路 binlog 数据库 线上 MySQL 日志 迁移

概论

在日常开发场景中,迁移数据库是非常常见的。但是线上业务系统进行迁移,并不是见一个简单的问题,必须考虑到迁移过程中线上系统的可用性、性能等。本文针对MySQL对迁移策略进行讨论。

实现方法

思路一:binlog

MySQL的binlog日志是一种二进制格式的日志,binlog记录所有的DDL和DML语句,以Event的形式记录,同时记录语句的执行时间。其主要的应用场景为:

  • 数据恢复:通过日志数据恢复因为数据库宕机等不可抗力产生的数据丢失。
  • 主从复制:多机备份,可以监听binlog日志,同步写库的更改。

这么一看,binlog简直完美符合数据迁移的场景。Mysql中的数据在大批量导出的时候会容易阻塞,导致数据库慢查询,然后我们的优化思路是在写数据到数据库的时候同时监听数据库binlog到其他库中。

好处:

  1. 不会因为数据导出的慢查询
  2. 监听binlog的方式可以使得代码解耦

思路二:双写

采用在写入数据库的时候再同时写入新的库,如果对性能要求比较高,可以将写入操作作为移步任务添加到一个线程安全队列。

参考文章

  1. https://www.cnblogs.com/rickiyang/p/13841811.html

标签:思路,binlog,数据库,线上,MySQL,日志,迁移
From: https://www.cnblogs.com/markseven/p/17858225.html

相关文章

  • 无涯教程-MySQL - 安装设置
    MySQL的所有下载均位于MySQL下载中,选择MySQLCommunityServer的版本号,以及将在其上运行的平台。Linux安装建议在Linux系统上安装MySQL的方法是通过RPM。 现在,您将需要遵循以下步骤,继续进行安装-[root@host]#rpm-iMySQL-x.x.xx.i386.rpm您可以在/usr/bin和/usr/sbin......
  • mysql 第一个查询结果中排除掉第二个查询结果
    selecte.ENAME,d.LOCfromempe,deptdwheree.DEPTNO=d.DEPTNOand(d.LOC='DALLAS'ord.LOC='CHICAGO');第一个语句搜索结果有SMITHALLEN等很多ENAME|LOC|------+-------+SMITH|DALLAS|ALLEN|CHICAGO|WARD|CHICAGO|JONES|DALLAS|MARTIN|CHI......
  • CentOS 7 安装Mysql环境
    Centos7下彻底删除Mysql,重新安装Mysql常用操作命令 启动mysql服务systemctlstartmysqld.service停止mysql服务systemctlstopmysqld.service重启mysql服务systemctlrestartmysqld.service查看mysql服务当前状态systemctlstatusmysqld.service 设置mysql服务开......
  • mysql中的索引
    mysql中索引的实现方式是什么?利用B+树实现索引的。数据库中的数据存储在磁盘上,使用的时候加载到存储引擎中的bufferpool(内存中的一个缓存池)中去;同理索引也是以文件的形式存储在磁盘上的,使用的时候加载到bufferpool中去。注意:数据和索引都是以“页”的形式一页一页的加载进内......
  • mysql+php+apache的docker坏境搭建
    1:安装dockersudoaptinstalldocker.io2:安装mysqlsudodockerrun--privileged=true-di--restart=always--nameMySqlForPhp01-p55506:3306-eMYSQL_ROOT_PASSWORD=1234qwer-e--character-set-server=utf8mb4-e--collation-server=utf8mb4_unicode_cimysql:8.0......
  • MySQL_事务
    事务的特性ACIDA原子性:一个事务中的所有操作,要么全部完成,要么全部不完成。undolog保证C一致性:事务操作前和操作后,数据满足完整性约束,数据库保持一致性状态。原子性、隔离性、持久性保证I隔离性:多个并发事务交叉执行,使用相同的数据时,互不干扰,每个事务都有一个完整的数据空间......
  • Windows环境下修改my.ini导致MySQL启动失败
    问题:修改my.ini导致MySQL启动失败在Windows环境中,使用默认编辑器编辑my.ini配置文件可能导致MySQL启动失败,是因为默认编辑器使用的是UTF-8编码。解决方法:更改编码为ANSI使用文本编辑器打开my.ini,选择“另存为”并将编码更改为ANSI。重新启动MySQL服务,确保配置文件与MySQL默认......
  • mysql多个字段最大最小值
    转自:https://www.jb51.net/article/263686.htm1、语法最大值:GREATEST(expr_1,expr_2,...expr_n)最小值:LEAST(expr_1,expr_2,...expr_n)2、说明GREATEST(expr_1,expr_2,...expr_n)函数从表达式(列、常量、计算值)expr_1,expr_2,...expr_n等中找出最大的数返回......
  • 关于点赞业务对MySQL和Redis和MongoDB的思考
    点赞​ 在我个人理解中,点赞业务比较频繁,很多人业务可能都会有这个,比如:博客,视频,文章,动态,评论等,但是不应该是核心业务,不应该大量地请求MySQL数据库,给数据库造成大量的资源消耗,MySQL的数据库是非常宝贵的.以某音为例,当我去搜索的时候,全抖音比较高的点赞数目应该是在1......
  • mysql定时备份
    mysql定时备份概述:​1、一般来说,生产服务器每天都需要定期进行数据备份、异地备份,这样确保意外情况(数据意外删除、硬件故障、火灾等等)下避免数据大批量丢失,能快速恢复数据,把意外带来的影响降到到最小。数据库数据备份尤为重要,而我们不会人工手动去备份,这样会很麻烦,我们都是通过......