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

主从数据库架构配置及实验环境搭建方法

本文介绍了在Web应用系统中,数据库性能是导致系统性能瓶颈最主要的原因之一,尤其是在大规模系统中,数据库集群已经成为必备的配置之一。文章详细介绍了主从数据库架构的好处和实验环境的搭建方法,包括主数据库的配置文件修改和设置需要同步的数据库等内容。MySQL的主从复制功能在国内外大型网站架构体系中被广泛采用,本文总结了作者在实际的Web项目中的实践经验。

在Web应用系统中,数据库性能是导致系统性能瓶颈最主要的原因之一。尤其是在大规模系统中,数据库集群已经成为必备的配置之一。集群的好处主要有:查询负载、数据库复制备份等。

      MySQL数据库支持数据库的主从复制功能,因此在集群方面具有其独特的优势。众多国内外大型网站架构体系中,均采用了MySQL的主从数据库配置来实现 查询负载、数据库热备等功能。本人在实际的Web项目中也涉及到这一需求,在此将如何配置实现做个简单小结。

      1、实验环境

           主库:Ubuntu  IP:192.168.1.189

           从库:Ubuntu  IP:192.168.1.188

      2、主数据库配置

      A、修改配置文件/etc/mysql/my.cnf

      任何一台MySQL数据库服务器都可以配置为集群主服务器,打开MySQL的配置文件,在配置文件中加入下面两行:

      server-id = 1

      log-bin = binlog_repl

      binlog-do-db = test     //设置需要同步的数据库,如果需要设置多个,则加入多条这行语句。

      注:MySQL是通过二进制的日志文件来进行主从数据库复制的,所以必须开启日志功能,即上述的log-bin;另外在集群中,每台数据库服务器都需要指定一个唯一ID,这里我们指定为1。

      给主数据库授权一个可以进行复制的用户,执行如下命令:

      grant replication slave on *.* to ‘slave‘@‘%‘ identified by ‘123‘;

      执行成功后,重启MySQL。

      B、锁定数据库并备份

      mysql>flush tables with read lock;

      备份数据库,传输到从数据库的数据目录下/var/lib/mysql;

      C、用show master status;命令查看主数据库状态

      +--------------------+----------+--------------+------------------+
       | File               | Position | Binlog_Do_DB | Binlog_Ignore_DB |
      +--------------------+----------+--------------+------------------+
       | binlog_repl.000001 |      106 | test         |                  |
      +--------------------+----------+--------------+------------------+

       记录下File和Position的值。

       D、主数据库解锁:unlock tables;

      3、从数据库配置

      A、修改配置文件/etc/mysql/my.cnf

       在mysqld下加入如下代码:

      server-id=2

      master-host=192.168.1.189

      master-user=slave

      master-password=123

      保存后,重启mysql服务。

      B、设置slave参数,启动

      在mysql下执行slave stop命令,停止slave服务;

      mysql> change master to

       -> master_host=‘192.168.1.189‘,

       -> master_user=‘slave‘,

       -> master_password=‘123‘,

       -> master_log_file=‘binlog_repl.000001‘,

       -> master_log_pos=106;

      注意:这里的master_log_file,master_log_pos的值要和master的值一致。否则会无法同步。

      执行slave start命令,启动服务。

      4、验证同步

      从数据库下运行show slave status \G;

      如果能看到:

       Slave_IO_Running: Yes

       Slave_SQL_Running: Yes

      说明已经成功启动了主从数据库的数据同步。

      在主数据库中执行插入语句 insert into user values(‘kangqing‘,‘1234567890‘);

      在从数据库中执行查询,可以看到主数据库插入的数据已经同步到从数据库表中。

      本人在配置的时候出现过这样的问题:

      Slave_IO_Running和Slave_SQL_Running的值都为Yes,但是无法和主数据库同步。在主数据库插入记录时,从数据库表无任何变化,执行show slave status时可以看到这样的错误:

     Last_SQL_Error: Error ‘Table ‘user‘ is read only‘ on query. Default database: ‘test‘. Query: ‘insert into user values(‘gaga‘,‘5436897‘)‘

     估计是权限问题。

     解决方法:修改/var/lib/mysql文件夹的权限,对mysql.mysql用户赋予读写权限即可。

