从一台服务器迁移至其他服务器,如何选择最短的停服时间方案

方案一、凌晨3点的全备份+停服后一天的大概一天的增备

  1. 拷贝前一天的全备份至新的服务器

   rsync -auzrP /Data/dbbak/db/2019-04-23/2019-04-23_03-10-11 root@172.16.1.80:/data/backup/full/

  2. 解压(备份方式:innobackupex  --compress,所以需要提前解压)

   innobackupex --decompress /data/backup/full/2019-04-23_03-10-11

  3. 停服

   systemctl stop mysqld

  5. 增备

   innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456  --incremental /data/backup/incr --incremental-basedir=/data/backup/full/2019-04-02_16-42-43

  6. 恢复

  --应用日志

   innobackupex --defaults-file=/usr/local/mysql/etc/my.cnf --apply-log --redo-only  /data/2019-04-18_03-10-09/

  innobackupex --defaults-file=/usr/local/mysql/etc/my.cnf --apply-log --redo-only  /data/2019-04-18_03-10-09/  --incremental-dir=/root/2019-04-18_19-06-43

  7. 拷贝至data目录下,并授权

   innobackupex --defaults-file=/usr/local/mysql/etc/my.cnf --copy-back /data/2019-04-18_03-10-09/

   chown -R  mysql:mysql /data/mysql-data/

   chmod -R 755   /data/mysql-data/

  8. 恢复完成,启动mysql

  mysqld_safe  --user=mysql &

方案二、当前时间全备+binglog恢复

  1. 全备份(热备,物理备)

  innobackupex --defaults-file=/etc/my.cnf --user=root --password='123456'  --use-memory=12G --kill-long-queries-timeout=5 --ftwrl-wait-timeout=20 --compress  --compress-threads=16 /data/bak/db/`date +%F`

  2. 拷贝至新服务器,并恢复

  rsync -auzrP /Data/dbbak/db/2019-04-23/2019-04-23_03-10-11 root@172.16.1.80:/data/backup/full/

   innobackupex --decompress /data/backup/full/2019-04-23_03-10-11

   innobackupex --apply-log  /data/backup/full/2019-04-23_03-10-11

   innobackupex --copy-back  /data/backup/full/2019-04-23_03-10-11

  3. 停服保证数据一致性,再将期间产生的binlog拷贝至新的服务器并执行

  mysqlbinlog --start-position=1108  mysql-bin.000007 |mysql -uroot -p123456 -v

方案三、主从架构复制的方式

  1.用全备份恢复

   rsync -auzrP /Data/dbbak/db/2019-04-23/2019-04-23_03-10-11 root@172.16.1.80:/data/backup/full/

   innobackupex --decompress /data/backup/full/2019-04-23_03-10-11

   innobackupex --apply-log  /data/backup/full/2019-04-23_03-10-11

   innobackupex --copy-back  /data/backup/full/2019-04-23_03-10-11

  2. 授权新服务器复制权限

  GRANT REPLICATION SLAVE ON *.* TO 'rep20'@'10.8.9.20' IDENTIFIED BY '123456';

  3. 给所有表加上只读锁

  flush tables with read lock;

  4. 配置主从

   stop slave;

   change master to master_host='172.16.1.88', master_user='rep20', master_password=' 123456', master_log_file='mysql-bin.000614',  master_log_pos=296235077;

   start slave;

  5. 查看主从状态

  Master_Log_File和Relay_Master_Log_File所指向的文件必须一致

  Relay_Log_Pos和Exec_Master_Log_Pos的为止也要一致才行

  Slave_SQL_Running_State:显示为wait 意思是中继日志的sql语句已经全部执行完毕

  6. 验证部分表的记录条数,和最后一条数据的内容

  select count(*) from student;

  select * from student order by create_time desc limit 1;

  7. 解锁

  UNLOCK TABLES;

  

总结: 方案一是增备的方式,步骤复杂了一些,操作失误就得重新恢复,停服的时间也需要更长,出错的概率也相对大;

      方案二 停服前全备份(还是热备),真正停服的时间是拷贝binlog和恢复binlog的时间,速度快,2步骤,出错概率低;(推荐)

   方案三 停服时间最短,但是相对更难校验数据的一致性,一旦数据不一致还有写入,会造成很大的麻烦。

  

   

