• Mysql集群讲解(五) 多主多从环境搭建


    Mysql集群讲解(五) 多主多从环境搭建

    A:概述:

     一主多从,可以缓解读的压力,但是一旦主宕机了,就不能写了;

    所以我们可以采用双主双从架构

       

      架构规划:

    主master 3307 ---> 从slave 3309 

    主master 3308 ---> 从slave 3310

    3307 <---> 3308 互为主从

    2个写节点,每个写节点下又是2个读节点;

    B:文件配置:

    1、配置每一台MySQL服务器的配置文件my.cnf

    [client]

    port        = 3307

    socket      = /usr/local/mysql-5.7.18/data/3307/mysql.sock

    default-character-set=utf8

    [mysqld]

    port    = 3307

    socket  = /usr/local/mysql-5.7.18/data/3307/mysql.sock

    datadir = /usr/local/mysql-5.7.18/data/3307

    log-error = /usr/local/mysql-5.7.18/data/3307/error.log

    pid-file = /usr/local/mysql-5.7.18/data/3307/mysql.pid

    character-set-server=utf8

    lower_case_table_names=1

    autocommit = 1

    其他的 3308 3309 3310 只需要修改端口号即可

    2、与一主多从一样,所有节点配置文件加上binlog配置

          3307配置:

    log-bin=mysql-bin

    server-id=3307

    3308配置:

    log-bin=mysql-bin

    server-id=3308

    3309配置:

     server-id=3309

                      3310配置:

    server-id=3310

                  注意:这里我们是把3307 3308 互为主(主从)

    log-bin=mysql-bin

    server-id=实例的端口(server-id要唯一)

    3、第一台主服务器3307的my.cnf文件增加如下配置:(Master 3307)

       auto_increment_increment=2

    auto_increment_offset=1

    log-slave-updates

    sync_binlog=1

    4、第二台主服务器3308的my.cnf文件增加如下配置:(Master 3308)

    auto_increment_increment=2

    auto_increment_offset=2

    log-slave-updates

    sync_binlog=1

    C:配置项说明:

    auto_increment_increment,控制主键自增的自增步长,用于防止Master与Master之间复制出现重复自增字段值,通常auto_increment_increment=n,有多少台主服务器,n 就设置为多少;

    auto_increment_offset=1设置自增起始值,这里设置为1,这样Master的auto_increment字段产生的数值是:1, 3, 5, 7, …等奇数ID

    注意auto_increment_offset的设置,不同的master设置不应该一样,否则就容易引起主键冲突,比如master1的offset=1,则master2的offset=2,master3的offset=3

    在双主模式中,log-slave-updates 配置项一定要配置,否则在master1(3307)上进行了更新数据,在master2(3308)和slave1(3309)上会更新,但是在slave2(3310)上不会更新

    sync_binlog表示每几次事务提交,MySQL把binlog缓存刷进日志文件中,默认是0,最安全的是设置为1;

    F:主从设置:

         1:启动服务:

        进入/usr/local/mysql-5.7.18/bin目录,重启四个MySQL服务,启动时指定配置文件启动:

    ./mysqld_safe --defaults-file=/usr/local/mysql-5.7.18/data/3307/my.cnf &

    ./mysqld_safe --defaults-file=/usr/local/mysql-5.7.18/data/3308/my.cnf &

    ./mysqld_safe --defaults-file=/usr/local/mysql-5.7.18/data/3309/my.cnf &

    ./mysqld_safe --defaults-file=/usr/local/mysql-5.7.18/data/3310/my.cnf &

               

       2、在两台主服务器上创建复制账号并授权:(3307、3308)

    使用端口、主机登录进入两台主MySQL:

    ./mysql -uroot -p -P3307 -h127.0.0.1

    ./mysql -uroot -p -P3308 -h127.0.0.1
    在主服务器上创建复制数据的账号并授权:(copy为名字:建议先按教程写:熟悉之后随意更改 123456 是密码)

    grant replication slave on *.* to 'copy'@'%' identified by '123456';

    3、在两台主服务器上停止复制并刷新binlog日志:(3307、3308)

    4、在从服务器上停止复制:(3309、3310)

          在MySQL命令行执行:

    stop slave;

    reset slave;

    reset master;

    5、在主服务器上查看二进制日志文件和Position值:(3307、3308)

        在MySQL命令行执行:

          即在3307和3308上分别执行:show master status;

    6、在Slave上设置Master(相当于是4台都需要设置)

     设置从服务器3308、3309,他们的主均为3307,即在3308和3309上执行如下操作:

    change master to master_host='192.168.91.135',

    master_user='copy',

    master_password='123456',

    master_port=3307,

    master_log_file='mysql-bin.000001',

    master_log_pos=154;

    设置从服务器3307、3310,他们的主均为3308,即在3307和3310上执行如下操作:

    change master to master_host='192.168.91.135',

    master_user='copy',

    master_password='123456',

    master_port=3308,

    master_log_file='mysql-bin.000001',

    master_log_pos=154; 

    7、在四台MySQL服务器上执行:start slave; (MySQL命令行执行)

    执行后即开始进入主从复制状态

    双主双从验证:

    检查从服务器复制功能状态,执行命令:

    mysql> show slave status G

    如果Slave_IO_Running和Slave_SQL_Running的值为Yes,即表示复制功能配置正常;

    设置好双主双从复制后:

    1. 一个主出现问题,可以切换到另外的主进行写数据,新主同步数据给它的从;

    2. 待问题旧主恢复服务后,新的主会同步数据给它,它再同步数据给自己的从,这样不会出现数据的不同步和服务的不可用。

  • 相关阅读:
    实验四 主存空间的分配和回收模拟
    实验一
    实验3观后感
    实验三进程调度模拟程序
    实验2作业调度
    0909 学习操作系统
    实验四 主存空间的分配和回收模拟
    实验三 同学互评
    实验三 进程调度模拟程序
    实验二 作业调度模拟程序
  • 原文地址:https://www.cnblogs.com/liudongdong666666/p/7818240.html
Copyright © 2020-2023  润新知