博客
关于我
mysql主从复制,读写分离,半同步复制实现
阅读量:789 次
发布时间:2023-02-11

本文共 1876 字,大约阅读时间需要 6 分钟。

MySQL复制与半同步复制配置指南

主从服务器时间同步配置

确保主从服务器时间一致是MySQL复制的基础。建议使用NTPdate进行时间同步,以下是配置步骤:

yum -y install ntpdatecrontab -e */5 * * * * /usr/sbin/ntpdate cn.pool.ntp.org > /dev/null

注意事项:如果执行crontab时出现command not found错误,需先安装crontab:

yum -y install vixie-croncrontab -lchkconfig --list crondservice crond star

如何设置从服务器为只读

为了确保从服务器仅限只读,需启用read-only选项。以下是详细步骤:

  • 修改MySQL配置文件:
  • vim /etc/my.cnf:+62read-only=ON
    1. 启动服务并验证:
    2. service mysqld restartmysql -e "show global variables like '%read_only%'"
      1. 在主服务器上创建一个具有所有权限的用户,并授予从服务器访问权限:
      2. grant all on hellodb.* to 'testuser'@'192.168.%.%' identified by 'testpass';
        1. 在从服务器上验证用户访问权限:
        2. mysql -u testuser -h 192.168.81.133 -p

          MySQL复制事务安全配置

          默认情况下,MySQL采用异步复制机制。为了提高事务安全,可以通过以下方式进行优化:

        3. 关闭autocommit,在主服务器上手动提交事务:
        4. set global autocommit=0;
          1. 配置二进制日志文件同步:
          2. sync_binlog=1

            半同步复制概述

            半同步复制是一种混合性复制机制,结合了同步和异步的优点。以下是其核心概念和工作原理:

            半同步复制的工作原理

          3. 事件提交与等待机制:主服务器在提交事务时会等待至少一个从服务器确认已接收事件。
          4. 事件接收与处理:从服务器接收事件后,需将其写入relay-log并刷新磁盘。
          5. 动态切换机制:如果主服务器未在指定时间内接收到事件确认,会自动切换为异步复制模式。
          6. 半同步复制的优势

            • 性能优化:减少主服务器的等待时间。
            • 高可用性:在主服务器故障时,仍能保证部分数据一致性。
            • 灵活性:支持混合部署,既可以采用半同步,也可以切换为异步模式。

            半同步复制的安装与配置

            主服务器配置

          7. 安装半同步主节点插件:
          8. mysql -e "install plugin semisync_master.so"
            1. 启用插件:
            2. set global rpl_semi_sync_master_enabled=ON;set global rpl_semi_sync_master_timeout=1000;
              1. 查看插件状态:
              2. show global variables like '%semi%';

                从服务器配置

              3. 安装半同步从节点插件:
              4. mysql -e "install plugin semisync_slave.so"
                1. 启用插件:
                2. set global rpl_semi_sync_slave_enabled=ON;
                  1. 查看插件状态:
                  2. show global variables like '%semi%';

                    半同步复制的实际测试

                  3. 在主服务器上执行事务操作:
                  4. use hellodb;create table t1 (id int);
                    1. 在从服务器上验证数据同步:
                    2. mysql -u testuser -h 192.168.81.133 -p show databases;use hellodb;show tables;
                      1. 重启IO_THREAD并启动从服务器:
                      2. STOP SLAVE IO_THREAD;START SLAVE IO_THREAD;

                        如何验证半同步复制生效

                      3. 在主服务器上执行DML操作:
                      4. use hellodb;create table t4 (Name char(10));
                        1. 查看半同步复制状态:
                        2. show global status like '%semi%';
                          1. 检查从服务器的接收情况:
                          2. mysql -u testuser -h 192.168.81.133 -p show global variables like '%semi%';

                            通过以上步骤,可以实现MySQL的高效、安全的半同步复制配置。

    转载地址:http://etbfk.baihongyu.com/

    你可能感兴趣的文章
    mysql 字段区分大小写
    查看>>
    mysql 字段合并问题(group_concat)
    查看>>
    mysql 字段类型类型
    查看>>
    MySQL 字符串截取函数,字段截取,字符串截取
    查看>>
    MySQL 存储引擎
    查看>>
    mysql 存储过程 注入_mysql 视图 事务 存储过程 SQL注入
    查看>>
    MySQL 存储过程参数:in、out、inout
    查看>>
    mysql 存储过程每隔一段时间执行一次
    查看>>
    mysql 存在update不存在insert
    查看>>
    Mysql 学习总结(86)—— Mysql 的 JSON 数据类型正确使用姿势
    查看>>
    Mysql 学习总结(87)—— Mysql 执行计划(Explain)再总结
    查看>>
    Mysql 学习总结(88)—— Mysql 官方为什么不推荐用雪花 id 和 uuid 做 MySQL 主键
    查看>>
    Mysql 学习总结(89)—— Mysql 库表容量统计
    查看>>
    mysql 实现主从复制/主从同步
    查看>>
    mysql 审核_审核MySQL数据库上的登录
    查看>>
    mysql 导入 sql 文件时 ERROR 1046 (3D000) no database selected 错误的解决
    查看>>
    mysql 导入导出大文件
    查看>>
    mysql 将null转代为0
    查看>>
    mysql 常用
    查看>>
    MySQL 常用列类型
    查看>>