在阿里云Centos7.6上面配置Mysql主从数据库(master/slave),实现读写分离
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_85
在之前的一篇文章中,阐述了如何在高并发高负载的场景下使用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,具体怎样安装mysql服务请移步:https://v3u.cn/a_id_72
进入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;
把file列和Position列记录下来,一会配置slave要用到
此时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;
可以查看slave的状态:
show slave status G;
然后我们就可以测试一下对master进行写入,看看salve是否可以同步数据了
当然了,mysql的读写分离主从配置并不是万能的,根据不同的应用场景选择不同的策略,MySQL的主从复制功能有一定的延迟性,如果对数据实时一致性的要求比较高的场景不推荐使用。
原文转载自「刘悦的技术博客」 https://v3u.cn/a_id_85
在阿里云Centos7.6上面配置Mysql主从数据库(master/slave),实现读写分离的更多相关文章
- Mysql主从数据库(master/slave),实现读写分离
在之前的一篇文章中,阐述了如何在高并发高负载的场景下使用nginx做后台服务的负载均衡:在阿里云Centos上配置nginx+uwsgi+负载均衡配置,但是不要以为这样做了就是一劳永逸的,到了数据业务 ...
- MySQL/MariaDB数据库的PROXY实现读写分离
MySQL/MariaDB数据库的PROXY实现读写分离 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.ProxySQL概述 1>.各家互联网公司读写分离的解决方案 m ...
- 技术杂记之:在阿里云centos7上部署JDK MYSQL TOMCAT
今日小编闲来无事,乘着公司新项目即将上线之际,在阿里云上整了一台centos作为测试机.原本以为一个小时搞定,结果还是花了一点小小时间.不管怎么说,记录下来,给各位小白当成课后甜点吧. 价格 先上价格 ...
- 在阿里云服务器中安装配置mysql数据库完整教程
阿里云ECS服务器CentOS7上安装MySql服务 (可选)1.确保服务器系统处于最新状态 [root@localhost ~]# yum -y update如果显示以下内容说明已经更新完成 Rep ...
- 阿里云轻量应用服务器 配置mysql详解(转载)
1.服务器规格 1.地域选择 考虑个人地址因素因此选择了华南. 2.选择应用镜像/系统镜像 这个应该看个人需求,因为我只是想用来放数据库的,所以就随便选了个WordPress. 选好之后购买就完事了, ...
- 阿里云ECS服务器Ubuntu配置MySQL远程访问
root账户登录服务器Ubuntu16.04 apt-get update apt-get install mysql-server mysql-client; 安装时会让你设置root密码,输入2次 ...
- 阿里云centos7服务器nginx配置及常见问题解答
前言: 本文参考了jackyzm的博客:https://www.cnblogs.com/jackyzm/p/9600738.html,进行了内容的更新,并请注意这里适用的版本是centos7的版本.并 ...
- 阿里云CentOS7系列三 -- 配置防火墙
前面讲到了安装JDK以及Tomcat.但是大家会发现,当我们访问 http:// XXX.XXX.XXX.XXX:8080/80 时候,tomcat 猫并没有出现.原因就是没有设置防火墙. 再次介绍下 ...
- 阿里云centos7.2 lamp配置
安装apache 1.安装yum -y install httpd 2.设置apache服务开机启动systemctl enable httpd.service 3.开启apache服务systemc ...
随机推荐
- OpenStack 安装 Keystone
OpenStack 安装 Keystone 本篇主要记录一下 如何安装 openstack的 第一个组件 keystone 认证授权组件 openstack 版本 我选的是queens 版本 1.Op ...
- linux篇-centos7 安装cacti
1 cacti运行环境准备 cacti需要php+apache+mysql+snmp+RRDTool,以及cacti本身.cacti本体是用php开发的网站,通过snmp对远端设备信息进行采集.apa ...
- 每天一个 HTTP 状态码 204
204 No Content 204 No Content 表示服务器成功地处理了客户端的请求,但是没有任何要响应的内容.API 设计上,在用 PUT 请求更新某个资源成功后,后端可以在 HTTP 响 ...
- 负载均衡之DR实验
实验环境 本实验搭建在虚拟机中.一台服务器作为DR两台作为RS,还有一台为后续内容会用到的备用机. 实验环境示意图: 1. 修改网络层VIP 修改DR,添加VIP 修改前: 修改后: 修改RS,修改A ...
- 对比不同版本windows对libreoffice的支持情况
由于最近需要用到libreoffice进行对文档转换为pdf,不光需要考虑在linux下的表现,还需要对比下Windows下的兼容性. 在网上各个论坛都找了下,以及libreoffice的中文社区发帖 ...
- BitBlt()函数实现带数字百分比进度条控件、静态文本(STATIC)控件实现的位图进度条、自定义进度条控件实现七彩虹颜色带数字百分比
Windows API BitBlt()函数实现带数字百分比进度条控件. 有两个例子:一用定时器实现,二用多线程实现. 带有详细注解. 此例是本人原创,绝对是网上稀缺资源(本源码用Windows AP ...
- 论文阅读 dyngraph2vec: Capturing Network Dynamics using Dynamic Graph Representation Learning
6 dyngraph2vec: Capturing Network Dynamics using Dynamic Graph Representation Learning207 link:https ...
- ms08-067漏洞复现
一.环境说明 kali linux 靶机是 XP (xp启动445) 二.nmap扫描主机存在的漏洞 root@kali:~# nmap --script smb-vuln* 192.168.244. ...
- UiPath剪贴板操作的介绍和使用
一.剪切板操作的介绍 模拟用户使用剪切板操作的一种行为: 例如使用设置剪切板(SettoClipboard),从剪切板获取(GetfromClipboard)的操作 二.剪切板相关操作在UiPath中 ...
- mysql中innodb和myisam区别
前言 InnoDB和MyISAM是很多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,5.7之后就不一样了. 1.事务和外键 ● InnoDB具有事务,支持4个事务隔离级别,回滚,崩溃修 ...