MySQL高可用架构

MySQL高可用架构
1.主从架构中,从库写数据之后,主库依然能同步数据到从库.
2.忽略的数据库复制:
    在主库的配置文件中添加
        binlog_do_db=dbname(多个)
        binlog_ignore_db=ignoreDB(多个)
    在从库配置(默认全部db):
        replicate-do-db=dbName
        replicate-rewrite-db=masterDbname -> slaveDbname,主从库名不一致,做映射。
        replicate-wild-do-table=db.table(可以配置多个) 复制的数据库表。默认全部表。
3.从库设置read_only=1避免在从库上写数据。这属性只限制普通用户的读写。
4.设置super_read_only=1 限制super用户写从库。
5.开启Gtid在主节点上gtid_mode=on,enforce_gtid_consistency=on
6.默认主库异步发送binlog到从库,导致主从临时的数据不一致。
7.半同步:同步 + 超时机制。
8.半同步需要在master上加上semisync_master.so到plugin目录,在slave上加上semisync_slave.so到plugin目录。
    安装命令:在MySQL的命令行执行install plugin rpl_semi_sync_slave/master soneme 'semisycn_slave.so'
9.主从架构数据延迟问题解决
    原因:单线程dump binlog,多线程写入数据
    方案:slave多线程dump,在slave上设置slave_parallel_workers 设置大于0的值;
         slave_parallel_type设置成LOGIC_CLOCK--将dump线程设置为多线程。
10.高可用方案
    共同点:监控master,对master进行迁移(通过VIP:虚拟ip),重新配置其他slave对新master的复制。
            通过第三方工具搭建。
    MMM:多主复制,只有一个对外提供服务。只监控/切换主节点--用的比较少。不至此GTID方式。
    MHA:监控主节点,主节点挂了切换为slave节点,最大限度保证数据一致性。需要部署master节点和node节点,master节点单独部署,node节点和mysql实例部署在一起。支持GTID方式。需要定制VIP脚本。
    MGR:MySQL官方提供,一个复制组有多个成功后才算成功。

分库分表:
    垂直分片: 不同的数据存放在不同的库表,根据业务分库。
    水平分片: 相同的数据存放在不同的库表,表结构一致。


ShardingSphere
    sqlNum/maxConnections.per.query = 0/1 内存限制模式 >1 链接限制模式 链接限制模式把所有的数据放到内存进行归并,效率高;内存限制模式,每个链接的数据拿到后在放到内存进行归并,效率低下。
 

你可能感兴趣的:(MySQL,高可用,数据库架构)