mysql高可用架构一主多从(半同步复制+复制限制)

一、原理

写操作时单个数据库操作
    1.请求到达数据库程序——写到事务日志中
    2.程序读取事务日志——内存,在内存中运行完毕
    3.将内存中有关数据的操作——写到二进制日志
    4.内存操作——二进制写完之后;通知客户端操作完成
    5.(顺序写)将二进制日志的操作——定期刷到磁盘

写操作时主从数据库操作
    1.slave_I/O线程请求master二进制日志
    2.master_dump线程读取二进制日志给slave_I/O线程
    3.slave_I/O线程将接收到的二进制日志写到slave的relay_log(中继日志)
    4.slave_sql线程将relay_log运行到内存、写到二进制日志、刷到磁盘

二、步骤分析

1.一主多从+半同步

这里写图片描述

2.复制限制的设置

这里写图片描述

三、master配置

1.配置文件

vim /etc/my.cnf
    [mysqld]
    datadir=/var/lib/mysql
    socket=/var/lib/mysql/mysql.sock
    symbolic-links=0
    server_id=174
    log_bin=/var/lib/mysql/log_bin
    skip-name-resolve
    [mysqld_safe]
    log-error=/var/log/mariadb/mariadb.log
    pid-file=/var/run/mariadb/mariadb.pid

2.mysql>命令配置

给slave服务器replication权限-创建有replication 权限用户
             MariaDB [(none)]> grant replication slave,replication client on *.* to  slave@'%' identified by 'slave_passwd';


半同步设置
        安装半同步_master模块
               mysql>命令
                  install plugin rpl_semi_sync_master soname 'semisync_master.so';

        查看master半同步是否开启
            MariaDB [(none)]> show global variables like 'rpl_semi%';

        开启master半同步
            mysql>命令
              set global rpl_semi_sync_master_enabled=1;

四、slave配置

salve的server_id不同

1.配置文件

vim /etc/my.cnf
    [mysqld]
        datadir=/var/lib/mysql
        socket=/var/lib/mysql/mysql.sock
        symbolic-links=0
        server_id=175
        log_bin=/var/lib/mysql/log_bin
        relay_log=/var/lib/mysql/relay_log
        read_only=on
        log_slave_updates=1
        replicate_ignore_db=db1
        replicate_ignore_table=db2.table1,db2.table2
    [mysqld_safe]
        log-error=/var/log/mariadb/mariadb.log
        pid-file=/var/run/mariadb/mariadb.pid

2.mysql>命令配置

使用master创建的repliction权限用户
    change master to master_host='192.168.17.174', master_user='slave', master_password='slave_passwd', master_log_file='log_bin.000001',master_log_pos=412;

开启I/O线程和sql线程
    start slave;


半同步设置
    安装半同步_slave模块
        install plugin rpl_semi_sync_slave soname'semisync_slave.so';
    查看master半同步是否开启
        show global variables like 'rpl_semi%';
    开启slave半同步
        set global rpl_semi_sync_slave_enabled=1;
重启I/O线程和sql线程
    先stop,再start
        stop slave;
        start slave;

查看状态
    查看从服务器状态
        SHOW SLAVE STATUS\G
    查看当前复制状态
        show processlist \G

五、复制限制的表现

这里写图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值