一步一图搭建-分布式服务器部署之mysql集群-主从复制与读写分离

来源:互联网 发布:java用sleep内存泄露 编辑:程序博客网 时间:2024/06/17 03:20

传统项目模型:

这里写图片描述
1.传统的设备搭建时,如果采用单台服务器.则会出现很多的问题.如果服务器出现宕机/断电/硬件设备的损坏,都会直接影响用户体验.
2.如果传统项目中遇到了高并发的情况.单台服务器不足以支持

分布式的处理:

这里写图片描述

传统数据库中存在的问题:

1.传统数据库设计时,如果服务器宕机,将不能为用户提供服务导致整个系统崩溃.
2.如果数据库突然宕机.会导致数据丢失.
3.为了防止数据丢失,要进行实时备份
冷备份:通过数据库工具进行人为的导出sql.但是手动导出数据可能在中间节点宕机时也会造成数据库的丢失.
热备份:通过程序进行控制,定时转储.尽可能的保证数据的完整性.但是还有大量的问题.

数据库的主从复制:

主从复制原理:

这里写图片描述

角色划分:

主库Master:主要进行的是数据的”更新操作”

从库Slave: 实时备份主库的更新信息

二进制日志: 实时记录主库的更新操作,并且形式二进制码.

中继日志: 保存主库的更新信

##### 调用原理

1.当主库更新数据后,会实时的写入到二进制日志文件中

2.从库的IO线程,实时的监听主库的二进制文件,如果二进制文件发送了改变则启动线程进行读取修改后的内容.

3.通过IO线程将读取的二进制文件写入到中继日志中.

4.日志中的消息,进行
数据库的”更新操建”

实战搭建

  • 环境准备:三台centos6以上的服务器(可以使用虚拟机代替)
  • 软件准备:mysql角色数据库(用户构建主从服务器集群)

将软件通过工具上传到linux上

这里写图片描述
使用解压命令解压
这里写图片描述
检查系统插件是否安装:
这里写图片描述
这里写图片描述
开始安装软件:(需要按顺序安装 各个包之间有顺序依赖关系)
debuginfo->share->client->server
这里写图片描述
安装shared:
这里写图片描述
安装client:
这里写图片描述
安装Server:(注意有坑! 如果之前两个插件没有安装这是server就会安装不上)
这里写图片描述
还有个坑就是 有些系统会自带一个数据库安装包 我这个就是安装的时候两个包冲突啦 导致一直都安装不上;
最新的centOS7会自带玛利亚数据库;必须要先把这个卸载才能安装我们的数据库:
这里写图片描述
使用rpm -ev 命令卸载mariadb数据库:
这里写图片描述
重新安装server包:
这里写图片描述
两个百分之百同时出现才说明安装成功!

接下来配置数据库:
这里写图片描述
配置可远程访问的用户:
这里写图片描述
使用连接工具测试一下:
这里写图片描述
主从数据库的基本配置都是相同的,两个可以同样的配置:
这里写图片描述
接下来配置主从同步关系:
找到my.cnf文件
这里写图片描述
因为我们使用rpm命令安装,在etc目录下可能会找不到my.cnf文件
这时我们需要新建一个my.cnf文件,一般情况下路径是不用修改可以直接拿来用的:

[mysqld]#skip-name-resolve#skip-grant-tablesdatadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sockuser=mysqlsymbolic-links=0server-id=1log-bin=mysql-bin[mysqld_safe]log-error=/var/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pid

注意主从服务器server-id不能相同:一般把master选为1 其他的依次递增
这里写图片描述

这里写图片描述

查看主服务状态:

这里写图片描述

从服务器连接主服务器:
这里写图片描述
这里出啦个错误;因为从服务器添加my.cnf配置文件时没有重启数据库:
这里写图片描述

如何配置出错可以清除操作:

这里写图片描述
按步骤配置:

这里写图片描述
测试结果:

这里写图片描述

这里写图片描述

实现主从复制的mysql数据库已经搭建完成啦 以后的数据实时备份,备份实时更新再也不担心数据丢失啦。但要想实现数据库抗住高并发,高可用,还需要配置数据库的读写分离。由于这篇博客太长啦 我准备把数据库的读写分离单独出来。欢迎大家继续关注!

原创粉丝点击