zoukankan      html  css  js  c++  java
  • mysql主主复制

    -1 主主复制读分担50%,写无法分担

    -2 配置方法

    --1 服务器1号(192.168.1.1)配置完,重启mysql

    1   [mysql]
    2   server-id=1
    3   log-bin=mysql-bin
    4   auto-increment-increment=2 
    5   auto-increment-offset=1
    6   sync-binlog=1
    7   innodb-flush-logs-at-trx-commit=1
    8   replication-ignore-db=mysql

    --2 服务器2号(192.168.1.2)配置完,重启mysql

    1   [mysql]
    2   server-id=1
    3   log-bin=mysql-bin
    4   auto-increment-increment=2 
    5   auto-increment-offset=2
    6   sync-binlog=1
    7   innodb-flush-logs-at-trx-commit=1
    8   replication-ignore-db=mysql

    auto-increment-increment的值应设为整个结构中服务器的总数,本案例用到两台服务器,所以值设为2

    auto-increment-offset的值用来设定数据库中自动增长的起点的,因为这两台服务器都设定了一次同一个自动增长值2,所以它们的起点必须得不同,这样才能避免两台服务器数据同步时出现主键冲突

    --3 服务器1号备份当前数据并记录备份前一刻的bin日志位置(--lock-all-tables自缩/解表,--master-data=2加入bin日志位置,方便一会查看,这里假设1号当前日志是mysql-bin.000004;位置是300)

     ---1 备份服务器1号当前数据

    1    mysqldump --all-databases --lock-all-tables --master-data=2 > /tmp/mysql1.sql
    2 
    3    scp /tmp/mysql1.sql root@192.168.1.2:/tmp/

     ---2 创建授权账号

        ----1 服务器1号授权给服务器2号      

    1   mysql -uroot
    2   >GRANT REPLICATION CLIENT,REPLICATION SLAVE ON *.* TO 'REPL1'@'192.168.1.1' IDENTIFIED BY '123456';

        ----2 服务器2号授权给服务器1号

    1   mysql -uroot
    2   >GRANT REPLICATION CLIENT,REPLICATION SLAVE ON *.* TO 'REPL2'@'192.168.1.2' IDENTIFIED BY '123456';

    --4 服务器2号导入1号数据,保证1/2号数据库一致性,记录此时2号日志位置(这里假设2号日志是mysql-bin.000001;位置是100);添加1号日志位置,并开启2号slave;

       同时服务器1号添加2号日志位置,并开启1号slave;

      ---1 服务器2号

     1     mysql -uroot -ppassword < /tmp/mysql1.sql
     2     mysql -uroot
     3 
     4     >FLUSH TABLES WITH READ LOCK;
     5 
     6     >SHOW MASTER STATUSG
     7 
     8     >UNLOCK TABLES;
     9 
    10     >CHANGE MASTER TO MASTER_HOST='192.168.1.1',MASTER_USER='REPL1',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql_bin.000004' 
    11 
    12      MASTER_LOG_POS='300';
    13 
    14     >START SLAVE;

      ---2 服务器1号

    1     mysql -uroot
    2 
    3     >CHANGE MASTER TO MASTER_HOST='192.168.1.2',MASTER_USER='PERL2',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql_bin-00001' 
    4 
    5      MASTER_LOG_POS='100';
    6 
    7     >START SLAVE;

    关于FLUSH TABLES WITH READ LOCK

    -1 进入mysql会话使用此命令时一定不能退出会话,如果退出会话,所有表会自动解锁

    -2 使用flush tables with read lock后再用mysqldump导出数据库脚本会遇到“Toomany connections”的错误,此时在my.cnf中添加“max_connections=500”以及”max_packet=32M”的选项

     
     binlog-format?
     
    [星空刺] |-->一颗星辰一闪即逝,支撑它的唯有方向和目的
  • 相关阅读:
    EFCore.BulkExtensions Demo
    查询处理器用尽了内部资源,无法生成查询计划。这种情况很少出现,只有在查询极其复杂或引用了大量表或分区时才会出现。请简化查询。如果您认为该消息的出现纯属错误,请与客户支持服务部门联系,了解详细信息
    .net core 删除主表,同时删除子表
    java 数据类型优先级
    string.Join 的用法
    JDK-13下载安装及环境变量配置
    Java 前加加和后加加 总结
    变量类型查看-type
    路径:获取 & 更改
    用sql获取数据库中所有的表名、字段名
  • 原文地址:https://www.cnblogs.com/aaa103439/p/3298833.html
Copyright © 2011-2022 走看看