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

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

 

A:概述:sql

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

因此咱们能够采用双主双从架构安全

   

  架构规划:服务器

主master 3307 ---> 从slave 3309 架构

主master 3308 ---> 从slave 3310socket

3307 <---> 3308 互为主从ide

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

 

 

 

 

B:文件配置:命令行

一、配置每一台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 只须要修改端口号便可

 

二、与一主多从同样,全部节点配置文件加上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要惟一)

三、第一台主服务器3307的my.cnf文件增长以下配置:(Master 3307)

   auto_increment_increment=2

auto_increment_offset=1

log-slave-updates

sync_binlog=1

四、第二台主服务器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 &

           

   二、在两台主服务器上建立复制帐号并受权:(330七、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';

 

三、在两台主服务器上中止复制并刷新binlog日志:(330七、3308)

四、在从服务器上中止复制:(330九、3310)

      在MySQL命令行执行:

stop slave;

reset slave;

reset master;

 

 

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

    在MySQL命令行执行:

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

 

六、在Slave上设置Master(至关因而4台都须要设置)

 设置从服务器330八、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;

 

设置从服务器330七、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; 

 

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

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

 

 

双主双从验证:

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

mysql> show slave status \G

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

设置好双主双从复制后:

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

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

相关文章
相关标签/搜索