zoukankan      html  css  js  c++  java
  • 28_MySQL主从同步 、主从同步模式

    版本:5.7.28

    mysql51:192.168.4.51 主
    mysql52:192.168.4.52 从
    mysql50:192.168.4.50 客户机
     
    1.MySQL一主一从
     
    1.1 51,52 安装mysql,设置密码123456
    51:
    [mysqld]
    log-bin=master51
    server_id=51
    binlog_format="mixed"
    52:
    [mysqld]
    log-bin=mysql52
    server_id=52
    binlog_format="mixed"
     
    1.2 主库授权
    需要的权限为REPLICATION SLAVE,允许其从Slave服务器访问:
    mysql> GRANT REPLICATION SLAVE ON *.* TO 'replicater'@'192.168.4.%' IDENTIFIED BY '123qqq...A';
     
    检查Master服务器的同步状态
    在已经初始化现有库的情况下,查看MASTER状态,记录下当前的日志文件名、偏移的位置(下面SLAVE发起复制时需要用到):
    mysql> SHOW MASTER STATUSG
    *************************** 1. row ***************************
                 File: master51.000001
             Position: 453
         Binlog_Do_DB:
     Binlog_Ignore_DB:
    Executed_Gtid_Set:
     
    1.3 从库配置(52)
    mysql> CHANGE MASTER TO
        -> MASTER_HOST='192.168.4.51',
        -> MASTER_USER='replicater',
        -> MASTER_PASSWORD='123qqq...A',
        -> MASTER_LOG_FILE='master51.000001',
        -> MASTER_LOG_POS=453;
    mysql> START SLAVE;   //启动复制
    mysql> SHOW SLAVE STATUSG
    ...
      Slave_IO_Running: Yes
      Slave_SQL_Running: Yes
    ...
    注意:一旦启用SLAVE复制,当需要修改MASTER信息时,应先执行STOP SLAVE停止复制,然后重新修改、启动复制。
    主从配置好后,Master写的数据可以同步到Slave上,Slave的数据不能同步到Master上。
     
    在Master服务器上可查看Slave主机的信息
    mysql> SHOW SLAVE HOSTS;
    +-----------+------+------+-----------+--------------------------------------+
    | Server_id | Host | Port | Master_id | Slave_UUID                           |
    +-----------+------+------+-----------+--------------------------------------+
    |        52 |      | 3306 |        51 | 368bd89a-467d-11ea-8518-525400b28f0b |
    +-----------+------+------+-----------+--------------------------------------+

    2.配置主从从同步结构
    配置主机192.168.4.51为主数据库服务器
    配置主机192.168.4.52为51主机的从库服务器
    配置主机192.168.4.53为52主机的从库服务器
    客户端连接主数据库服务器51主机创建的数据,连接52和53主机时,也可以访问到库、表、记录。
     
    2.1 配置主机192.168.4.53为52主机的从库服务器
    2.1.1 在服务器192.168.4.52上对user53用户进行授权
    mysql> grant replication slave on *.* to user53@"192.168.4.53" identified  by "123qqq...A";
    ]# vim /etc/my.cnf
    ...
    log_slave_updates   //允许级联复制
    mysql> SHOW MASTER STATUSG
    *************************** 1. row ***************************
                 File: mysql52.000002
             Position: 154
         Binlog_Do_DB:
     Binlog_Ignore_DB:
    Executed_Gtid_Set:
     
    2.1.2 配置从服务器192.168.4.53
    验证登陆
    ]# mysql -h192.168.4.52 -uuser53 -p123qqq...A
    正常登陆:
    ]# mysql -uroot -p123456
    mysql> CHANGE MASTER TO
        -> MASTER_HOST='192.168.4.52',
        -> MASTER_USER='user53',
        -> MASTER_PASSWORD='123qqq...A',
        -> MASTER_LOG_FILE='mysql52.000002',
        -> MASTER_LOG_POS=154;
     
    ************************
    修改密码验证:
    [mysqld]
    validate_password_policy=0
    validate_password_length=6
    ************************
     
    mysql> START SLAVE;
    mysql> SHOW SLAVE STATUSG
    ...
     Slave_IO_Running: Yes
     Slave_SQL_Running: Yes
    ...
    如果出问题
    mysql>STOP SLAVE;
    mysql>RESET SLAVE;
    mysql>START SLAVE;
    或者
    mysql> change master to
    可以单独修改某一句
     
    2.1.3 检测:
    51写的数据会同步到52,53
    52写的数据会同步到53
    53写的数据只会再本地
     
    3.配置半同步复制模式
    开启案例1 主库192.168.4.51 半同步复制模式
    开启案例1 从库192.168.4.52 半同步复制模式
    开启案例1 从库192.168.4.53 半同步复制模式
    查看半同步复制模式是否开启
     
    3.1 查看是否允许动态加载模块
    mysql> show variables like 'have_dynamic_loading';
    +----------------------+-------+
    | Variable_name        | Value |
    +----------------------+-------+
    | have_dynamic_loading | YES   |
    +----------------------+-------+
     
    3.1 命令行加载插件,用户需有SUPER权限
    mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
    从库上面操作:
    mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
    查看系统库下的表,模块是否安装成功:
    mysql> SELECT PLUGIN_NAME,PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME LIKE '%semi%';
     
    启用半同步复制,在安装完插件后,半同步复制默认是关闭的
    主库上面执行:
    mysql> SET GLOBAL rpl_semi_sync_master_enabled = 1;
    从库上面执行:
    mysql> SET GLOBAL rpl_semi_sync_slave_enabled = 1;
    查看半同步复制模式是否启用:
    mysql> show variables like "rpl_semi_sync_%_enabled";
     
    永久启用半同步复制
    主库配置
    ]# vim /etc/my.cnf
    [mysqld]
    plugin-load=rpl_semi_sync_master=semisync_master.so
    rpl_semi_sync_master_enabled=1
    从库配置
    ]# vim /etc/my.cnf
    [mysqld]
    plugin-load=rpl_semi_sync_slave=semisync_slave.so
    rpl_semi_sync_slave_enabled=1
    在高可用架构下,master和slave需同时启动,以便在切换后能继续使用半同步复制
    master51 ~]# vim /etc/my.cnf
    [mysqld]
    plugin-load
    ="rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
    rpl-semi-sync-master-enabled = 1
    rpl-semi-sync-slave-enabled = 1
     
    查看:
    mysql> show variables like "rpl_semi_sync_%_enabled";
    +------------------------------+-------+
    | Variable_name                | Value |
    +------------------------------+-------+
    | rpl_semi_sync_master_enabled | ON    |
    | rpl_semi_sync_slave_enabled  | ON    |
    +------------------------------+-------+

  • 相关阅读:
    面向切面编程AOP
    多线程:Monitor、synchronized、volatile
    约束布局ConstraintLayout
    【转】StackTraceElement获取方法调用栈的信息
    Java中的Type
    Android App 架构演变
    Java泛型
    web测试方法总结
    机器学习 损失函数
    深度学习 激活函数
  • 原文地址:https://www.cnblogs.com/luwei0915/p/12257213.html
Copyright © 2011-2022 走看看