热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MySQL数据库服务主从复制

随着访问量的不断增加,单台MySQL数据库服务器压力不断的增加,需要对MySQL进行优化和架构改造,如果MySQL优化不能明显改善,可以使用高可用,主从复制,读写分离,拆分库,拆分
随着访问量的不断增加,单台MySQL数据库服务器压力不断的增加,需要对MySQL进行优化和架构改造,如果MySQL优化不能明显改善,可以使用高可用,主从复制,读写分离,拆分库,拆分表等方法来进行优化. MySQL主从复制的目的是实现数据冗余备份,将master数据库数据定时同时到slave库中,一旦master数据库宕机,可以将Web应用数据库配置快速切换至slave数据库,确保Web应用有较高的高可用率.

一、什么是主从复制?**

主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库;主数据库一般是准实时的业务数据库。

二、主从复制的作用

1、做数据的热备,作为后备数据库,主数据库服务器故障后,可切换到从数据库继续工作,避免数据丢失。
2、架构的扩展。业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O访问的频率,提高单个机器的I/O性能。
3、读写分离,使数据库能支撑更大的并发。在报表中尤其重要。由于部分报表sql语句非常的慢,导致锁表,影响前台服务。如果前台使用master,报表使用slave,那么报表sql将不会造成前台锁,保证了前台速度。

三、主从复制原理

主从复制架构图
技术图片
mysql主从数据同步是一个异步复制的过程,要实现复制首先需要在master上开启bin-log日志功能,bin-log日志用于记录在master库中执行的增,删,改,查的SQL语句整个过程需要开启3个线程,分别是master 开启I/O线程,slave 开启I/O线程和SQL线程,以下是具体原理:
(1)slava上执行slave start, slave I/O线程会通过在master服务器上创建的授权用户连接上master,并请求master从指定的文件和位置之后发送bin-log日志(日志文件名和位置就是在配罝主从复制服务时执行change master命令指定的);
(2)master服务器接收到来自Slave服务器的I/O线程的请求后,其上负责复制的I/O线程会根据slave服务器的I/O线程请求的信息分批读取指定bin-log日志文件指定位置之后的bin-log日志信息,然后返回给slave端的I/O线程。返回的信息中除了bin-log日志内容外,还有在Master服务器端记录的新的Binlog文件名称以及在新的bin-log中的下一个 指定更新位置
(3)slave服务器I/O线程接收到信息后,将接收到的日志内容依次添加到slave端的relay-log(中继日志)文件(MySQL-relay-bin.xxxxxx)的最末端,并将读取到的master端的bin-log的文件名和position点记录到master.info文件中,以便在下一次读取的时候能告知master从相应的bin-log文件名及最后一个position点开始发起请求;
(4)slave服务器 SQL线程检测到realy-log中内容有更新,会立刻解析realy-log日志中的内容,将解析后的SQL语句在slave服务器执行,执行成功后slave库与master库保持一致。

四、环境部署

master   192.168.10.1 
    slave    192.168.10.2

1、都要安装mysql数据库并配置
yum install -y mariadb
2、修改主、从配置文件 /etc/my.cnf
master:在[mysqld]标签下加入下面二句
log-bin=mysql-bin
server-id=1

slave:在[mysqld]标签下加入下面一句
server-id=2
3、修改完成之后重新启动MySQL
systemctl start mariadb
此时可以看 ll /var/lib/mysql/ 看下是否已经有二进制日志mysql-bin.000001
技术图片
4、建立复制账号并授权、授权给slave服务器
grant replication slave on . to ‘test‘@‘192.168.10.2‘ identified by ‘123456‘;
授权时如果想授权任何一个IP都可以登陆,则把IP地址改为 % 号
grant replication slave on . to ‘test‘@‘%‘ identified by ‘123456‘;
flush privileges; --> 刷新权限
授权完成后,在从服务器上登陆测试
mysql -utest -h192.168.122.10 -p123456
5、给master加上锁,防止有新的数据写入
flush tables with read lock;
6、查看二进制日志文件
show master status;
技术图片
7、退出master数据库,登陆slave数据库,关闭slave复制线程(默认停止状态)
stop slave;
8、配置主从关系,,在slave服务器上写代码、需要配置连接主服务器的信息,从服务器能不能在主服务器上面获取二进制日志,全靠下面的配置信息
change master to master_user=‘test‘,master_password=‘123456‘,master_host=‘192.168.10.1‘,
master_port=3306,master_log_file=‘mysql-bin.000001‘,master_log_pos=245;
9、slave服务器启动slave线程
start slave;
10、启动完成之后,再查看slave线程连接主服务器的状态
show start slave;
下面两个显示都为yes算成功了
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

MySQL数据库服务主从复制


推荐阅读
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文内容为asp.net微信公众平台开发的目录汇总,包括数据库设计、多层架构框架搭建和入口实现、微信消息封装及反射赋值、关注事件、用户记录、回复文本消息、图文消息、服务搭建(接入)、自定义菜单等。同时提供了示例代码和相关的后台管理功能。内容涵盖了多个方面,适合综合运用。 ... [详细]
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 本文介绍了关于apache、phpmyadmin、mysql、php、emacs、path等知识点,以及如何搭建php环境。文章提供了详细的安装步骤和所需软件列表,希望能帮助读者解决与LAMP相关的技术问题。 ... [详细]
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
author-avatar
捕鱼达人2602884285
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有