zoukankan      html  css  js  c++  java
  • 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 解锁
     
  • 相关阅读:
    C#listbox使用方法
    poj 3894 System Engineer (二分图最大匹配--匈牙利算法)
    Java实现 蓝桥杯VIP 算法训练 连接字符串
    Java实现 蓝桥杯VIP 算法训练 连接字符串
    Java实现 蓝桥杯VIP 算法训练 比较字符串
    Java实现 蓝桥杯VIP 算法训练 比较字符串
    Java实现 蓝桥杯VIP 算法训练 比较字符串
    Java实现 蓝桥杯VIP 算法训练 比较字符串
    Java实现 蓝桥杯VIP 算法训练 比较字符串
    Java实现 蓝桥杯VIP 算法训练 黑白无常
  • 原文地址:https://www.cnblogs.com/zhangtao11/p/9879546.html
Copyright © 2011-2022 走看看