项目名称:构建一个简单的MYSQL主从复制集群
项目环境:2台2c/4G的服务器(虚拟机),centos7.9,mysql 5.7.33
项目描述:
为了提升MYSQL的并发能力构建一个简单的MYSQL集群,实现读写分离功能
大大提升MYSQL集群的业务处理能力。同时深入学习MYSQL的整体的部署
和对集群对集群架构的理解
项目步骤:
1.准备好2台安装好系统的机器,使用脚本一键部署好二进制版本的MYSQL
,并且设置好my.cnf配置文件的内容。
2.在master服务器上开启二进制日志和配置server_id,从服务器上
配置server_id。
3.在master上创建给slave过来复制二进制的用户
3.1建用户
create user 'sc_slave'@'192.168.118.161' identified by '123456'
3.2授权
grant replication slave on *.* to 'sc_slave'@'192.168.118.161';
4.在master上做一个全备,导出数据,导入到slave,保持master和slave上的数据一致
4.1 master上数据做全备,导出数据
mysqldump -uroot -p123456 --all-databases >/backup/all_db.sql
4.2 scp到slave上
scp /backup/all_db.sql root@192.168.118.161:/root
4.3 在slave上导入数据
mysql -uroot -p123456 <all_db.sql
5.在slave上配置去master上拉取二进制日志的用户名和密码和日志文件的
名称和位置号等信息
#flush logs
#show master status; localhost-bin.000009 | 154
5.1 在slave上启用master的信息
CHANGE MASTER TO MASTER_HOST='192.168.118.160',
MASTER_USER='sc_slave',
MASTER_PASSWORD='123456',
MASTER_PORT=3306,
MASTER_LOG_FILE='localhost-bin.000009',
MASTER_LOG_POS=154;
6.在master和slave上要关闭防火墙和selinux
service firewalld stop
systemctl disable firewalld
setenforce 0
7.在slave服务器上启动slave服务,查看IO线程和SQL线程是否正常启动
查看从服务器的状态
show slave status\G 垂直显示
开启slave服务器
start slave;
#如果失败,清除所有master信息.重新输入配置
reset slave all;
7.启动slave后的效果
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.118.160
Master_User: sc_slave
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: localhost-bin.000009
Read_Master_Log_Pos: 325
Relay_Log_File: slave-relay-bin.000002
Relay_Log_Pos: 495
Relay_Master_Log_File: localhost-bin.000009
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
8.验证主从复制的效果
8.1.在master上新建一个库或者插入一行数据,到slave上
去查看是否有,如果有,说明主从复制成功,如果没有
说明有问题
项目心得:
通过这个项目,我更加了解两台机器之间是怎么传输数据的,对主从
复制更深入的了解了一下,同时感受到了集群的魅力,两台机器
容易出错,同时我在思考一个问题,如何让它更自动化。
思考的问题:
如果主挂了,如何提升从为主?
目前只能手动的停止从服务器上的slave服务,把业务
的写和查询的操作都切到从服务器上。提升从服务器为主服务器。再搞一台服务器
认原来的从服务器为主。要求原来的从服务器需要开启
二进制日志。
是否有自动进行主从切换操作的?
1.脚本
2.第三方软件
主从复制搭建过程,怎么在mysql在提供服务的时候搭建主从复制