mysql 5.7 迁移数据方案的更多相关文章

  1. Django更换数据库和迁移数据方案

    前言 双十一光顾着买东西都没怎么写文章,现在笔记里还有十几篇半成品文章没写完- 今天来分享一下 Django 项目切换数据库和迁移数据的方案,网络上找到的文章方法不一,且使用中容易遇到各类报错,本文根 ...

  2. Mysql ---Sqlserver数据迁移到Mysql(Mysql建表迁移数据)

    1 试用了MysqlWorkBench的数据迁移功能 以为能实现:建立跟Sqlserver一样的表结构和视图的功能,sqlserver的数据迁移到mysql 实际上发现:即使勾选了表和视图,实际上却只 ...

  3. Mysql使用workbench迁移数据

    原文:http://jingyan.baidu.com/article/925f8cb8f3ec25c0dce05644.html 打开Mysql WorkBench,连接到数据库: 首先选中:Man ...

  4. mysql分库分表,做到永不迁移数据和避免热点

    作者:老顾聊技术   搜云库技术团队  来源:https://www.toutiao.com/i6677459303055491597 一.前言 中大型项目中,一旦遇到数据量比较大,小伙伴应该都知道就 ...

  5. 从mysql向HBase+Phoenix迁移数据的心得总结

    * 转载请注明出处 - yosql473 - 格物致知,经世致用 mysql -> HBase + Phoenix 1.总体方案有哪些? 1)通过Sqoop直接从服务器(JDBC方式)抽取数据到 ...

  6. 从MySQL到Redis 提升数据迁移的效率

    场景是从MySQL中将数据导入到Redis的Hash结构中.当然,最直接的做法就是遍历MySQL数据,一条一条写入到Redis中.这样可能没什么错,但是速度会非常慢.而如果能够使MySQL的查询输出数 ...

  7. finedb(内置的HSQL数据库)迁移数据到MySQL

    finedb(内置的HSQL数据库)迁移数据到MySQL 1. 前言 在FineBI中,决策平台的数据(用户.角色.组织机构.权限等信息)是存储在finedb数据库中的,默认情况下finedb是一个内 ...

  8. 从MySQL到Hive,数据迁移就这么简单

    使用Sqoop能够极大简化MySQL数据迁移至Hive之流程,并降低Hadoop处理分析任务时的难度. 先决条件:安装并运行有Sqoop与Hive的Hadoop环境.为了加快处理速度,我们还将使用Cl ...

  9. 解决kettle在两个mysql之间迁移数据时乱码的问题 和 相关报错 及参数调整, 速度优化

    1. 乱码问题 编辑目标数据库的链接: 配置编码参数即可. 2. 报错 No operations allowed after statement closed. 需要调整wait_timeout:  ...

随机推荐

  1. adb 查看android手机中应用的包名和安装位置

    1. 查看是否连接手机 adb devices 2. 进入指定的device的shell adb shell 或者 adb -s ********* shell 3. adb 查看所有安装的包 pm ...

  2. 【bzoj1123】【[POI2008]BLO】tarjan判割点

    (上不了p站我要死了,侵权度娘背锅) Description Byteotia城市有n个 towns m条双向roads. 每条 road 连接 两个不同的 towns ,没有重复的road. 所有t ...

  3. SQL语句原理与高效SQL语句(转)

    做软件开发的programers,大部分都离不开跟数据库打交道,特别是erp开发的,跟数据库打交道更是频繁,存储过程动不动就是上千行,如果数据量大,人员流动大,那么还能保证下一段时间系统还能流畅的运行 ...

  4. Spark-class启动脚本解读

    #!/usr/bin/env bash # # Licensed to the Apache Software Foundation (ASF) under one or more # contrib ...

  5. 阿里云ECS在CentOS 6.9中使用Nginx提示:nginx: [emerg] socket() [::]:80 failed (97: Address family not supported by protocol)的解决方法

    说明: 1.[::]:80这个是IPv6的地址. 2.阿里云截至到今天还不支持IPv6. 解决方式: 1.普通解决方式:开启IPv6的支持,不过这个方法在阿里云行不通. vim /etc/nginx/ ...

  6. python urllib2使用细节

    刚好用到,这篇文章写得不错,转过来收藏.    转载自 道可道 | Python 标准库 urllib2 的使用细节 Python 标准库中有很多实用的工具类,但是在具体使用时,标准库文档上对使用细节 ...

  7. .net的远程调用

    .Net远程调用(转自:http://www.cnblogs.com/omilan/articles/3191378.html) 看到了这.net远程调用的讲解,觉得不错,拿来分享!! .Net对于远 ...

  8. 为什么重写equals方法时,要求必须重写hashCode方法?

    1 equals方法 Object类中默认的实现方式是  :   return this == obj  .那就是说,只有this 和 obj引用同一个对象,才会返回true. 而我们往往需要用equ ...

  9. http header 具体解释

    HTTP(HyperTextTransferProtocol)即超文本传输协议,眼下网页传输的的通用协议. HTTP协议採用了请求/响应模型,浏览器或其它client发出请求,server给与响应. ...

  10. 【前端开发】 5分钟创建 Mock Server

    http://blog.csdn.net/wxqee/article/details/50165581 NOTIFY 官网文档现在已经很简约.很强大了,建议直接点击这里: Getting Starte ...