Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >MySQL主从备份和主主备份配置+Keepalived+MySQL读写分离

MySQL主从备份和主主备份配置+Keepalived+MySQL读写分离

作者头像
星哥玩云
发布于 2022-08-17 06:39:17
发布于 2022-08-17 06:39:17
3.4K0
举报
文章被收录于专栏:开源部署开源部署

一、MySQL主从备份

为保证数据库的安全和效率,可以使用主从备份,当有写的操作可以在主服务器上操作,操作完之后备份到从服务器上,当有读操作时可以访问从服务器,这样在一定程度上保证了数据库的安全,当主服务器的mysql挂掉之后,数据也不会丢失,同时也提高了数据库的效率。

1.环境

master 192.168.174.129

slave 192.168.174.130

master和slave的防火墙都为关闭状态,selinux也为disabled,不然会出错,selinux设置重启生效。

2.在master和slave上安装mysql和mysql-server

注:mysql master数据库版本和slave数据库版本要相同,或者slave版本比master高

mysql安装可以yum安装也可以源码安装,本文采用yum安装

yum -y install mysql mysql-server

在主服务器和从服务器上打开mysql服务,并设置开机自启

service mysqld restart

chkconfig mysqld on

3.mysql mater配置

打开mysql配置文件/etc/my.cnf,在mysqld下添加

log-bin=mysql-bin      ---------启动二进制日志系统

binlog-do-db=test      ---------要同步的数据库

server-id=1                ---------服务id,主服务器server-id比从服务器server-id小

binlog-ignore-db=mysql ------避免同步mysql用户配置

重启mysql

service mysqld restart

进入数据库mysql

mysql -u root -p

初始状态mysql默认没有密码,如果要设置密码可以使用mysqladmin -u root -p "password",设置密码,这样也会更安全一些

创建一个同步账号,并赋予权限

查看master的状态信息,记录下file和position的值,在后边的slave配置中会用到

4.mysql slave配置

打开mysql配置文件/etc/my.cnf,在mysqld下添加

 server-id=2                    -------- 服务id,从服务器server-id比主服务器server-id大

 replication-ignore-db=mysql  -- 屏蔽对mysql库的同步

 replication-do-db=test    ---------要同步的数据库名,与主服务器配置保持一致

 master-connect-retry=60 --------断点重连时间

 master-host=192.168.174.129

 master-user=test

 master-password=test

 master-port=3306

进入mysql

mysql -u root -p

停止slave服务:stop slave;

配置slave同步,完成后开启slave服务

change master to master_host='192.168.174.129',master_user='test',master_password='test',master_log_file='mysql-bin.000026',master_log_pos=346;

这里的master_log_file和master_log_pos要和前面记录的file和position一致

查看slave状态

show slave status\G;

当两个running都为yes时即配置成功,可以在主服务上对test数据库操作,看是否这些操作会同步到从服务器上

二、MySQL主主备份

主主备份的设置就是将从服务器上的设置在主服务器上操作一遍,主服务器上的操作在从服务器上操作一遍,这里就不再赘述

三、 MySQL+Keepalived

环境:

keepalived主机:192.168.174.129

keepalived备机:192.168.174.130

VIP:192.168.174.222

测试主机:192.168.174.133

master、slave、keepalived主机、keepalived备机、测试主机的防火墙都为关闭状态,selinux也为disabled,不然会出错,selinux设置重启生效。

1.keepalived

keepalived可以监控服务状态,当主服务宕机后可以将服务自动漂移至从服务,利用keepalived+mysql可以实现mysql的高可用性,当mysql主服务器宕机后,从服务器接管主服务器的工作,保证对外服务,keepalived还可以实现虚拟ip对外服务,保证内部服务器安全,同时keepalived的主从机制也保证了服务的高可用性

2.keepalived安装

这里和前边博文中keepalived安装步骤基本一样,主要是配置文件不一样,博主为熟悉keepalived安装又啰嗦了一遍,下载keepalived源码安装包,解压

进入keepalived解压目录,执行

./configure --prefix=/usr/local/keepalived

拷贝keepalived启动文件到/etc/init.d下,这样keepalived服务才能为系统识别

cp /root/package/keepalived-1.4.5/keepalived/etc/init.d /etc/init.d

