mysql-双主双从搭建

一. 概念

在这里插入图片描述

上图1 3 互为主从 2为1的从 4为3的从

网上找了个图片,基于这个图片我们分别定义四个身份master1,master2,slave1 ,slave2

搭建过程中主要理清谁是主谁是从 
在此案例中
master1 主要有两个身份:
          1.担任master2 和slave1 的主库
          2.担任master2的从库
          
master2 主要有两个身份:
          1.担任master1 和slave2 的主库
          2.担任master1的从库
          
slave1 主要有一个身份:
          1.担任master1的从库     
             
slave2 主要有一个身份:
          1.担任master2的从库  

所以在配置的时候 master1  master2  额外要进行的操作是:
          1.二进制日志目录创建以及授权
          2.mysql主从复制操作用户创建以及授权
          3.在作为从数据库的时候,有写入操作也要更新二进制日志文件。即log-slave-updates

而四台机器都要进行的操作是:
		  1. server-id的配置
		  2. 启动并配置主从 CHANGE MASTER TO... 
		  3. 查看状态是否正常启动
思路清晰就简单

二. 搭建

准备四台机器
初始化环境:
关墙
设置主机名
设置本地host
安装mysql并初始化密码
这些操作不会的可看我之前的帖子
链接地址

# master1

[root@master01 log]# vim /etc/my.cnf
# 二进制日志所在位置, mysql-bin指的是二进制日志的前缀
log-bin=/var/log/mysql/mysql-bin
# 主库server-id与从库的server-id 不一致。
server-id=1
# 在作为从数据库的时候,有写入操作也要更新二进制日志文件
log-slave-updates

# 创建对应二进制日志目录并修改属主属组
[root@master01 log]# mkdir /var/log/mysql
[root@master01 log]# chown mysql.mysql /var/log/mysql

# 这里第一步操作和之前一致  除了加了log-slave-updates参数再配置中

# 重启
[root@master01 log]# systemctl restart mysqld

# 登录mysql并创建主从复制用户
[root@master01 log]# mysql -uroot -p

1. 创建用户
mysql> create user "repUser"@"%" identified by "123456";
2. 授权
mysql> grant replication slave on *.* to "repUser"@"%";
3. 刷新权限
mysql> flush privileges;
4. 查看
mysql> show master status\G
*************************** 1. row ***************************
             File: mysql-bin.000001
         Position: 154
     Binlog_Do_DB: 
 Binlog_Ignore_DB: 
Executed_Gtid_Set: 
1 row in set (0.00 sec)
# master2

# 因为与master01互为主从 所以也要加上主库相关配置
# msater1的操作这里都要来一遍。。。。。这里省略 跟上面操作一致 
# server-id注意不可与mastaer1一致   
# 配置slave
mysql> CHANGE MASTER TO
    ->   MASTER_HOST='mysql-master01',  # 这里是配置的本地host  也可直接用master1的ip
    ->   MASTER_USER='repuser',     # master01 创建的主从操作用户
    ->   MASTER_PASSWORD='123456',  # 对应密码
    ->   MASTER_PORT=3306,         
    ->   MASTER_LOG_FILE='mysql-bin.000001',  # 二进制日志文件名 可从主上show master status\G里查看
    ->   MASTER_LOG_POS=154,      # 二进制日志起始位置 可从主上show master status\G里查看
    ->   MASTER_CONNECT_RETRY=10;
Query OK, 0 rows affected, 2 warnings (0.02 sec)

# 启动
mysql> start slave;
# 查看
mysql> show slave status \G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: mysql-master01
                  Master_User: repuser
                  Master_Port: 3306
                Connect_Retry: 10
              Master_Log_File: mysql-bin.000001
          Read_Master_Log_Pos: 154
               Relay_Log_File: master02-relay-bin.000002
                Relay_Log_Pos: 320
        Relay_Master_Log_File: mysql-bin.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

# 这里是两个yes就成功了
# slave01 


# 这台机器需要配置master01的从库
# 由于只做从库  所以配置文件中只需要配置 server-id就可以了
[root@master01 log]# vim /etc/my.cnf
server-id=2
# 登录mysql 配置slave 跟master2 操作一致 因为都作为master1的从库
mysql> CHANGE MASTER TO
    ->   MASTER_HOST='mysql-master01',  # 这里是配置的本地host  也可直接用master1的ip
    ->   MASTER_USER='repuser',     # master01 创建的主从操作用户
    ->   MASTER_PASSWORD='123456',  # 对应密码
    ->   MASTER_PORT=3306,         
    ->   MASTER_LOG_FILE='mysql-bin.000001',  # 二进制日志文件名 可从主上show master status\G里查看
    ->   MASTER_LOG_POS=154,      # 二进制日志起始位置 可从主上show master status\G里查看
    ->   MASTER_CONNECT_RETRY=10;
Query OK, 0 rows affected, 2 warnings (0.02 sec)

# 启动
mysql> start slave;
# 查看 
# master1

# 这里配置maser1 为master2 的从库  

mysql> CHANGE MASTER TO
    ->   MASTER_HOST='mysql-master02',  # 这里是配置的本地host  也可直接用master2的ip
    ->   MASTER_USER='repuser',     # master02 创建的主从操作用户
    ->   MASTER_PASSWORD='123456',  # 对应密码
    ->   MASTER_PORT=3306,         
    ->   MASTER_LOG_FILE='mysql-bin.000001',  # 二进制日志文件名 可从主上show master status\G里查看
    ->   MASTER_LOG_POS=154,      # 二进制日志起始位置 可从主上show master status\G里查看
    ->   MASTER_CONNECT_RETRY=10;
Query OK, 0 rows affected, 2 warnings (0.02 sec)
# 启动
mysql> start slave;
# 查看略

# slave2 
# 只担任master2的从库
1. 配置文件添加server-id
2. mysql> CHANGE MASTER TO
    ->   MASTER_HOST='mysql-master02',  # 这里是配置的本地host  也可直接用master2的ip
    ->   MASTER_USER='repuser',     # master02 创建的主从操作用户
    ->   MASTER_PASSWORD='123456',  # 对应密码
    ->   MASTER_PORT=3306,         
    ->   MASTER_LOG_FILE='mysql-bin.000001',  # 二进制日志文件名 可从主上show master status\G里查看
    ->   MASTER_LOG_POS=154,      # 二进制日志起始位置 可从主上show master status\G里查看
    ->   MASTER_CONNECT_RETRY=10;
Query OK, 0 rows affected, 2 warnings (0.02 sec)
# 启动
mysql> start slave;

验证

可以直接借助图形化工具进行操作验证 例如 navicat

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值