基于MySQL的架构优化

  • mysql的复制:

    实现在不同服务器上的分布:
        利用二进制日志增量进行;
        不需要太多的带宽,但是使用基于行的复制在进行大批量的更改时,会对带宽带来一定的压力,特别是跨IDC环境下进行的复制;  
        应该分批进行
    实现数据读取的负载均衡,需要其他组件配合使用
    增加数据的安全性
    实现数据库高可用和故障切换
    实现数据库在线升级
    
  • mysql的二进制日志:记录了所有对MySQL数据库的数据增删查改和对表和数据库的修改

  • binlog命令行的工具进行查看

    二进制日志格式:

    基于段的日志格式: binlog_format=STATEMENT
    
    基于行的日志格式: binlog_format=ROW
        binlog_row_image=[FULL|MINIMAL|NOBLOB]
    
    mysqlbinlog -vv 日志文件名称;
    
    混合日志格式:binlog_format=MIXED
        根据sql语句由系统决定使用基于段还是基于行的日志格式;
        数据量的大小由所执行的sql语句决定
    

    建议使用binlog_format=MIXED 或者 binlog_format=ROW并设置binlog_row_image=MINIMAL

  • 基于SQL语句的复制(SBR)

    优点:
    生成的日志量少,节约网络传输IO
    并不强制要求主从数据库的表定义完全相同
    相比于基于行的复制方式更为灵活

    缺点:
    对于非确定性事件,无法保证主从数据的一致性
    对于存储过程,触发器,自定义函数进行的修改也可以造成数据不一致
    相对于基于行的复制方式在从上执行时需要更多的行锁

  • 基于行的复制(PBR)

    优点:

    可以应用于任何SQL的复制包括非确定确定函数,存储过程等;
    可以减少数据库锁的使用
    

    缺点:

    要求主从数据库的表的结构相同,负责可能会中断复制;
    无法在从服务器上单独执行触发器
    
  • mysql复制的工作方式

  1. 主服务器将变更写入到二进制文件中
  2. 从服务器读取主服务器的二进制日志变更写入到relay_log中
  3. 在从服务器上重放rely_log中的日志
基于日志点的复制配置的步骤:
1.在主DB服务器上建立复制账号

    create user 'repl' @ 'IP段' identified by 'password';
    grant replication slave on *.* to 'repl' @ 'IP段';//授权

2.配置主库服务器

    bin_log=mysql-bin
    server_id = 100

3.配置数据库从服务器

    bin_log = mysql-bin
    server_id = 101
    relay_log = mysql-relay-bin
    log_slave_update = on[可选]
    read_only = on[可选]

4.初始化从服务器数据

    mysqldump --master-data=2 -single-transaction
    xtrabackup --slave-info[对innodb性能不进行锁表]

5.启动复制链路

    change master to master_host = '主服务器的ip地址' ,
        master_user = 'repl',
        master_password = 'password',
        master_log_file = 'mysql_log_file_name',
        master_log_pos = 4; 
实际的配置:

    1.配置主库:
        create user repl@'192.168.25.%' identified by '123456';
        grant replication slave on *.* to repl@'192.168.25.%';

    2.修改主从配置文件

    3.主数据库备份:mysqldump --single-transcation --master-data --triggers --         rout

你可能感兴趣的:(MySQL,数据库,mysql,架构,负载均衡)