Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 338|回复: 0

mysql主从同步不一致后的解决方法

[复制链接]
  • TA的每日心情
    奋斗
    7 天前
  • 签到天数: 795 天

    [LV.10]以坛为家III

    2050

    主题

    2108

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    724084
    发表于 2021-7-12 07:40:25 | 显示全部楼层 |阅读模式

    查看master的运行情况:

    [root@master] mysql -uroot -p************
    [root@master] mysql> show master status \G;
        *************************** 1. row ***************************
                 File: mysql-bin.000014     //这个信息点要记住,下面用
             Position: 170017372            //这个信息点要记住,下面用
             Binlog_Do_DB: ipharmacare_admin
         Binlog_Ignore_DB: mysql,information_schema,performance_schema
        Executed_Gtid_Set: 
        1 row in set (0.00 sec)
    

    查看slave的运行情况:

    [root@slave] mysql -uroot -p************
    [root@slave] mysql> show slave status \G;
        *************************** 1. row ***************************
                   Slave_IO_State: 
                  Master_Host: master.mysql.ipharmacare.org
                  Master_User: slave
                  Master_Port: 3306
                Connect_Retry: 60
                  Master_Log_File: mysql-bin.000013
              Read_Master_Log_Pos: 1003623481
                   Relay_Log_File: mysql-bin.000022
                Relay_Log_Pos: 36726417
            Relay_Master_Log_File: mysql-bin.000013
                 Slave_IO_Running: No
                Slave_SQL_Running: No
                  Replicate_Do_DB: ipharmacare_admin
              Replicate_Ignore_DB: mysql,information_schema,performance_schema
               Replicate_Do_Table: 
               Replicate_Ignore_Table: ipharmacare_admin.tb_hospital,ipharmacare_admin.t_customer,ipharmacare_admin.t_license,ipharmacare_admin.tb_hospital_zone_license,ipharmacare_admin.tb_hospital_license
              Replicate_Wild_Do_Table: ipharmacare_admin.%
          Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
              Exec_Master_Log_Pos: 1003623481
                  Relay_Log_Space: 1003624042
                  Until_Condition: None
                   Until_Log_File: 
                Until_Log_Pos: 0
               Master_SSL_Allowed: No
               Master_SSL_CA_File: 
               Master_SSL_CA_Path: 
                  Master_SSL_Cert: 
                Master_SSL_Cipher: 
                   Master_SSL_Key: 
            Seconds_Behind_Master: NULL
        Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
                   Last_SQL_Errno: 0
                   Last_SQL_Error: 
          Replicate_Ignore_Server_Ids: 
                 Master_Server_Id: 1
                  Master_UUID: a8ddc479-8862-11e2-b6df-2761731e3dd6
                 Master_Info_File: /mnt/mysql/master.info
                    SQL_Delay: 0
              SQL_Remaining_Delay: NULL
              Slave_SQL_Running_State: 
               Master_Retry_Count: 86400
                  Master_Bind: 
              Last_IO_Error_Timestamp: 
             Last_SQL_Error_Timestamp: 
                   Master_SSL_Crl: 
               Master_SSL_Crlpath: 
               Retrieved_Gtid_Set: 
                Executed_Gtid_Set: 
                Auto_Position: 0
             Replicate_Rewrite_DB: 
                 Channel_Name: 
               Master_TLS_Version: 
        1 row in set (0.00 sec)
    

    结论:由上可知数据同步延迟很多,且希望重新做主从,使得主从在数据上保持完全同步.

    先进入主库,进行锁表,防止数据写入

    [root@master] mysql> flush tables with read lock;

    进行master数据备份

    [root@master] cd /mnt/mysql/bakdata
    [root@master] mkdir baksql
    [root@master] cd baksql
    [root@master] mysqldump ipharmacare_admin -uroot -p****** --opt> ipharmacare_admin.sql
    或者:
    mysqldump -uroot -p***** --default-character-set=utf8 ipharmacare_admin  > ipharmacare_admin.sql
    

    打包数据(可选)

    [root@master] 7za a ipharmacare_admin_20160505.7z ipharmacare_admin.sql

    把mysql备份文件传到从库机器,进行数据恢复

    [root@slave] cd /usr/downloads/
    [root@slave] scp root@master:/mnt/mysql/bakdata/ipharmacare_admin_20160505.7z ./
    [root@slave] 7az x ipharmacare_admin_20160505.7z 
    [root@slave] mysql -uroot -p*****;
    [root@slave] mysql> drop database ipharmacare_admin;
    [root@slave] mysql> CREATE DATABASE ipharmacare_admin DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
    [root@slave] msyql> source baksql.sql;
    

    更新/设置同步进度点

     [root@slave] change master to master_host='master.mysql.ipharmacare.org', master_user='slave', master_port=3306, master_password='************', master_log_file='mysql-bin.000014', master_log_pos=170017372;
    

    注意:

    1) 做了MySQL主从复制以后,使用mysqldump对数据备份时,一定要注意按照如下方式:
      [root@master] mysqldump –master-data –single-transaction –user=username –password=password dbname> dumpfilename
    这样就可以保留file和position的信息,在新搭建一个slave的时候,还原完数据库,file和position的信息也随之更新,接着再start slave 就可以很迅速的完成增量同步。
    2) 忘记主从复制时,对从库用户密码时,可以这样去重置:
      [root@master] GRANT REPLICATION SLAVE ON *.* TO 'slave'@'slave.mysql.ipharmacare.org' IDENTIFIED BY
    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-9-29 17:30 , Processed in 0.063788 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表