阅读 79

mysql主从复制系列(3)——一主多从搭建

一主多从架构

在主库读取请求压力非常大的场景下, 可以通过配置一主多从复制架构实现读写分离, 把大量对实时性要求不是特别高的读请求通过负载均衡分布到多个从库上, 降低主库的读取压力,在主库出现异常宕机的情况下, 可以把一个从库切换为主库继续提供服务 (中间切换过程无法提供服务)。

先用2台主机做测试

主库:192.168.5.149:3306

从库1:192.168.5.150:3307


1. 配置主机远程登录,确保从库主机可以登录到主库主机

主机配置文件

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf 复制代码

bind-address 改 0.0.0.0  或者 注释掉 (这样mysql服务就可以监听全网的连接)


systemctl restart mysql复制代码


确保要登录的用户host为 %

select user, host from mysql.user; 复制代码

(这步在后面grant replication slave on *.* to 'slave'@'%' identified by 'slave'; 可以保证)


设置防火墙

开放3306端口,服务器需要配置安全组规则,有防火墙需要开放3306
sudo ufw allow 3306  或者  sudo ufw disable


2. 主库配置

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf 复制代码

port修改(主库就用3306)


开启server-id log_bin


systemctl restart mysql  复制代码
// 启用一个用户 slave,用于从库登录到主库
grant replication slave on *.* to 'slave'@'%' identified by 'slave';复制代码

// 这里给 slave用户赋all privileges 
grant all privileges on *.* to 'slave'@'%' identified by 'slave';复制代码

flush privileges;复制代码

show master status;   // 查看master状态复制代码


主库配置好了以后就先不要改动了,改动会影响状态


3. 从库配置

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf 复制代码

修改port


把server-id改成与主机不同的,log_bin打开



systemctl restart mysql 复制代码

把slave主机的master_host切换到192.168.5.149

change master to master_host='192.168.5.149', master_port=3306, master_user='slave', master_password='slave', master_log_file='mysql-bin.000001', master_log_pos=1023;复制代码

start slave;      // stop slave; 可停止进行slave模式复制代码

show slave status\G复制代码


(看到两个Yes了不,上面的slave_io_running破玩意老是NO,翻到下面报错The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.可以参考这篇,什么,不是报这个错,自己搜过别的!!!!)



4. 测试一下主从复制

主机给个命令 (你能感受到我的愤怒┗|`O′|┛ 嗷~~)



从机  成功啦~



关注下面的标签,发现更多相似文章
评论