当前位置: 首页 > news >正文

mariadb主从复制/半同步复制

mariadb主从复制:
复制:每个节点都有相同的数据集
从节点:
I/O Thread:从master请求二进制日志事件,并保持在中继日志中
SQL Thread:从中继日志中读取日志事件,在本地完成重放
主节点:
dump Thread:为每个slave的I/O Thread启动一个dump线程,用于向其发送binary log events
特点:
1.异步复制
2.主从数据不一致比较常见
3.一主多从
4.从服务器还可以有从服务
配置过程:
主节点:
1.启动二进制日志
2.为当前节点设置一个全局唯一的ID号
3.创建有复制权限的用户账号
replication slave,replication client
从节点:
1.启动中继日志
2.位当前节点设置一个全局唯一的ID号
3.使用有复制权限的用户账号连接至主服务器,并启动复制线程

    复制架构中应该注意的问题:
    1.限制从服务器为只读
        在从服务器上设置read_only=ON;此限制对拥有SUPER权限的用户均无效;
        阻止所有用户;
            mysql>flush tables with read lock;
    2.如何保证主从复制的事务安全:
        在master节点启用参数:
            sync_binlog=ON
            如果用到的为InnoDB存储引擎;
            innodb_flush_logs_at_trx_commit=ON
            inndb_support_xa=ON
        在slave节点;
            skip_slave_start=ON

    复制过滤器
让从节点仅复制指定的数据库,或指定数据库的指定表
有两种实现方式;
    1.主服务器仅向二进制日志中记录与特定数据库(特定表)相关的事件;
    问题:事件还原无法实现:不建议使用
    binlog_do_db=       #数据库白名单列表
    binlog_ignore_do    #数据库黑名单列表
    2.从服务SQL_THREAD在replay中继日志的事件时,仅读取与特定数据库(特定表)相关的事件并应用于本地
    问题:会造成网络磁盘IO浪费;
    replicate_do_db=
    replicate_ignore_db=
    replicate_do_table=
    replicate_ignore_table=
    replicate_wind_do_table=
    replicate_wind_ignore_table=
主从复制配置:
    主节点:
        vi /etc/my.cnf
        在[mysqld]中加入:
        log-bin=mysql_bin_log    #启动二进制日志
        server-id=1            #主节点和从节点一定要不通
        innodb_file_per_table=ON 
        skip_name_resolve=ON
        重启mariadb:systemctl  restart mariadb
        创建复制用户并授权:
        MariaDB [(none)]> grant replication slave,replication slave on *.* to 'repluser'@'172.16.%.%' identified by '123456'
        MariaDB [(none)]> show master logs;
        +----------------------+-----------+
        | Log_name             | File_size |
        +----------------------+-----------+
        | mysql_bin_log.000001 |     30379 |
        | mysql_bin_log.000002 |   1038814 |
        | mysql_bin_log.000003 |       264 |
        | mysql_bin_log.000004 |       264 |
        | mysql_bin_log.000005 |       245 |        #记住这个二进制文件名和对应的序号
        +----------------------+-----------+
        5 rows in set (0.00 sec)

    从节点:
          vi /etc/my.cnf
          在[mysqld]中加入:
            relay-log=relay-log
            server-id=2
            innodb_file_per_table=ON
            skip_name_resolve=ON

        重启mariadb:systemctl  restart mariadb    
      连接主服务器:
        MariaDB [(none)]> change master to master_host='172.16.6.12',master_user='repluser',master_password='123456',master_log_file='mysql_bin_log.000005',master_log_pos=245;
        开始复制:
        MariaDB [(none)]> start slave;
        查看复制状态:
        MariaDB [(none)]> show slave status\G;

        mariadb半同步复制:   
        主节点
        MariaDB [(none)]> install plugin rpl_semi_sync_master SONAME 'semisync_master.so';
        MariaDB [(none)]> set global rpl_semi_sync_master_enabled=1;
        MariaDB [(none)]> show plugins;
        MariaDB [(none)]> show global variables like '%semi%';
        MariaDB [(none)]> show global status like '%semi%';
        从节点:
        MariaDB [(none)]> install plugin rpl_semi_sync_slave SONAME 'semisync_slave.so';
        MariaDB [(none)]> set global rpl_semi_sync_slave_enabled=1; 
        MariaDB [(none)]> show plugins;
        MariaDB [(none)]> show global variables like '%semi%';  
        MariaDB [(none)]> start slave

转载于:https://blog.51cto.com/perper/2058645

相关文章:

  • 我的速读理解
  • Tengine 结合 lua 防御 cc ***
  • 常见高危安全漏洞
  • ajax发送post请求
  • 类型信息
  • mysql如何执行关联查询与优化
  • HP C7000刀片服务器实战3:Redhat Linux 6.8操作系统安装
  • webview 设置夜间模式
  • 004 Ubuntu上安装truffle
  • 2.windows下安装git
  • 【Java】List转化为数组
  • HyperLedger Fabric ChainCode开发——shim.ChaincodeStubInterface用法
  • python之元组
  • lsyncd实时同步搭建指南——取代rsync+inotify
  • 互相牵制的能力
  • 【翻译】babel对TC39装饰器草案的实现
  • 【知识碎片】第三方登录弹窗效果
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  • Docker入门(二) - Dockerfile
  • es6要点
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • JavaWeb(学习笔记二)
  • Linux下的乱码问题
  • Octave 入门
  • 从tcpdump抓包看TCP/IP协议
  • 飞驰在Mesos的涡轮引擎上
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 批量截取pdf文件
  • 前端技术周刊 2019-02-11 Serverless
  • 深入浏览器事件循环的本质
  • ​2020 年大前端技术趋势解读
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (分布式缓存)Redis哨兵
  • (过滤器)Filter和(监听器)listener
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (十)c52学习之旅-定时器实验
  • (转)人的集合论——移山之道
  • (转)重识new
  • .NET I/O 学习笔记:对文件和目录进行解压缩操作
  • .net6 webapi log4net完整配置使用流程
  • @Controller和@RestController的区别?
  • @RequestMapping-占位符映射
  • @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
  • @vue/cli脚手架
  • [2018][note]用于超快偏振开关和动态光束分裂的all-optical有源THz超表——
  • [Android]如何调试Native memory crash issue
  • [ASP]青辰网络考试管理系统NES X3.5
  • [BZOJ1089][SCOI2003]严格n元树(递推+高精度)
  • [C/C++]关于C++11中的std::move和std::forward
  • [codevs] 1029 遍历问题
  • [CQOI 2010]扑克牌