搭建说明
- 两主一从,从本质上说,只不过是机器 master-a 和 master-b 互为主从机(热备),然后通过 keepalived 进行高可用配置,使得在同一时间内只会有一台对外提供服务,实现单写机制,另一个机器 slave 则作为 master-a 的从机存在(冷备)。
- 从机 slave 无法直接将虚拟IP(VIP)作为主机:正常运行时,slave 绑定了一个主机 master-a, 一旦绑定之后,在 master-a 不可用的时候,无法自动切换到 master-b,因为需要考虑 二进制日志文件名(master_log_file)及位置(master_log_pos)在 master-a 和 master-b 上是不一致的,此时只有在 master-a 恢复可用时,master-a 从 master-b 同步数据之后,slave 数据最终才会和 master-a 保持一致。
环境准备
- 三台 centos7 的服务器,服务器ip为 192.168.86.124(master-a)、192.168.86.125(master-b)、192.168.86.126(slave)
- 一个虚拟IP(VIP):192.168.86.250
- mysql-5.7.24-linux-glibc2.12-x86_64 安装包
数据库安装
- 将 mysql 安装包上传到三台服务器上
- 解压安装包
tar -zxvf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
- 创建 mysql 安装路径,然后移动刚才解压的文件夹并重命名
mkdir /data #创建安装路径 mv mysql-5.7.24-linux-glibc2.12-x86_64 /data/mysql #移动文件并重命名
- 创建 mysql 用户和组、创建mysql运行需要的文件夹及赋权
groupadd mysql #创建用户组 useradd -r -g mysql mysql #创建用户 cd /data/mysql #切换到安装目录 mkdir data #创建数据存放目录 mkdir mysql-log #创建日志存放目录 mkdir mysql-log/err-log mkdir mysql-log/slow-log mkdir mysql-log/relay-log mkdir mysql-log/bin-log chown -R root:mysql . #将当前目录以及子目录,所有者改变为 mysql,所属组修改为 mysql chown -R mysql:mysql data chown -R mysql:mysql mysql-log
- 设置用户操作系统资源限制
vi /etc/security/limits.conf # 在文件中加入以下内容 mysql soft nproc 2047 mysql hard nproc 16384 mysql soft nofile 1024 mysql hard nofile 65536
- 设置链接和服务
cp /data/mysql/support-files/mysql.server /etc/init.d/mysql # 可以使用service mysql start ln -s /data/mysql/bin/mysql /usr/bin #任何路径可以使用 mysql 命令
- 配置 /etc/my.cnf
vi /etc/my.cnf
- master-a
[mysqld] port = 3306 #端口 basedir = /data/mysql #mysql安装路径 datadir = /data/
- master-a