前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL主从备份和主主备份配置+Keepalived+MySQL读写分离

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

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

一、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主从备份和主主备份配置+Keepalived+MySQL读写分离
MySQL主从备份和主主备份配置+Keepalived+MySQL读写分离

在主服务器和从服务器上打开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主从备份和主主备份配置+Keepalived+MySQL读写分离
MySQL主从备份和主主备份配置+Keepalived+MySQL读写分离

重启mysql

service mysqld restart

进入数据库mysql

mysql -u root -p

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

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

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

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

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

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

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主从备份和主主备份配置+Keepalived+MySQL读写分离
MySQL主从备份和主主备份配置+Keepalived+MySQL读写分离

进入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一致

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

查看slave状态

show slave status\G;

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

当两个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源码安装包,解压

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

进入keepalived解压目录,执行

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

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

拷贝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

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

新建文件夹keepalived

mkdir /etc/keepalived

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

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

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

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

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

修改主机配置文件

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

修改备机配置文件

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

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

开启主机和备机的keepalived服务

service keepalived start

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

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

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

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

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

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

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

查看当前数据库

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

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

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

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

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

也可以查出数据库

MySQL主从备份和主主备份配置+Keepalived+MySQL读写分离
MySQL主从备份和主主备份配置+Keepalived+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

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

进入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,解压

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

执行

mkdir /usr/local/mysql-proxy

cp * /usr/local/mysql-proxy

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

cd /usr/local/mysql-proxy

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

修改rw-splitting.lua文件

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

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

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

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

启动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 删除。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、MySQL主从备份
  • 二、MySQL主主备份
  • 三、 MySQL+Keepalived
  • 四、MySQL读写分离
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档