zoukankan      html  css  js  c++  java
  • mysql 5.7 主从同步问题

    1、slave同步状态中出现Slave_SQL_Running: No ,即slave不同步!

    解决办法:

    第一种方法:忽略错误后,继续同步。

    该方法适用于主从库数据相差不大,或者要求数据可以不完全统一的情况,数据要求不严格的情况(下面均为在slave机器上的操作)mysql> stop slave;
    mysql> set global sql_slave_skip_counter =1;   //表示跳过一步错误,后面的数字可变;或者在my.cnf里添加slave-skip-errors = all(上面已在配置中添加)
    mysql> start slave;
    mysql> show slave statusG      //查看:

    第二种方法:重新做主从,完全同步

    该方法适用于主从库数据相差较大,或者要求数据完全统一的情况

    1--master主库上操作
    mysql> flush tables with read lock;  //进行锁表,防止数据写入。注意该处是锁定为只读状态,语句不区分大小写

    mysqldump --lock-all-tables --all-databases --flush-logs --master-data=2 > /root/allsql.sql   //主库完全备份(如果是指定库同步,就备份指定库),注意数据库备份一定要定期进行,确保数据万无一失

    mysql> show master status;      //查看master状态,注意log file和pos节点,slave同步会用到

    # scp mysql.bak.sql root@192.168.1.102:/tmp/        //把备份文件传到slave从库机器,进行数据恢复

    2--slave从库操作

    mysql> stop slave;
    mysql> source /tmp/mysql.bak.sql
    mysql> change master to master_host = '192.168.1.101', master_user = 'slave', master_port=3306.......;
    mysql> start slave;
    mysql> show slave statusG 
    .......
    Slave_IO_Running: Yes
    Slave_SQL_Running: Yes

    1--master主库上操作

    解锁数据库

    unlock  tables

    此种方法中最为关键主要有两步:
    ①主服务器上锁表做完全备份,并滚动日志;
    ②从服务器上进行半道恢复.

    2、slave同步状态中出现Slave_IO_Running: NO

    原因:如果数据库为复制虚拟机过去的,那么auto.cnf 中记录的数据库唯一UUID 会冲突导致,从数据库的sql_io 进程无法启动。

    解决:重新安装数据库

  • 相关阅读:
    mac上命令行解压rar
    Mac上安装PHP、Apache、MySQL
    8款不错的 CI/CD工具
    Apache 强制Http跳转Https
    使用MySQL的mysqldump命令备份数据库和把数据库备份文件恢复
    MySQL主从复制和读写分离
    Nginx参数调优
    【原创】深入理解Docker容器和镜像 -- 分析了docker的命令含义
    Elasticsearch使用备忘
    通过HTTP RESTful API 操作elasticsearch搜索数据
  • 原文地址:https://www.cnblogs.com/fanggege/p/10856102.html
Copyright © 2011-2022 走看看