在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用户赋予读写权限即可。
分享到:
相关推荐
在高并发、大数据量的场景下,为了提高系统的稳定性和性能,通常会采用主从数据库架构来实现读写分离。本案例中,我们将详细探讨如何配置和使用主从数据库,以及如何在实际环境中运行。 **一、主从数据库架构** ...
在IT行业中,构建高效、可扩展的分布式系统常常需要使用主从数据库架构,以实现读写分离,提高系统的并发处理能力和数据安全性。本项目基于SpringBoot 2.0框架和MyBatis持久层技术,实现了主从数据库双数据源的配置...
MySQL主从数据库的优势详解 MySQL主从服务器配置是数据库领域中一种常见的高可用性和高性能解决方案。这一机制允许数据从一个主服务器(Master)复制到一个或多个从服务器(Slave),以此来实现数据冗余、负载均衡...
主从数据库架构通常指的是在多台数据库服务器之间进行数据同步的一种方式。其中一台作为主数据库负责写操作,其他作为从数据库负责读操作。这种方式能够有效分散查询负载,并提高数据的可靠性和可用性。 ### 1.2 ...
本教程将深入讲解如何在云环境中搭建这样的数据库架构。 首先,我们来看【案例目标】。目标包括两个方面:一是学习数据库服务的安装,二是掌握主从数据库的配置架构。这意味着我们需要熟悉数据库的安装流程,并能...
在SQL Server 2012中,主从数据库配置是一种常见的高可用性和灾难恢复解决方案,它通常被称为数据库镜像或复制。在这个配置中,一个数据库(主库)会在另一个数据库(从库)上实时或近实时地同步数据,确保即使主...
MySQL主从复制架构是MySQL数据库中一种实现数据同步和备份的机制,它允许将数据从一个...同时,对于生产环境中的数据库架构,还需考虑安全性、备份策略、故障转移机制等因素,以构建一个稳定可靠、可扩展的数据库系统。
### MySQL主从复制架构原理与配置实践 #### 一、MySQL主从复制概述 MySQL主从复制是一种常用的技术手段,用于提高数据库系统的可用性、扩展性和数据安全性。它通过将一个MySQL实例(主服务器)的数据实时复制到一...
2. **主从数据库支持**:Gorb支持主从复制架构,意味着它可以自动检测并区分主库和从库。主库通常用于写操作,从库用于读操作,从而实现读写分离,提高系统性能。 3. **智能故障转移**:当主库或从库出现故障时,...
MySQL 主从数据库同步是数据库高可用性和数据冗余的一种常见实现方式,确保数据在多个服务器间保持一致。在这个过程中,一台MySQL服务器作为主服务器,负责接收并处理所有的写入操作,而其他服务器作为从服务器,从...
阿里云均衡负载服务器集群架构图:云盾、云监控、SLB、ECS集群、主从数据库.zip 1.购买均衡负载 2.购买ECS云主机 3.管理后端服务器
MySQL主从数据库是一种常见的数据库高可用性和负载均衡架构,它主要由主库(Master)和从库(Slave)组成。主库负责处理所有的写操作,而从库则复制主库上的数据并处理读操作,从而分散数据库服务器的压力,提高系统...
主从数据库同步备份配置是MySQL高可用架构的重要组成部分,它提供了数据冗余和故障切换能力。正确配置和管理主从数据库能显著提高系统的稳定性和可靠性。需要注意的是,随着MySQL版本的更新,配置方法可能会有所变化...
MySQL主从数据库是一种常见的数据库高可用性和负载均衡解决方案,它通过数据复制技术使得一个数据库(主库)的数据变动能够实时地被另一个或多个数据库(从库)所接收和应用。这种架构广泛应用于分布式系统、读写...
《基于Mycat中间件的分布式数据库架构及企业实践》 在现代企业级应用中,随着数据量的急剧增长,单机数据库系统已无法满足高并发、大数据量的处理需求,分布式数据库架构应运而生。Mycat作为一款开源的分布式数据库...
以下是对设置MySQL主从数据库服务器的详细解释: 1. **创建主服务器上的复制账户**: 在主服务器上,你需要创建一个专门用于复制的账户,授予其`REPLICATION SLAVE`权限。例如: ```sql mysql> grant ...
mysql主从同步架构设计方案,可以配置应用最广泛的一主拖多从,也可以多主多从,方案中有监控方案,7 * 24 小时自动监控。
考虑到瑞航当前的情况,即所有的ORACLE数据库均为单节点部署,实施主从架构存在一定的风险: - **修改生产环境配置**:可能需要调整监听器和客户端配置文件,需谨慎操作以避免监听器启动失败。 - **主库参数调整**...
分布式数据库架构及企业实践,基于Mycat中间件的知识点主要涵盖了以下几个方面: 1. **分布式数据库基础**:分布式数据库是将数据分布在多个物理节点上,通过网络进行通信和协调,实现数据的一致性、可用性和扩展性...