设为首页 收藏本站
查看: 1500|回复: 0

[经验分享] MySQL主从备份和主主备份配置+Keepalived+MySQL读写分离

[复制链接]

尚未签到

发表于 2018-12-30 15:37:09 | 显示全部楼层 |阅读模式
一、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
180915075781406.png
在主服务器和从服务器上打开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用户配置
1809150757814028.png
重启mysql
service mysqld restart
进入数据库mysql
mysql -u root -p
初始状态mysql默认没有密码,如果要设置密码可以使用mysqladmin -u root -p "password",设置密码,这样也会更安全一些
1809150757814027.png
创建一个同步账号,并赋予权限
1809150757814014.png
查看master的状态信息,记录下file和position的值,在后边的slave配置中会用到
1809150757814015.png
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
180915075781407.png
进入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一致
1809150757814010.png
查看slave状态
show slave statusG;
1809150757814024.png
当两个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源码安装包,解压
1809150757814023.png
进入keepalived解压目录,执行
./configure --prefix=/usr/local/keepalived
1809150757814018.png
拷贝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
1809150757814017.png
1809150757814031.png
新建文件夹keepalived
mkdir /etc/keepalived
180915075781403.png
将keepalived的配置文件拷贝过来,keepalived启动时会从/etc/keepalived目录下查找keepalived.conf配置文件,如果没有找到则使用默认的配置。
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
1809150757814019.png
以上操作在keepalived主机和备机上都执行
修改主机配置文件
180915075781408.png
修改备机配置文件
1809150757814029.png
主机和备机配置文件只有router_id和vrrp_instance的state和priority不同
开启主机和备机的keepalived服务
service keepalived start
180915075781404.png
在测试机上ping 虚拟IP192.168.174.222,成功,而且我的内网内192.168.174.222的ip
1809150757814022.png
使用虚拟IP192.168.174.222连接3306端口的mysql服务,连接之前需要在mysql主服务和mysql从服务器为测试机ip赋予权限
1809150757814030.png
使用虚拟IP192.168.174.222连接3306端口的mysql服务,使用授权的用户和密码,成功
1809150757814011.png
查看当前数据库
180915075781402.png
查看mysql从服务器数据库可知连接的应该是从数据库
1809150757814025.png
停止mysql从服务器服务:service mysqld stop,再次在测试机连接虚拟IP192.168.174.222连接3306端口的mysql服务,成功
1809150757814021.png
1809150757814012.png
也可以查出数据库
1809150757814013.png
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
1809150757814016.png
进入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,解压
180915075781405.png
执行
mkdir /usr/local/mysql-proxy
cp * /usr/local/mysql-proxy
180915075781401.png
cd /usr/local/mysql-proxy
1809150757814020.png
修改rw-splitting.lua文件
180915075781409.png
修改连接数,默认为4,即只有当有四台mysql服务器时才启用读写分离,为了试验成功,改为1
vim /usr/local/mysql-proxy/rw-splitting.lua
1809150757814026.png
启动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读写分离配置完成。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-657703-1-1.html 上篇帖子: Keepalived+Nginx实现高可用和双主节点负载均衡 下篇帖子: Haproxy负载均衡+Keepalived高可用web群集
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表