zoukankan      html  css  js  c++  java
  • mysql主主配置

    主主同步就是在本身的主从同步基础上再去从数据库上做一个主从同步,也就是互为主从的关系。

    但是有个问题,主主同步是两台服务器都有写权限,这就涉及到自增长重复问题。比如有自增长属性的ID字段的test表,停掉A机器,在B上对test表执行插入操作,返回插入ID为1; 再停掉slave,在A上执行插入操作,返回的插入ID也是1 ; 然后同时启动两台机器,就会出现主键ID重复!

    为了避免这个问题,我们在两台主机上设备不同的自增长,A插入奇数ID,B插入偶数ID。

    master:192.168.1.1

    slave:   192.168.1.2

    一、在master上的配置:


    1.修改my.cnf配置

    # 添加如下配置,不是覆盖
    vim /etc/my.cnf
    server-id = 1        
    log-bin = mysql-bin  
    binlog-ignore-db = mysql,information_schema
    sync_binlog = 1
    binlog_checksum = none
    binlog_format = mixed
    auto-increment-increment = 2    # 自增长为2
    auto-increment-offset = 1       # 从1开始,也就是全是奇数ID
    slave-skip-errors = all

    2.重启mysql,授权同步用户

    mysql> grant replication slave,replication client on *.* to repl@'192.168.1.2' identified by "123qqq...A";
    mysql> flush privileges;

    3.查看状态

    mysql> show master status;
    +------------------+----------+--------------+------------------+-------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
    +------------------+----------+--------------+------------------+-------------------+
    | mysql-bin.000001 |   609 |        |         |          |
    +------------------+----------+--------------+------------------+-------------------+
    

    二、在slave上的配置:


    1.修改my.cnf配置

    vim /etc/my.cnf
    server-id = 2       
    log-bin = mysql-bin  
    binlog-ignore-db = mysql,information_schema
    sync_binlog = 1
    binlog_checksum = none
    binlog_format = mixed
    auto-increment-increment = 2    # 自增长为2,也就是递增2
    auto-increment-offset = 2       # 从2开始,也就是插入偶数ID
    slave-skip-errors = all

    2.重启mysql,授权同步用户

    mysql> grant replication slave ,replication client on *.* to repl@'192.168.1.1' identified by "123qqq...A";  
    mysql> flush privileges;

    3.查看状态

    show master status;
    +------------------+----------+--------------+------------------+-------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
    +------------------+----------+--------------+------------------+-------------------+
    | mysql-bin.000001 |   609 |       |          |          |
    +------------------+----------+--------------+------------------+-------------------+

    三、在slave上做同步master的设置:

    mysql> change master to 
    master_host='192.168.1.1',
    master_user='repl',
    master_password='123qqq...A',
    master_log_file='mysql-bin.000001',
    master_log_pos=609;
    mysql
    > start slave; mysql> show slave status G; *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.1.1 Master_User: repl Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000001 Read_Master_Log_Pos: 158 nelay_Log_File: mysql-relay-bin.000003 Relay_Log_Pos: 750 Relay_Master_Log_File: mysql-bin.000001 Slave_IO_Running: Yes      # 两个都显示YES,表示同步成功 Slave_SQL_Running: Yes ..................

    四、在master上做同步slave的设置: 

    mysql> change master to 
    master_host='192.168.1.2',
    master_user='repl',
    master_password='123qqq...A',
    master_log_file='mysql-bin.000001',
    master_log_pos=609; mysql> start slave; mysql> show slave status G; *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.1.2 Master_User: repl Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000001 Read_Master_Log_Pos: 256 Relay_Log_File: mysql-relay-bin.000003 Relay_Log_Pos: 750 Relay_Master_Log_File: mysql-bin.000001 Slave_IO_Running: Yes Slave_SQL_Running: Yes ..................
  • 相关阅读:
    主键、外键和索引的区别
    设置session超时的三种方式
    redis常用操作
    timestamp 转 date 处理后再转timestamp
    fragment在水平/垂直时的应用
    Activity堆栈管理
    ORMLite的使用
    onItemLongClick事件的监听
    Bundle的使用
    有关implicit Intent的使用
  • 原文地址:https://www.cnblogs.com/chenpingan/p/10632118.html
Copyright © 2011-2022 走看看