阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

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

236次阅读
没有评论

共计 4387 个字符,预计需要花费 11 分钟才能阅读完成。

一、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 服务,并设置开机自启

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

service mysqld restart

进入数据库 mysql

mysql -u root -p

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

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

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

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

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

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

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 读写分离

查看 slave 状态

show slave status\G;

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 读写分离

进入 keepalived 解压目录,执行

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

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 读写分离

新建文件夹 keepalived

mkdir /etc/keepalived

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

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

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

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

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

修改主机配置文件

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

修改备机配置文件

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

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

开启主机和备机的 keepalived 服务

service keepalived start

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

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

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

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

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

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

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

查看当前数据库

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

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

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

停止 mysql 从服务器服务:service mysqld stop, 再次在测试机连接虚拟 IP192.168.174.222 连接 3306 端口的 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 读写分离

进入 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 读写分离

执行

mkdir /usr/local/mysql-proxy

cp * /usr/local/mysql-proxy

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

cd /usr/local/mysql-proxy

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

修改 rw-splitting.lua 文件

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

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

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

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 读写分离配置完成。

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计4387字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中