执行

cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

cp /usr/local/keepalived/sbin/keepalived /usr/sbin

新建文件夹keepalived

mkdir /etc/keepalived

将keepalived的配置文件拷贝过来,keepalived启动时会从/etc/keepalived目录下查找keepalived.conf配置文件,如果没有找到则使用默认的配置。

cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/

以上操作在keepalived主机和备机上都执行

修改主机配置文件

修改备机配置文件

主机和备机配置文件只有router_id和vrrp_instance的state和priority不同

开启主机和备机的keepalived服务

service keepalived start

在测试机上ping 虚拟IP192.168.174.222,成功,而且我的内网内192.168.174.222的ip

使用虚拟IP192.168.174.222连接3306端口的mysql服务,连接之前需要在mysql主服务和mysql从服务器为测试机ip赋予权限

使用虚拟IP192.168.174.222连接3306端口的mysql服务,使用授权的用户和密码,成功

查看当前数据库

查看mysql从服务器数据库可知连接的应该是从数据库

停止mysql从服务器服务:service mysqld stop,再次在测试机连接虚拟IP192.168.174.222连接3306端口的mysql服务,成功

也可以查出数据库

keepalived+mysql主从同步成功

四、MySQL读写分离

mysql读写分离是在mysql主从同步的基础上做的,mysql主服务器负责写,多台mysql从服务器负责读,mysql主从同步仅仅是把mysql主服务器的数据库同步到了mysql从服务器上,如果要实现读写分离,还需要一个服务器去协调。这个服务就是mysql-proxy。

1.环境配置

mysql主服务器:192.168.174.129

mysql从服务器:192.168.174.130

mysql-proxy服务器:192.168.174.131

master、slave以及mysql-proxy服务器的防火墙都为关闭状态,selinux也为disabled,不然会出错,selinux设置重启生效。

2.mysql-proxy安装

mysql的读写分离是靠过rw-splitting.lua脚本实现的,因此需要安装lua。

安装之前先安装包依赖

yum -y install gcc* gcc-c++ autoconf automake zlib* libxml* ncurses-devel libmcrypt libtool* flex* pkgconfig* libevent* glib*

wget 下载lua,很小,很快就能下载完成,解压

wget http://www.lua.org/ftp/lua-5.1.4.tar.gz

进入lua解压后目录,执行

make linux

make && make install

export LUA_CFLAGS="-I/usr/local/include" LUA_LIBS="-L/usr/local/lib -llua -ldl" LDFLAGS="-lm"

下载mysql-proxy,解压

执行

mkdir /usr/local/mysql-proxy

cp * /usr/local/mysql-proxy

cd /usr/local/mysql-proxy

修改rw-splitting.lua文件

修改连接数,默认为4,即只有当有四台mysql服务器时才启用读写分离,为了试验成功,改为1

vim /usr/local/mysql-proxy/rw-splitting.lua

启动msyql-proxy

cd /usr/local/mysql-proxy/bin

./mysql-proxy --proxy-read-only-backend-addresses=192.168.174.130:3306 --proxy-backend-addresses=192.168.174.129:3306 --proxy-lua-script=/usr/local/mysql-proxy/rw-splitting.lua &

参数说明:

 --proxy-read-only-backend-addresses ---------只读服务器ip地址

 --proxy-backend-addresses  ----------------------服务器地址(mysql主服务器)

 --proxy-lua-script          ----------------------------lua脚本路径

 &    -----------------------------------------------------表示后台执行

