• 线上系统和冷备系统同步单个表数据


    线上数据同步冷备数据操作
    为了保障系统的稳定及安全,我们公司采用了一整套的冷备系统,即当线上系统发生故障直接切换到备份系统,避免客户的访问故障。由于是两套完全独立的系统,因此会造成数据库里的数据不完全同步,虽然我们的开发人员在导入数据时会主备系统都会导,但是还是会有一定的差别,我们是在一定范围内是可以允许有一定的误差的,但是我们需要给用户提供服务,因此必须保证已有的用户可以登陆我们的系统,因此我们会不定时的手动去同步user表及其他几个表。
    下面是我的一些具体操作步骤:
    1.查看即将同步的表有多少条数据,以便我们后期确定是否同步成功:
    select count(*) from 表明; ###最好两边都查一下
    2.备份备份系统的表数据,以防误操作可以及时恢复:
    mysqldump -uroot -p 数据库名 表名 > /data/mysqldata/表名.sql
    3.从主系统导出数据:
    select * into outfile '/tmp/outfile.txt' from 表名;
    4.同步到被系统,我这里是先同步到我自己电脑在上传到备份系统:
    sz /tmp/outfile.txt
    如果没有安装sz的话请用:
    centos系统:yum -y install lrzsz
    ubuntu系统:apt-get -y install lrzsz
    5.清空备份系统即将同步表的表数据,如果第一次同步可忽略这一步:
    truncate table 表名;
    如果失败请用:
    delete * from 表名;
    6.上传本机第4步下载到本机的数据到备份系统:
    rz
    如果报错,备份系统安装lrzsz
    7.更改已经上传到备份系统文件的属主属组及存放位置
    chown mysql.mysql outfile.txt
    更改outfile.txt存放位置到mysql数据库目录。因为mysql是由mysql用户启动的,必然会报权限拒绝。
    8.同步数据
    load data infile '/data/mysqldata/outfile.txt' into table 表名 FIELDS TERMINATED BY '|' LINES TERMINATED BY ' ';
    9.查看同步过来的表条数是否和主系统一样,如果一样即表示同步成功:
    select count(*) from 表名;

  • 相关阅读:
    PyCharm2019激活
    实时统计每天pv,uv的sparkStreaming结合redis结果存入mysql供前端展示
    Python批量删除mysql中千万级大量数据
    SpringBoot + thymeleaf 实现分页
    适合用设计模式解决的问题场景
    重新理解面向过程和面向对象编程
    优化前端单页面应用性能指南
    使用ts开发vue项目知识点1
    职场人的核心竞争力应该是什么
    重新理解原型链
  • 原文地址:https://www.cnblogs.com/yangxiaochu/p/7717949.html
Copyright © 2020-2023  润新知