Mysql主从数据库(master/slave),实现读写分离
在之前的一篇文章中,阐述了如何在高并发高负载的场景下使用nginx做后台服务的负载均衡:在阿里云Centos上配置nginx+uwsgi+负载均衡配置,但是不要以为这样做了就是一劳永逸的,到了数据业务层、数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器负载,如此多的数据库连接操作,数据库必然会崩溃,数据库如果宕机的话,后果更是不堪设想。这时候,我们会考虑如何减少数据库的连接,一方面采用优秀的代码框架,进行代码的优化,采用优秀的数据缓存技术如:redis,如果资金丰厚的话,必然会想到架设mysql服务集群,来分担主数据库的压力。今天总结一下利用MySQL主从配置,实现读写分离,减轻数据库压力。
明确目的,部署mysql集群,采用一主一从的策略,写入操作使用主库,从库实时同步主库的数据,从库负责读取的业务,从而完成读写分离的目的。
mysql主从同步的原理很简单,从库生成两个线程,一个I/O线程,一个SQL线程;i/o线程去请求主库 的binlog(二进制日志),并将得到的binlog日志写到relay log(中继日志) 文件中;主库会生成一个 log dump 线程,用来给从库 i/o线程传binlog;
SQL 线程,会读取relay log文件中的日志,并解析成具体操作,来实现主从的操作一致,而最终数据一致。
首先准备两台阿里云服务器,一台作为主机(master),一台作为从机(slave),都安装好mysql5.7
进入master服务器
修改mysql配置文件 vim /etc/my.cnf,加入如下配置
server-id=1
innodb_flush_log_at_trx_commit=2
sync_binlog=1
log-bin=mysql-bin-1
配置说明:
#设置主服务 的ID (id可以自己随便设置但是要保证和slave的id不一样)
server-id=1
#设为1当然是最安全的,但性能也是最差的(相对其他两个参数而言,但不是不能接受)。如果对数据一致性和完整性要求不高,完全可以设为2,如果只最求性能,例如高并发写的日志服务器,设为0来获得更高性能
innodb_flush_log_at_trx_commit=2
#开启binlog 志同步功能
sync_binlog=1
#binlog 日志文件名
log-bin=mysql-bin-200
# 这个表示只同步某个库 (如果没有此项,表示同步所有的库)
binlog-do-db=xxxx
保存后,重启mysql
systemctl restart mysqld
进入mysql命令行 mysql -uroot -p你的密码
输入授权命令
GRANT REPLICATION SLAVE ON *.* to 'repl'@'%' identified by 'Admin123!';
意思是所有slave都可以通过账号repl和密码Admin123!来同步master的数据
然后查看master的状态:
show master status;
此时Master的配置已经搞定,登录一下从机(slave)
同理修改slave服务器的mysql配置 vim /etc/my.cnf 加入下面的配置,需要注意的是server-id不要和master一样
server-id=201
innodb_flush_log_at_trx_commit=2
sync_binlog=1
log-bin=mysql-bin-201
保存后重启服务 systemctl restart mysqld
进入mysql命令行 mysql -uroot -p你的密码
输入命令:
change master to master_host='39.106.228.179',master_user='repl' ,master_password='Admin123!', master_log_file='mysql-bin.000002' ,master_log_pos=154
命令说明:
master_host: 主机的ip
master_user : 主机授权的用户.
master_password : 主机授权时候填写的密码
master_log_file : 主机show master status;中的File
master_log_pos: 主机show master status;中的Position.
输入命令启动slave
start slave;
然后我们就可以测试一下对master进行写入,看看salve是否可以同步数据了
当然了,mysql的读写分离主从配置并不是万能的,根据不同的应用场景选择不同的策略,MySQL的主从复制功能有一定的延迟性,如果对数据实时一致性的要求比较高的场景不推荐使用。
Mysql主从数据库(master/slave),实现读写分离的更多相关文章
- 在阿里云Centos7.6上面配置Mysql主从数据库(master/slave),实现读写分离
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_85 在之前的一篇文章中,阐述了如何在高并发高负载的场景下使用nginx做后台服务的负载均衡:在阿里云Centos上配置nginx+ ...
- MySQL/MariaDB数据库的PROXY实现读写分离
MySQL/MariaDB数据库的PROXY实现读写分离 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.ProxySQL概述 1>.各家互联网公司读写分离的解决方案 m ...
- mysql主从之基于mycat实现读写分离
一 环境 1.1 结构 192.168.132.125 mycat 192.168.132.121 master 192.168.132.122 slave 主从已经配置完成 1.2 安装myca ...
- SQL Server、MySQL主从搭建,EF Core读写分离代码实现
一.SQL Server的主从复制搭建 1.1.SQL Server主从复制结构图 SQL Server的主从通过发布订阅来实现 1.2.基于SQL Server2016实现主从 新建一个主库&quo ...
- mysql 主从配置(master/slave)
1. 在每台服务器上创建复制账号(也可以只在master上创建用户,这里配置两个是为了方便以后切换) 备库运行的I/O县城需要建立一个到主库的TCP/IP连接,所以必须在主库创建一个用户,并赋予合适 ...
- atlas+mysql主主集群实现读写分离
atlas+mysql主主集群实现读写分离 前言: 目前线上系统数据库采用的是主主架构.其中一台主仅在故障时切换使用,(仅单台服务器对外提供服务,当一台出现问题,切换至另一台).该结构很难支撑较大并 ...
- [mysql终极优化]之主从复制与读写分离详细设置教程
读写分离与主从复制是提升mysql性能的重要及必要手段,大中型管理系统或网站必用之. 一.什么是读写分离与主从复制 先看图 如上图所示,当web server1/2/3要写入数据时,则向mysql d ...
- Dubbo入门到精通学习笔记(二十):MyCat在MySQL主从复制的基础上实现读写分离、MyCat 集群部署(HAProxy + MyCat)、MyCat 高可用负载均衡集群Keepalived
文章目录 MyCat在MySQL主从复制的基础上实现读写分离 一.环境 二.依赖课程 三.MyCat 介绍 ( MyCat 官网:http://mycat.org.cn/ ) 四.MyCat 的安装 ...
- linux下mysql基于mycat做主从复制和读写分离之基础篇
Linux下mysql基于mycat实现主从复制和读写分离1.基础设施 两台虚拟机:172.20.79.232(主) 172.20.79.233(从) 1.1软件设施 mysql5.6.39 , my ...
随机推荐
- 数学分析理论(rudin版)笔记:实数系和复数系.1
导引 有理数集是"稀疏的"和"稠密的". 选择公理 考虑以下问题:容易找到两个无理数 a, b 使 a + b 为有理数,或者使 ab 为有理数,但是能否使得 ...
- window consul安装和运行
consul 前言 一.consul是什么? 二.使用步骤 1.安装 2.启动 结束~~ 前言 刚开始接触spring cloud,其中就有用到consul,简单介绍一下以及怎么安装运行起来 提示:以 ...
- Java基础教程——封装
面向对象的三大特征 封装:encapsulation 继承:inheritance 多态:polymorphism 封装 类是一个最基本的封装 封装的好处: 数据安全:保证数据安全 方便调用:提供清晰 ...
- Mat使用详解
背景 笔记中躺了很久的文章,今天用到Mat时发现之前写的内容还算清晰,分享出来; 如下所举例使用的dump文件是针对之前使用的ignite库溢出时的dump文件:关于ignite的概念此处不再叙述,本 ...
- 了不起的 Deno:带你极速获取各大平台今日热榜
摘要:Deno 是一个 JavaScript/TypeScript 的运行时,默认使用安全环境执行代码,有着卓越的开发体验. 有人的地方就有江湖,有江湖的地方就有争论.前些天,继<[译]为什么如 ...
- spring-boot-starter
Spring Boot Starter 是在 SpringBoot 组件中被提出来的一种概念,stackoverflow 上面已经有人概括了这个 starter 是什么东西,想看完整的回答戳 这里. ...
- 老猿学5G扫盲贴:3GPP中的5G计费架构
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一.计费逻辑架构和信息流 在32240子系列文档内 ...
- 第15.41节、PyQt(Python+Qt)入门学习:输入部件QComboBox组合框功能详解
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 一.概述 Designer中输入工具部件中的Combo Box组合框与 ...
- 关于utf-8编码值 [ASIS 2019]Unicorn shop
0x00 前言 这题拿到之后有点懵,后来看了 网上的 wp 更加懵,网上大多数都是直接说 去 compart 搜thousand,然后找个大于1337 的就可以,至于为什么?基本都没有给出解答.于是乎 ...
- anaconda 配置虚拟环境
工作时有时候会遇到不同版本的问题,比如深度学习tensorflow 1.14版本 和 2.0版本,或者cpu版本和gpu版本,那么这个时候建立虚拟环境就很方便了 anaconda命令行下 1) act ...