Mysql配置(4)

1.mysql分库分表

1).分库
    A.水平分库(冷热数据拆分)
    B.垂直分库(模块化 业务碎片化)
2).分表
    A.水平分表(套表)
        a).ID值域划分
        b).ID取模划分
    B.垂直分表(大表拆小表)
3).分区
    A.概念     -【并非拆表,而是将数据均匀分布在硬盘】
    B.解决问题 -【提高查询效率】
    C.使用(PARTITION)
        CREATE TABLE sales (
        id INT AUTO_INCREMENT,
        amount DOUBLE NOT NULL,
        order_day DATETIME NOT NULL,
        PRIMARY KEY(id, order_day)
        ) ENGINE=Innodb 
        PARTITION BY RANGE(YEAR(order_day)) (
        PARTITION p_2010 VALUES LESS THAN (2010),
        PARTITION p_2011 VALUES LESS THAN (2011),
        PARTITION p_2012 VALUES LESS THAN (2012),
        PARTITION p_catchall VALUES LESS THAN MAXVALUE);
    D.水平与垂直
        a).水平-【range范围 hash哈希 key键值 list预定义列表 composite 复合模式】     
        b).垂直-【按列分】
4).分片
    A.概念-【数据分片一般都是使用Key或Key的哈希值来计算Key的分布】
    B.目的-【均匀分布/负载均衡/扩容迁移尽可能少】
    C.使用
        a).划分号段
        b).取模
        c).检索表
        d).一致性哈希
5).分库分表问题
    A.跨库join
        a).冗余字段
        b).全局表
        c).代码层面数据组装
    B.跨库事务
        a).分布式事务【XA协议(消息事务-数据库事务) 两阶段提交 】
        b).最终一致性【事务补偿】
6).分库分表中间件 

2.mysql主从(读写分离)

1).过程
    A.主将更改操作记录记录到binlog【log dump线程】
    B.从将主binlog事件(sql)同步到本机上并记录在relaylog(中继日志)【I/O线程、SQL线程】
    C.从根据relaylog的sql按顺序执行
2).配置
    A.主服务配置(conf配置a)和b))【binlog-do-db |binlog_ignore_db】
        a).log-bin=mysql-bin           //开启二进制日志
        b).server-id=1                 //设置server-id
        c).创建一个用于slave和master通信的用户账号【REPLICATION SLAVE ON】
        d).SHOW MASTER STATUS;         //获得master二进制日志文件名及位置
    B.从服务配置
        a).server-id=2                 //设置server-id,必须唯一
        b).CHANGE MASTER TO
            -> MASTER_HOST='host',
            -> MASTER_USER='user',
            -> MASTER_PASSWORD='pwd',
            -> MASTER_LOG_FILE='binlogName',
            -> MASTER_LOG_POS=xxx;    //使用master分配的用户账号读取master二进制日志
        c).start slave                //启用slave服务【start、stop】
        d).SHOW SLAVE STATUS\G        //查看slave状态【Slave_IO_Running、Slave_SQL_Running】

3.mysql集群
分库中间件参考
mysql集群参考

你可能感兴趣的:(mysql,分库分表,mysql主从,mysql集群)