在主库读取请求压力很是大的场景下, 能够经过配置一主多从复制架构实现读写分离, 把大量对实时性要求不是特别高的读请求经过负载均衡分布到多个从库上, 下降主库的读取压力,在主库出现异常宕机的状况下, 能够把一个从库切换为主库继续提供服务 (中间切换过程没法提供服务)。
mysql
先用2台主机作测试sql
主库:192.168.5.149:3306vim
从库1:192.168.5.150:3307安全
主机配置文件bash
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';
能够保证)
负载均衡
设置防火墙ide
sudo ufw allow 3306 或者 sudo ufw disable
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf 复制代码
port修改(主库就用3306)post
开启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状态复制代码
主库配置好了之后就先不要改动了,改动会影响状态
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.
能够参考这篇,什么,不是报这个错,本身搜过别的!!!!)
主机给个命令 (你能感觉到个人愤怒┗|`O′|┛ 嗷~~)
从机 成功啦~