zoukankan      html  css  js  c++  java
  • mysql锁表与不锁表设置主从复制的方法

    有时候MySQL主从同步不一致比较严重的时候,需要手动同步。
    先说说在锁表的情况下如何操作:
    以下是其简要过程

    1.先对主库锁表
    FLUSH TABLES WITH READ LOCK;

    2.备份数据
    mysqldump -uroot -p -hlocalhost > mysql.bak.sql

    3.解锁主库
    unlock tables;

    4.查看主库的binlog文件和位置
    show master status; 找出File和Position

    5.使用scp命令把文件移动到从库
    scp mysql.bak.sql root@192.168.128.101:/tmp/

    6.在从库上停止同步
    mysql> stop slave;

    7.导入数据
    mysql> source /tmp/mysql.bak.sql

    8.设置从库的同步开始文件和开始位置
    change master to master_host = '主库主机', master_user = '同步用户名', master_port=3306, master_password='', master_log_file = '第3步中获取的file', master_log_pos=第3步中获取的position;

    9.从库上启动同步并检查
    mysql> start slave;
    mysql> show slave statusG 查看:
    Slave_IO_Running: Yes
    Slave_SQL_Running: Yes
    不锁表的方法
    大致是不需要执行第1和第3步,在第2导出数据的时候加上参数
    mysqldump --skip-lock-tables --single-transaction --flush-logs --hex-blob --master-data=2 -A
    --skip-lock-tables 不锁表
    --master-data=2 在导出的时候同时生成binlog文件名和位置在导出的文件开头。这个很重要。因此第4步也不需要执行了,binlog的文件和位置可以从这里拿到。
    --single-transaction 通过将导出操作封装在一个事务内来使得导出的数据是一个一致性快照
    最后把第8步的binlog文件和位置替换成导出的文件开头找到的那个带有注释的file和position就好可以了。

  • 相关阅读:
    Android kotlin jsoup解析网页html代码
    Android kotlin 判断网络状态
    ASP.NET设计模式笔记1
    C# SMTP发送邮件
    SQL连接数和CPU使用情况查询
    Grafana笔记
    Docker笔记
    solidity学习(四)---storage和memory关键字
    e-book
    solidity学习(四)-- Require(), Assert(), Revert()的用法和区别
  • 原文地址:https://www.cnblogs.com/xyhero/p/9343747.html
Copyright © 2011-2022 走看看