当前位置:   article > 正文

Mysql数据库互为主从及高可用部署_mysql互为主从

mysql互为主从

         无论在学习还是工作的过程中,随着时间的推移,数据量会越来越大,对数据库的要求也越来越高.这个时候,对数据库的相关部署就显得尤为重要,本文简单介绍了对Mysql数据库的主从复制和高可用部署,希望对大家有所帮助.

一、Mysql数据库的主从复制和高可用

1.Mysql数据库的主从复制:基于binlog日志,当主库更新操作后,从库会自动同步操作,实现数据的统一,提高了数据库的安全性

2.高可用:基于keepalived实现高可用,避免单点故障

二、部署过程

1.主从复制的部署(GTID)

(1)环境准备  两台centos7版本虚拟机(master backup) 关闭防火墙 关闭selinux安全服务 配置国内的base仓库和epel仓库    注意:主库和从库的数据应当保持一致(密码 用户名..)

两台虚拟机同时部署

(2)下载Mysql数据库仓库文件软件包并安装指定版本

 wget https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm 

 #下载仓库文件软件包

 rpm -ivh  mysql80-community-release-el7-7.noarch.rpm

#安装软件包

yum -y install yum-utils

#安装yum管理工具

yum-config-manager --enable mysql57-community

#启用mysql5.7版本

yum-config-manager --disable mysql80-community

#禁用mysql8.0版本

yum -y install mysql-server mysql

#安装

systemctl start mysqld

#启动数据库

(3)数据库初始化

cat /var/log/mysqld.log |grep password    

#获取原始密码

mysqladmin -uroot -p'原始密码' password '新密码'

#修改root用户原始密码    如果需要设置弱密码策略,在/etc/my.cnf配置文件中写入validate_password=off

master虚拟机部署

(1)在配置文件/etc/my.cnf中写入

  1. log-bin
  2. server-id=1 #服务器的id不能相同
  3. gtid_mode = ON #开启GTID功能
  4. enforce_gtid_consistency=1

(2)进入数据库创应的授权用户供从服务器使用

mysql -uroot -p密码

#登录到数据库

grant all on *.* to haha@"%" identified by '密码'

#任何人可以通过haha用户登录到数据库并享有所有库,所有表的权限

flush privileges;
#刷新授权表  也可以最后重启mysqld服务

systemctl restart mysqld

#重启服务 因为修改了配置文件

backup虚拟机部署

(1)配置文件/etc/my.cnf中写入并重启mysqld服务

  1. log-bin
  2. server-id=2
  3. gtid_mode = ON
  4. enforce_gtid_consistency=1
  5. master-info-repository=TABLE #将master.info和relay.info保存在表中
  6. relay-log-info-repository=TABLE
  7. relay_log_recovery = on #开启relay-log日志

(2)进入数据库,并关联到主数据库

mysql命令行输入edit写入

     change master to
         master_host='master的IP地址',
         master_user='授权用户',
         master_password='授权密码',
         master_auto_position=1;

保存退出并以;结束

(3)启动角色并查看状态,

start slave;启动角色

show slave status\G; 查看状态

(4)出现下图两个yes表示主从状态正常

(5)交换master和slave身份再执行以上操作(注意:两台服务器应创建一样的授权用户)

2. 高可用部署(keepalived)

两台虚拟机同时部署

(1)安装keepalived

yum -y install keepalived

master上部署

(1)修改/etc/keepalived/keepalived.conf

  1. ! Configuration File for keepalived
  2. global_defs {
  3. router_id sun1 #集群id,保持不一致
  4. }
  5. vrrp_script check_run {
  6. script "/etc/keepalived/keepalived_chech_mysql.sh"
  7. interval 5
  8. }
  9. vrrp_instance VI_1 {
  10. state MASTER #定义为master
  11. interface ens33
  12. virtual_router_id 89 #集群调度器保持一致
  13. priority 100 #优先级master大于backup
  14. advert_int 1
  15. authentication {
  16. auth_type PASS
  17. auth_pass 1111
  18. }
  19. virtual_ipaddress {
  20. 10.0.0.244/24 #定义VIP(最好是和宿主机同一网段)
  21. }
  22. track_script {
  23. check_run
  24. }
  25. }

backup上部署

(1)修改/etc/keepalived/keepalived.conf

  1. ! Configuration File for keepalived
  2. global_defs {
  3. router_id sun2
  4. }
  5. vrrp_script check_run {
  6. script "/etc/keepalived/keepalived_check_mysql.sh"
  7. interval 5
  8. }
  9. vrrp_instance VI_1 {
  10. state BACKUP #定义为backup
  11. nopreempt #默认不抢占
  12. interface ens33
  13. virtual_router_id 89
  14. priority 50 #优先级小于master
  15. advert_int 1
  16. authentication {
  17. auth_type PASS
  18. auth_pass 1111
  19. }
  20. virtual_ipaddress {
  21. 10.0.0.244/24 #定义VIP
  22. }
  23. track_script {
  24. check_run
  25. }
  26. }

master和backeup启动keepalived

验证结果

(1)VIP出现在master,停掉master的keepalived后,VIP漂移到backup上

(2)停掉master的mysqld和keepalived后,用第三台服务器通过授权用户+VIP仍然可以远程登陆到数据库

局限性

当MySQL服务出现问题,而keepalived未停止,VIP不会飘移,这时无法切换master,数据库无法正常登录。

解决办法

当检测到mysqld服务未正常运行时,同时关闭keepalived

编写健康监测脚本+计划任务,脚本如下:

  1. #!/bin/bash
  2. systemctl status mysqld&>/dev/null
  3. if [ $? = 0 ]; then #通过判断执行上条命令的返回结果,判断mysqld是否运行
  4. echo "数据库运行正常"
  5. else
  6. systemctl stop keepalived
  7. fi

计划任务如下:

  1. chmod a+x /root/mysql.sh #给脚本执行权限
  2. */5 * * * * bash /root/mysql.sh #每隔五分钟执行一次脚本

总结

       本文介绍了Mysql数据库基于GTID实现互为主从,并在此基础上做了数据库的高可用,编写了健康检测脚本,当master宕掉了,数据库仍然正常可以访问,很大程度上保证了服务的可用性.希望对大家有所帮助.

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/388600
推荐阅读
相关标签
  

闽ICP备14008679号