mysql主从分离

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 一、MySQL主从读写分离概念二、MySQL主从库配置三、总结

一、MySQL主从读写分离概念

1.什么是Mysql主从分离


将读操作和写操作分离到不同的数据库上,避免主服务器出现性能瓶颈;主服务器进行写操作时,不影响查询应用服务器的查询性能,降低阻塞,提高并发; 数据拥有多个容灾副本,提高数据安全性,同时当主服务器故障时,可立即切换到其他服务器,提高系统可用性;


2.为什么要实现Mysql主从分离

大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够。到了数据业务层、数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢失的话,后果更是 不堪设想。这时候,我们会考虑如何减少数据库的联接,一方面采用优秀的代码框架,进行代码的优化,采用优秀的数据缓存技术如:memcached,如果资金丰厚的话,必然会想到假设服务器群,来分担主数据库的压力。


3.数据库主从配置

注:可以是一主一从,一主多从,主从从等。


二、MySQL主从库配置

  1. master上配置bin-log日志
    修改mysql的配置文件:# vim /etc/my.cnf,加上如下内容,修改配置后需要重启mysql服务器。


log-bin= master-bin  #[必须]启用二进制日志
log-bin-index=master-bin.index
server-id         = 4          #[必须]服务器唯一ID,默认是1,最好取ip的后3位
expire-logs-days  = 7           #只保留7天的二进制日志,以防磁盘被日志占满


测试log_bin是否成功开启

mysql> show variables like ‘%log_bin%’;

出现下图,log_bin为ON则表示开启成功,OFF表示开启失败

10.png

配置好后,查看主服务器状态:show master status

11.png


2. slave上配置relay-log

配置从服务器:vim /etc/my.cnf,点击 i 进入编辑模式,添加如下配置:

relay-log-index=slave-relay-bin.index
relay-log=slave-bin
server-id=152 #只要和master的server-id不一样就可以了


将master和slave联系起来,slave需要知道master的地址

master的数据库中建立备份账号

repl为用户名,192.168.0.152代表从数据库的主机地址,如下表示远程地址为密码为123的,用户名是repl就可以连接到master主机,并为其授予 replication slave 权限。123为master的连接密码。

mysql> create user repl; # 创建用户名为repl的用户

mysql> GRANT REPLICATION SLAVE ON . TO ‘repl’@‘192.168.247.152’ IDENTIFIED BY ‘123456’;

mysql> FLUSH PRIVILEGES;

mysql> use mysql;

mysql> select user,authentication_string,host from user;

可看到我们刚创建的备份账号:


12.png


我们已经在主库配置好了允许从库访问主库的用户名和密码,下面我们对slave进行操作:

mysql> change master to master_host=‘192.168.0.188’,master_port=3306,master_user=‘repl’,master_password=‘123’,master_log_file=‘master-bin.000001’,master_log_pos=154;

其中的master_log_file,就是主库中file,在主库中使用 show master status;就可以看到了。

启动slave: mysql> start slave;

查看slave从机的状态(\G表示竖着展示): mysql> show slave status \G

关闭掉主数据库的读取锁定

mysql> unlock tables;


三、总结

通过测试验证,我们的mysql主从同步就配置好了,这里需要注意的是主库的mysql版本不能高于从库的mysql版本,因为MySQL总的语法是高版本兼容底版本的,如果从库的版本要比主库的版本低,可能主库执行的sql语句,从库执行就会报错,导致主从同步失败;从库只能读数据,不能在从库写数据,主库既可以读数据,也可以写数据。


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
关系型数据库 MySQL 开发工具
MySQL5.7主从配置(Docker)
MySQL5.7主从配置(Docker)
730 0
|
1月前
|
SQL 关系型数据库 MySQL
解决MySQL主从慢同步问题的常见的解决方案:
解决MySQL主从慢同步问题的方法有很多,以下是一些常见的解决方案: 1. 检查网络连接:确保主从服务器之间的网络连接稳定,避免网络延迟或丢包导致数据同步缓慢。 2. 优化数据库配置:调整MySQL的配置参数,如增大binlog文件大小、调整innodb_flush_log_at_trx_commit等参数,以提高主从同步性能。 3. 检查IO线程和SQL线程状态:通过SHOW SLAVE STATUS命令检查IO线程和SQL线程的状态,确保它们正常运行并没有出现错误。 4. 检查主从日志位置:确认主从服务器的binlog文件和位置是否正确,避免由于错误的日志位置导致同步延迟。 5.
129 1
|
4月前
|
负载均衡 关系型数据库 MySQL
MySQL主从架构的搭建
MySQL主从架构的搭建
59 3
|
3月前
|
SQL 关系型数据库 MySQL
MySQL-主从架构的搭建
MySQL-主从架构的搭建
58 0
|
17天前
|
SQL 关系型数据库 MySQL
mysql主从同步出错解决办法
mysql主从同步出错解决办法
12 0
|
4月前
|
消息中间件 关系型数据库 MySQL
在kafka connect 同步 mysql 主从数据库
在kafka connect 同步 mysql 主从数据库
45 0
|
4月前
|
关系型数据库 MySQL 数据库
分库分表之基于Shardingjdbc+docker+mysql主从架构实现读写分离(一)
分库分表之基于Shardingjdbc+docker+mysql主从架构实现读写分离(一)
|
4月前
|
关系型数据库 MySQL Java
分库分表之基于Shardingjdbc+docker+mysql主从架构实现读写分离(二)
分库分表之基于Shardingjdbc+docker+mysql主从架构实现读写分离(二)
|
4月前
|
关系型数据库 MySQL 数据库
MySQL:从MySQL看主从架构高可用性实现
MySQL:从MySQL看主从架构高可用性实现
|
4月前
|
网络协议 关系型数据库 MySQL
mysql(五)主从配置
为了实现MySQL的读写分离,可以使用MySQL官方提供的工具和技术,如MySQL Replication(复制)、MySQL Group Replication(组复制)等,或者使用第三方的中间件工具,如MySQL Proxy、MyCat等。这些工具和技术提供了一种方便和可靠的方式来实现读写分离架构。
78 0