zoukankan      html  css  js  c++  java
  • 如何快速恢复SLAVE从库上某几张表

    在日常工作中,同步报错是DBA遇到最多的一个问题,如果修复后发现还没有解决,通常的办法是在master上重新导入一份备份,然后在slave上恢复,这个方案是针对整个库不是很大的情况,那么如果是数据库比较大,全部导出再导入耗时就很长,这时,就要通过特殊的方法恢复某几张表
    例如,employees的employees这张表和master的不一致,操作方法如下
    (1)Master:
    select count(*) from employees;
    +----------+
    | count(*) |
    +----------+
    |   300024 |
    +----------+
     
    Slave:
    select count(*) from employees;                                                 
    +----------+
    | count(*) |
    +----------+
    |    99976 |
    +----------+
    (2)在主库上导出employees这张表,并记录下binlog和pos点:
    /application/mariadb10/bin/mysqldump --master-data=2 -uroot -p123456 -h192.168.214.88   employees  employees > employees.sql
    (3)把备份上传到slave上,查看employees.sql文件,找到binlog和pos点
    如head  -30 employees.sql
    -- CHANGE MASTER TO MASTER_LOG_FILE='my3306-bin.000008', MASTER_LOG_POS=508744250;
    (4)在slave机器上导入employees.sql,命令如下
    source employees.sql;
    (5)在从库上做change master to 指向,直到sql_thread线程为NO

    start slave until master_log_file='my3306-bin.000008', master_log_pos=508744250;

    这一步是为了保障其他表的数据不丢失,一直在同步,直到同步到那个点为止,employees表的数据在之前的导出已经生产了一份快照,只要导入后开启同步即可!

    直到sql_thread线程为NO
     
    (6)导入完毕后,开启同步即可
    start slave;
    验证数据
    select count(*) from employees;
    +----------+
    | count(*) |
    +----------+
    |   300024 |
    +----------+
    再次检查从库状态!!
  • 相关阅读:
    Kostya Keygen#2分析
    一个简单的windows勒索软件分析
    MSRHook与SSDTHook
    VS2013中调驱动
    VMProtect1.63分析
    Linux内核分析总结
    进程的切换和系统的一般执行过程
    可执行程序的装载
    进程的描述和进程的创建
    扒开系统调用的三层皮(下)
  • 原文地址:https://www.cnblogs.com/manger/p/7212178.html
Copyright © 2011-2022 走看看