• Mysql集群架构


    参考文章:https://www.cnblogs.com/phpstudy2015-6/p/6706465.html

    1、Mysql读写分离架构

      主库,负责写入数据,我们称之为“写库”;

      其他都是从库,负责读取数据,我们称之为“读库”

    要求:

     1)读库和写库的数据要一致

     2)写数据必须写到写库中

     3)读数据必须到读库

    存在问题思路解决:

    一、在程序controller到service层加一个aop切层,切换数据源,但是对service层方法命名有要求

    二、中间件解决

    主从之间的同步,是异步完成,也就意味着是弱一致性。由于网络传输问题,可能从库没有同步到主库的数据 —— 这个问题可以通过PXC集群解决

    2、中间件架构

    单个中间件压力过大,采取多个中间件

     3、PXC架构

     4、混合架构

     5、主从复制原理

     主库配置文件my.conf

    #开启主从复制,主库的配置
    log-bin = mysql-bin
    #指定主库serverid
    server-id=1
    #指定同步的数据库,如果不指定则同步全部数据库
    binlog-do-db=my_test
    #执行SQL语句查询状态
    SHOW MASTER STATUS

    在主库创建同步用户

    #授权用户slave01使用123456密码登录mysql
    grant replication slave on *.* to 'slave01'@'127.0.0.1' identified by '123456';
    #刷新配置
    flush privileges;

    从库配置文件my.conf

    #指定serverid,只要不重复即可,从库也只有这一个配置,其他都在SQL语句中操作
    server-id=2
    #以下执行SQL:
    CHANGE MASTER TO
    master_host='127.0.0.1',
    master_user='slave01',
    master_password='123456',
    master_port=3306,
    master_log_file='mysql-bin.000006',
    master_log_pos=1120;
    #启动slave同步
    START SLAVE;
    #查看同步状态
    SHOW SLAVE STATUS;

    搭建主库

    #创建目录
    mkdir /data/mysql/master01
    cd /data/mysql/master01
    mkdir conf data
    chmod 777 * -R
    #创建配置文件
    cd /data/mysql/master01/conf
    vim my.cnf
    #输入如下内容
    [mysqld]
    log-bin=mysql-bin #开启二进制日志
    server-id=1 #服务id,不可重复
    #创建容器
    docker create --name percona-master01 -v /data/mysql/master01/data:/var/lib/mysql -v
    /data/mysql/master01/conf:/etc/my.cnf.d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root
    percona:5.7.23
    #启动
    docker start percona-master01 && docker logs -f percona-master01
    #创建同步账户以及授权
    create user 'itcast'@'%' identified by 'itcast';
    grant replication slave on *.* to 'itcast'@'%';
    flush privileges;
    #出现 [Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and错误解
    决方案,在my.cnf配置文件中设置
    sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO
    ,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
    #查看master状态
    show master status;
    #查看二进制日志相关的配置项
    show global variables like 'binlog%';
    #查看server相关的配置项
    show global variables like 'server%';

    搭建从库

    #创建目录
    mkdir /data/mysql/slave01
    cd /data/mysql/slave01
    mkdir conf data
    chmod 777 * -R
    #创建配置文件
    cd /data/mysql/slave01/conf
    vim my.cnf
    #输入如下内容
    [mysqld]
    server-id=2 #服务id,不可重复

    sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO
    ,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
    #创建容器
    docker create --name percona-slave01 -v /data/mysql/slave01/data:/var/lib/mysql -v
    /data/mysql/slave01/conf:/etc/my.cnf.d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root
    percona:5.7.23
    #启动
    docker start percona-slave01 && docker logs -f percona-slave01
    #设置master相关信息
    CHANGE MASTER TO
    master_host='192.168.1.18',
    master_user='itcast',
    master_password='itcast',
    master_port=3306,
    master_log_file='mysql-bin.000002',
    master_log_pos=648;
    #启动同步
    start slave;
    #查看master状态
    show slave status;
  • 相关阅读:
    并发编程学习笔记(八、volitile)
    MySQL调优学习笔记(六、SQL查询优化)
    MySQL调优学习笔记(五、高性能索引)
    MySQL调优学习笔记(四、索引)
    MySQL调优学习笔记(三、数据库优化)
    MySQL调优学习笔记(二、MySQL调优基础)
    MySQL调优学习笔记(一、MySQL基础)
    密码-简单加密
    密码-这不是摩斯密码
    密码-聪明的小羊
  • 原文地址:https://www.cnblogs.com/su-ke/p/13790607.html
Copyright © 2020-2023  润新知