mysql主从备份+mysql读写分离配置完成。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
使用mysql-proxy配置mysql读写分离
简介 对于很多大型网站(pv值百万、千万)来说,在所处理的业务中,其中有70%的业务是查询(select)相关的业务操作(新闻网站,插入一条新闻。查询操作),剩下的则是写(insert、update、delete,只要能对MySQL的数据造成更改的操作都叫写操作)操作。在使用负载均衡集群之后,可以很大程度的提升网站的整体性能,但是最终的数据处理的压力还是会落到MySQL数据库上,所有很有必要使用一些技术来提升MySQL的负载能力。(读写分离) 写操作专门交给写服务器处理(一般网站来说写是比较少的 读写比 4
老七Linux
2018/05/09
1.6K0
MySQL主从复制 mysql-proxy实现读写分离
docker安装步骤 https://docs.docker.com/install/linux/docker-ce/centos/#install-docker-ce-1
星哥玩云
2022/08/17
6180
MySQL主从复制 mysql-proxy实现读写分离
Mysql读写分离方案-MySQL Proxy环境部署记录
Mysql的读写分离可以使用MySQL Proxy和Amoeba实现,其实也可以使用MySQL-MMM实现读写分离的自动切换。MySQL Proxy有一项强大功能是实现"读写分离",基本原理是让主数据库处理写方面事务,让从库处理SELECT查询;Amoeba for MySQL是一款优秀的中间件软件,同样可以实现读写分离,负载均衡等功能。下面重点说下Mysql Proxy: MySQL Proxy处于客户端应用程序和MySQL服务器之间,通过截断、改变并转发客户端和后端数据库之间的通信来实现其功能。代理服务
洗尽了浮华
2018/01/23
2K0
Mysql读写分离方案-MySQL Proxy环境部署记录
Mysql读写分离
在高并发的时候,如果所有的数据库操作都只通过一台数据库来操作,那数据库很大程度可能出现宕机,而宕机就有可能导致数据丢失,造成不良后果。所以在并发量高的情况下一般会使用主从同步来实现读写分离。上一篇针对主从同步做了具体的介绍,本篇主要针对读写分离做详细的介绍。
创译科技
2019/10/22
2.6K0
Mysql读写分离
Centos7配置MySQL读写分离[通俗易懂]
在主服务器创建Proxy用户用户mysql-proxy使用,从服务器也会同步这个操作
全栈程序员站长
2022/09/02
4600
CentOS 7.2下MySQL读写分离配置
场景描述: 数据库Master主服务器:192.168.206.100 数据库Slave从服务器:192.168.206.200 MySQL-Proxy调度服务器:192.168.206.210
星哥玩云
2022/08/17
4620
MySQL读写分离
  当今MySQL使用相当广泛,随着用户的增多以及数据量的增大,高并发随之而来。然而我们有很多办法可以缓解数据库的压力。分布式数据库、负载均衡、读写分离、增加缓存服务器等等。这里我们将采用读写分离技术进展缓解数据库的压力。
那一叶随风
2018/08/22
2.4K0
MySQL读写分离
mysql一主多从 读写分离_MySQL主从复制原理
  在企业应用中,成熟的业务通常数据量都比较大。单台 mysql 在安全性、高可用性和高并发方面都无法满足实际的需求,实际生产环境中经常会配置多台主从数据库服务器以实现读写分离。
全栈程序员站长
2022/09/22
1.7K0
mysql一主多从 读写分离_MySQL主从复制原理
MySQL 读写分离
一 什么是读写分离 MySQL Proxy最强大的一项功能是实现“读写分离(Read/Write Splitting)”。基本的原理是让主数据库处理事务性查询,而从数据库处理SELECT查询。数据库
李海彬
2018/03/27
5.6K0
MySQL 读写分离
MySQL主从复制+读写分离原理及配置实例
MySQL的主从复制和MySQL的读写分离两者不分家,基于主从复制的架构才可实现数据的读写分离。
小手冰凉
2019/10/12
7190
MySQL主从复制+读写分离原理及配置实例
听说Mysql你很豪横?-------------MySQL5.7主从复制!读写分离!
读写分离就是只在主服务器上写,只在从服务器上读 主数据库处理事务性査询,而从数据库处理 select査询 数据库复制被用来把事务性査询导致的变更同步到集群中的从数据库
不吃小白菜
2020/09/03
7740
听说Mysql你很豪横?-------------MySQL5.7主从复制!读写分离!
MySQL主从+Atlas 实现读写分离
Atlas是由 Qihoo 360公司Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基础上,修改了大量bug,添加了很多功能特性。目前该项目在360公司内部得到了广泛应用,很多MySQL业务已经接入了Atlas平台,每天承载的读写请求数达几十亿条。同时,有超过50家公司在生产环境中部署了Atlas,超过800人已加入了我们的开发者交流群,并且这些数字还在不断增加。
全栈程序员站长
2021/06/10
8940
MySQL主从+Atlas 实现读写分离
MYSQL数据库读写分离实例
描述:在做PHP读写分离前需要拿到运维部门给好的读写数据库的连接地址,提前定义好数据库的操作类程序,然后编写开发文档让所有的开发同时都统一调用这个类来执行SQL语句;
全栈工程师修炼指南
2022/09/28
5.4K0
MYSQL数据库读写分离实例
04 . Mysql主从复制和Mycat读写分离
从库生成两个线程,一个I/O,一个SQL线程,I/O线程去请求主库的binlog,并将得到的binlog日志写到relay log(中继日志)文件中;
iginkgo18
2020/09/27
1K0
04 . Mysql主从复制和Mycat读写分离
Atlas实现MySQL主从分离
Atlas源代码用C语言编写,它对于Web Server相当于是DB,相对于DB相当于是Client,如果把Atlas的逻辑放到Web Server程序里去处理,这样会大大增加Web Server程序的复杂度,同时Web Server和DB之间的耦合度也相当高,因为只要DB增加/减少服务,Web Server就有可能要发生代码改变,若代码不改变,就得通过中间关系表与心跳机制来维护Server之间的关系,这样会带来性能的损耗,而Atlas是架设在Web Server与DB之间的一个中间件,Web Server与DB之间的耦合关系放到了Atlas来处理,既做到了灵活也保留了性能,这也是Atlas存在的价值。
星哥玩云
2022/08/17
6990
Atlas实现MySQL主从分离
mysql数据库主从复制原理_数据库主从一致性验证
在实际的生产环境中,如果对MySQL数据库的读和写都在一台数据库服务中操作,无论在安全性、高可用性,还是高并发性等各个方面都是完全不能满足实际需求的,一般来说都是通过主从复制(Master-Slave)的方式来同步数据,再通过读写分离来提升数据库的并发负载能力这样的方案进行部署与实施
全栈程序员站长
2022/09/22
4270
mysql数据库主从复制原理_数据库主从一致性验证
MySQL主从复制(一主一从)部署
①当Master节点进行insert、update、delete操作时,会按顺序写入到binlog中。
Alone-林
2023/03/17
2.4K0
MySQL主从复制(一主一从)部署
mysql主从搭建、使用mycat实现主从读写分离[通俗易懂]
简单的说就是 master 将数据库的改变写入二进制日志,slave 同步这些二进制日志,并根据这些二进制日志进行数据操作以实现主从同步。
全栈程序员站长
2022/11/04
3.1K0
mysql读写分离配置
随着网站访问和请求量的增加,单台数据库服务器的连接已耗尽,会出现连接请求还在等待,或是数据库服务器崩溃等现象,这时候我们考虑如何减少数据库的连接,可以通过优化代码、使用缓存、数据库读写分离等方式解决此问题。 什么是读写分离:将数据库的读、写操作分别作用到不同的数据库(不同物理机)上。 适用场景:读操作远大于写操作,包含大量复杂统计、离线计算等任务(比如定时按各维度对数据进行统计分析,或者结算佣金等) 研究了一阵,在配置的过程中出现各种问题。。今天刚配置好 windows系统环境:本机+VM虚拟机:MySql5.6,先安装好MySql 找到MySql5.6的 my.ini配置文件,在 C:\ProgramData\MySQL\MySQL Server 5.6目录中,ProgramData文件夹默认是隐藏的 Mysql主从同步的现实: 1、Master库将变更记录到binlog中 2、Slave将master的binlog拷贝到它的relay log(中继日志)中 3、slave重做中继日志中的事件 可以通过中间价实现读写分离,如Ameba,Corba,mysql-Proxy(官方)
全栈程序员站长
2022/06/27
8410
mysql读写分离配置
Mysql-主从复制与读写分离
1、在业务复杂的系统中,有这么一个情景,有一句sql语句需要锁表,导致暂时不能使用读的服务,那么就很影响运行中的业务,使用主从复制,让主库负责写,从库负责读,这样,即使主库出现了锁表的情景,通过读从库也可以保证业务的正常运作。
用户7353950
2022/06/23
2980
Mysql-主从复制与读写分离
相关推荐
使用mysql-proxy配置mysql读写分离
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档