0.背景
结合系统业务、数据量大小和数据的重要性,目前常用的MySQL高可用方案有Keepalived+双主、MHA、MMM、PXC、MySQL Cluster和HeartBeat+DRBD,生产环境中常用的有Keepalived+双主、MHA和PXC,本文章的内容主要是搭建Keepalived+双主的环境。正常环境下写操作使用VIP连接数据库来做写操作,使用master2的地址来做读操作。若有其中的一个主机有异常,都切换还在vip上面。环境正常后再切换回来。
本章环境使用两个服务器和三个IP搭建而成,vip是绑定到master1和master2的网卡上的虚拟网卡。
keepalived.png
1.环境准备
角色 主机ip 主机名 操作系统版本 安装软件及版本
VIP 192.168.40.129 虚拟地址
master1 192.168.40.127 xwmaster1 CentOS 7.5 mysql5.7.21+keepalived2.0.8
master2 192.168.40.128 xwmaster2 CentOS 7.5 mysql5.7.21+keepalived2.0.8
2.MySQL服务安装
从 CentOS 7 系统开始,MariaDB 成为 yum 源中默认的数据库安装包。在 CentOS 7 及以上的系统中使用 yum 安装MySQL包将无法使用,在安装之前先卸载MariaDB,查看mariadb的安装包情况并卸载
yum list installed | grep mariadb
yum -y remove mariadb*
下载mysql的YUM源
安装mysql的yum源
rpm -ivh mysql57-community-release-el7-11.noarch.rpm
安装mysql-server
yum install -y mysql-server
启动mysql服务
server mysqld start
mysql获取mysql初始密码
cat /var/log/mysqld.log|grep 'A temporary password'
修改mysql密码由于mysql5.7安全性要求密码由小写字母大写字母数字和字符组成例如Password@123
mysql -uroot -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Password@123';
3.MySQL配置
在配置mysql之前要设置防火墙允许3306端口通过。
systemctl stop firewalld.service #关闭firewalld防火墙
systemctl disable firewalld.service #从开机启动中移除
yum install iptables-services -y #iptables-services安装
vi /etc/sysconfig/iptables #操作防火墙iptables文件
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT #加入到防火墙
systemctl restart iptables.service #重启防火墙
systemctl enable iptables.service #加入开机启动
1.master1的配置操作/etc/my.cnf
[mysqld]
# 数据存储文件指定
datadir=/data/mysql
# sock文件路径
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
#错误日志文件路径
log-error=/var/log/mysqld.log
#进程文件路径
pid-file=/var/run/mysqld/mysqld.pid
# mysql服务id
server-id=1
#二进制日志 存储数据发生改变的sql语句
log-bin=mysql-bin
#增量值得起点
auto-increment-offset=1
#每次增量间隔
auto-increment-increment=2
#设置需要同步的数据库名称
#binlog_do_db=
2.数据同步授权
数据同步授权(iptables防火墙开启3306端口)这样I/O线程就可以以这个用户的身份连接到主服务器