主从数据库架构配置


推荐阅读
  • 本文详细介绍了PHP中的几种超全局变量,包括$GLOBAL、$_SERVER、$_POST、$_GET等,并探讨了AJAX的工作原理及其优缺点。通过具体示例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 华为云openEuler环境下的Web应用部署实践
    本文详细记录了在华为云openEuler系统上进行Web应用部署的具体步骤,包括配置yum源、安装Apache、MariaDB、PHP及其相关组件,并完成WordPress的安装与配置过程。 ... [详细]
  • 本文介绍了一个基本的同步Socket程序,演示了如何实现客户端与服务器之间的简单消息传递。此外,文章还概述了Socket的基本工作流程,并计划在未来探讨同步与异步Socket的区别。 ... [详细]
  • Mysqlcheck作为MySQL提供的一个实用工具,主要用于数据库表的维护工作,包括检查、分析、修复及优化等操作。本文将详细介绍如何使用Mysqlcheck工具,并提供一些实践建议。 ... [详细]
  • Kubernetes 实践指南:初次体验
    本文介绍了如何通过官方提供的简易示例,快速上手 Kubernetes (K8S),并深入理解其核心概念和操作流程。 ... [详细]
  • 本文介绍了基于Java的在线办公工作流系统的毕业设计方案,涵盖了MyBatis框架的应用、源代码分析、调试与部署流程、数据库设计以及相关论文撰写指导。 ... [详细]
  • 利用Cookie实现用户登录状态的持久化
    本文探讨了如何使用Cookie技术在Web应用中实现用户登录状态的持久化,包括Cookie的基本概念、优势及主要操作方法,并通过一个简单的Java Web项目示例展示了具体实现过程。 ... [详细]
  • 本文探讨了在SharePoint环境中使用BDC(Business Data Catalog)时遇到的问题及其解决策略,包括XML文件导入SSP后的不可见性问题以及与远程SQL Server 2005连接的难题。 ... [详细]
  • 本文详细介绍了跨站脚本攻击(XSS)的基本概念、工作原理,并通过实际案例演示如何构建XSS漏洞的测试环境,以及探讨了XSS攻击的不同形式和防御策略。 ... [详细]
  • 本项目使用Java语言开发了一个基于B/S架构的指纹识别系统,该系统能够实现指纹的高效采集与精准识别,适用于多种安全认证场景。 ... [详细]
  • 深入解析Nacos服务自动注册机制
    本文将探讨Nacos服务自动注册的具体实现方法,特别是如何通过Spring事件机制完成服务注册。通过对Nacos源码的详细分析,帮助读者理解其背后的原理。 ... [详细]
  • 本文探讨了如何在Sitecore 9环境中通过Postman使用API密钥发送请求,包括解决常见错误的方法。 ... [详细]
  • 前端技术分享——利用Canvas绘制鼠标轨迹
    作为一名前端开发者,我已经积累了Vue、React、正则表达式、算法以及小程序等方面的技能,但Canvas一直是我的盲区。因此,我在2018年为自己设定了一个新的学习目标:掌握Canvas,特别是如何使用它来创建CSS3难以实现的动态效果。 ... [详细]
  • 本文详细介绍了如何使用Rufus工具制作一个兼容UEFI启动模式的Windows Server 2008 R2安装U盘,包括必要的软件和步骤。 ... [详细]
  • 本文详细介绍了如何在Windows和Linux系统上配置Openfire服务器,包括安装步骤、数据库配置及端口映射等关键环节。 ... [详细]
author-avatar
十万个蓝色天空_917
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有