在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用户赋予读写权限即可。
相关推荐
阿里云均衡负载服务器集群架构图:云盾、云监控、SLB、ECS集群、主从数据库.zip 1.购买均衡负载 2.购买ECS云主机 3.管理后端服务器
云计算基础架构应用
mysql主从同步架构设计方案,可以配置应用最广泛的一主拖多从,也可以多主多从,方案中有监控方案,7 * 24 小时自动监控。
mysql数据库主从架构的简介、部署、使用场景和配置等详细介绍
MySQL主从同步是目前使用比较广泛的数据库架构,技术比较成熟,配置也不复杂,特别是对于负载比较大的网站,主从同步能够有效缓解数据库读写的压力。以前在使用yii1的时候,主从数据库的支持没有那么方便,只能写上...
Redis持久化、主从与哨兵架构详解(1)
mysql数据库分布式中间件,功能强大支持分库分表。支持读写分离,主从切换,实现在线数据扩容、迁移等高级功能
MySQL数据库支持数据库的主从复制功能...众多国内外大型网站架构体系中,均采用了MySQL的主从数据库配置来实现查询负载、数据库热备等功能。本人在实际的Web项目中也涉及到这一需求,在此将如何配置实现做个简单小结。
LNH_MySQL 03-mysql主从复制介绍及分布式数据库架构实现介绍.mp4
为了解决主从数据库读取旧数据的问题,常用的方案有四种: (1)半同步复制 (2)强制读主 (3)数据库中间件 (4)缓存记录写key
本文从实战角度出发,深入探讨了MySQL主从架构及读写分离的搭建与应用。首先介绍了MySQL在大型互联网环境下面临的数据量大和安全性高的挑战,强调了主从架构在性能提升和数据安全方面的重要性。详细说明了如何配置...
数据库的架构设计 数据库的架构设计 主要内容: 1、数据库性能测试的⽬的及范围 2、数据库的常...3、数据库架构合理性 4、数据库性能指标 数据库常⽤架构 1、⼀主多从 缺点:有主从延时 2、双机热备 优点:没有主从延时
通过前面几篇的介绍中,我们都是在单机上使用Redis进行相关的实践操作,从本篇起,我们将初步探索一下Redis的集群,而集群中最经典的架构便是主从复制架构。那么,我们首先来了解一下神马是主从复制架构?随着网站...
支持 MYSQL 主从数据库架构、文件缓存、eAccelerator、APC、XCache、Memcache等多种数据库缓存方式。 使用 MYSQL 主从架构再配合 Memcache(分布式内存缓存系统),可以最大程度发挥 SKYUC 优势性能! 2、页面缓存...
本文进一步分析引入从库后需要保证主从的数据一致性需要考虑哪些方面。 原生复制架构 MySQL 的原生复制架构原理如上图所示。从库的 I/O Thread 线程负责不断读取主库的 binlog 日志文件并写入本地的 Relay...
1、数据库缓存:支持 MYSQL 主从数据库架构、文件缓存、eAccelerator、APC、XCache、Memcache等多种数据库缓存方式。 使用 MYSQL 主从架构再配合 Memcache(分布式内存缓存系统). 2、页面缓存:对于一定时间(可...
MySQL主从架构的复制模式.pdf
分享一套课程,PostgreSQL数据库工程师培训实战教程(主从复制、高可用HA、集群架构)完整版视频教程,欢迎下载学习,希望对大家有帮助。
随着访问量的增加,对于一些比较耗时的数据库读取操作,一般采用将写入与读取操作分开来缓解数据库的压力,数据库引擎一般采用Master/Slave架构。实现mysql服务器的主从配置,可以实现读写分离,另外在主数据库崩溃...