美文网首页
主从复制基础

主从复制基础

作者: 学Linux的小子 | 来源:发表于2019-08-16 19:07 被阅读0次

    0. 企业高可用性标准(全年故障率)

    99.9%                 ----> 0.001*365*24*60=525.6  min  
    99.99%                ----> 0.0001*365*24*60=52.56 min
    99.999%               ----> 0.0001*365*24*60=5.256 min    金融级别
    

    0.1企业级高可用方案

    负载均衡:有一定的高可用性 
    LVS  Nginx
    
    主备系统:有高可用性,但是需要切换,是单活的架构
    KeepAlive ,   MMM  ,  
    MHA*****
    
    真正高可用(多活系统): 
    MySQL  NDB  Cluster  
    Oracle RAC  
    Sysbase cluster   
    PXC    ***
    MGC   ***
    InnoDB Cluster(MGR)*****
    

    1.主从复制的简介**

    1.1. 基于二进制日志复制的
    1.2. 主库的修改操作会记录二进制日志
    1.3. 从库会请求新的二进制日志并回放,最终达到主从数据同步
    1.4. 主从复制核心功能:
    辅助备份,处理物理损坏                   
    扩展新型的架构:高可用,高性能,分布式架构等
    

    2.主从复制的前提(主从复制的规划实施过程)

    ##2.1  至少两个数据库实例
    ##2.2  主库要开启binlog,不同的server_id,server_uuid
    ##2.3  主库要有一个专门用作复制的用户(replication slave)
    ##2.4  通过备份将资源库数据补偿到从库
    ##2.5  告知从库,用户名密码,ip,port,自动复制的起点
    ##2.6  需要专门的复制线程(start slave)
    

    3. 搭建主从复制

    3.1搭建多实例环境
    [root@db01 ~]# mysql -S /data/3307/mysql.sock
    [root@db01 ~]# mysql -S /data/3308/mysql.sock
    3.2 检查 主库binlog,不同server_id,server_uuid
    [root@db01 ~]# mysql -S /data/3307/mysql.sock -e "select @@log_bin;select @@server_id"
    [root@db01 ~]# mysql -S /data/3308/mysql.sock -e "select @@log_bin;select @@server_id"
    3.3 主库创建复制用户
    [root@db01 ~]# mysql -S /data/3307/mysql.sock -e "grant replication slave on *.* to repl@'10.0.0.%' identified by '123';"
    [root@db01 ~]# mysql -S /data/3307/mysql.sock -e "select user,host from mysql.user where user='repl';"
    3.4 通过备份将源库数据补偿到从库
    [root@db01 ~]# mysqldump  -S /data/3307/mysql.sock -A  -R -E --triggers --master-data=2 --single-transaction --max-allowed-packet=128M   >/tmp/full.sql
    
    3.5 告知从库,用户名,密码,ip,port,自动复制的起点
    # change master to 
    [root@db01 ~]# mysql -S /data/3308/mysql.sock
    oldguo[(none)]>help change master to
    
    vim /tmp/full.sql
    -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000011', MASTER_LOG_POS=444;
    
    CHANGE MASTER TO
      MASTER_HOST='10.0.0.51',
      MASTER_USER='repl',
      MASTER_PASSWORD='123',
      MASTER_PORT=3307,
      MASTER_LOG_FILE='mysql-bin.000006',
      MASTER_LOG_POS=444,
      MASTER_CONNECT_RETRY=10;
    3.6 启动主从线程
    [root@db01 ~]# mysql -S /data/3308/mysql.sock
    oldguo[(none)]>start slave;
    
    3.7 检测主从状态
    [root@db01 ~]# mysql -S /data/3308/mysql.sock -e "show slave status \G"|grep Yes
    
    

    4.1 主从复制过程中涉及到的文件

    主库: 
    binlog   日志
    /data/3307:
    mysql-bin.000001
    mysql-bin.000002
    从库: 
    relaylog 中继日志
    /data/3308/data
    db01-relay-bin.000001
    db01-relay-bin.000002
    
    4.1.2 从库: 
    relaylog 中继日志
    临时存储日志信息的文件
    /data/3308/data
    db01-relay-bin.000001
    db01-relay-bin.000002
    master.info 信息文件
    主库信息文件
    relay-log.info 信息文件
    中继日志信息文件
    
    
    

    4.2 主从复制中涉及到的线程
    主库:
    Binlog_Dump_Thread(二进制日志投递线程)
    [root@db01 /data/3308/data]# mysql -S /data/3307/mysql.sock -e "show processlist;"

    从库:
    Slave_IO_Thread
    Slave_SQL_Thread

    相关文章

      网友评论

          本文标题:主从复制基础

          本文链接:https://www.haomeiwen.com/subject/xbsqsctx.html