• Mysql的主从复制原理及部署


    一.主库的要求:

    1.打开binlog日志

    2.创建主从复制账号

    3.server id=1


    二.从库要求

    1.开启中继日志----relay log=relay-bin

    2.主从复制验证信息录入

    3.激活主从复制

    4.从的server id不能跟主一样

    主从复制原理

    1.mysql主会有两个进程,mysql主进程和IO线程

    2.从库有三个线程mysql主进程、SQL线程和IO线程 主库的IO线程是记录数据库改变的SQL语句,把它写到binlog日志中。从库不需要打开binlog日志当它 开启复制式会自动生成IO线程,从库的IO线程是监控主库的binlog日志,一旦发现主库binlog日志有更 新,从库的IO线程会向主库的IO线程申请验证,然后把它记录在中继日志中,主库的SQL线程会把中继 日志中的SQL语句翻译过来执行到从库的数据库中既然要验证,那都验证些什么???

    1.主库IP

    2.主库socket进程的端口

    3.主库的复制账号和密码

    4.复制哪个二进制文件的名字

    5.二进制文件中position具体位置 从库中记录验证信息和二进制文件位置信息的文件是:master.info

    注意主从复制之前要保证主库和从库的数据是一致的 怎么去保证一致:把主库的数据全备,然后在从库上导入,这样就保证了主从数据库的内容是一致的

    搭建主从复制

    1.主库配置文件(/etc/my.cnf)

    开启binlog日志

    修改server-id(不能与从库一致)

    2.从库配置文件

    开启中继日志 relay-log=relay-log-bin

    3.在主库创建账号

    grant replication slave on *.* to 'mysql'@'192.168.200.%' identified by '666666''

    4.查看主库的binlog日志以及master

    show master status;

    5.在从库进行身份录入

    change master to master_host='192.168.200.133',master_user='myslave',master_password='666666',master_log_file='mysql-bin.000001',master_log_pos=781;

    6.从库激活主从复制

    start slave

    show slave status \G 查看状态(IO和SQL都必须是yes)才算成功

    如果IO是NO,可能的原因:

    1.身份录入错误

    2.主服务器开启了防火墙

    SQL是NO,可能的原因:

    sql语句出错(从库被写入数据)

    MySQL主从复制延迟问题的原因及解决方案

    1.主库的从库太多,导致复制延迟

    2.从库硬件比主库差,导致复制延迟

    3.慢SQL语句太多
     4.主从复制的设置问题

    5.网络延迟问题

    6.主库读写压力大,导致复制延迟

    主从复制的上线过程

    1.先需要把主库临时设置为只读(此时也不能创建库),那么用户在写入数据的时候就会卡住,成为无响应状态,然后进行全备
    2.手动解锁
    flush table with read lock  临时锁表
    unlock tables 解锁
     
  • 相关阅读:
    [LeetCode] Coin Change
    [LeetCode] House Robber
    [LeetCode] Lowest Common Ancestor of a Binary Search Tree
    [LeetCode] Remove Element
    [LeetCode] Merge Two Sorted Lists
    [LeetCode] Duplicate Emails
    svn propset svn:ignore
    WebLogic11g-负载分发
    WebLogic11g-集群相关概念
    WebLogic11g-半小时让你的domain集群化
  • 原文地址:https://www.cnblogs.com/zhangtao11/p/9879546.html
Copyright © 2020-2023  润新知