MySQL 搭建主从高可用

题记:

文章内容输出来源:拉勾教育Java高薪训练营。
本篇文章是 MySQL 学习课程中的一部分笔记。

本博文详细说明了如何搭建 MySQL 高可用并对解决普通主从复制延迟不理想提供了解决方案,最后借助 MHA 实现了主从的自动切换。

1. mysql 下载

MySQL 官方下载地址:https://downloads.mysql.com/archives/community/

操作系统:CentOS 7

MySQL:mysql-5.7.29

在这个页面中选择操作系统和对应版本,如下图所示:

在这里插入图片描述

在 CentOS 中只用使用 wget 命令下载即可,下载完成后进行解压:

> wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar
> tar -xvf mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar
mysql-community-embedded-devel-5.7.29-1.el7.x86_64.rpm
mysql-community-test-5.7.29-1.el7.x86_64.rpm
mysql-community-embedded-5.7.29-1.el7.x86_64.rpm
mysql-community-embedded-compat-5.7.29-1.el7.x86_64.rpm
mysql-community-libs-5.7.29-1.el7.x86_64.rpm
mysql-community-client-5.7.29-1.el7.x86_64.rpm
mysql-community-server-5.7.29-1.el7.x86_64.rpm
mysql-community-devel-5.7.29-1.el7.x86_64.rpm
mysql-community-libs-compat-5.7.29-1.el7.x86_64.rpm
mysql-community-common-5.7.29-1.el7.x86_64.rpm

2 安装

在开始安装之前,需要确认系统中没有 MySQL 以及相关产品,使用 CentOS 镜像安装的操作系统的话,默认会自带一个 MariaDB,如果使用云主机,一般不带,不过也需要检查一下:

> rpm -qa | grep mariadb
> rpm -e mariadb-libs-5.5.41-2.el7_0.x86_64 --nodeps     # 如果有的话,使用这种方式移除

上面 MySQL 的安装包解压后有很多组件,一般不需要全部安装,挑常用的几个安装即可,并且要注意安装顺序:

> rpm -ivh mysql-community-common-5.7.29-1.el7.x86_64.rpm
> rpm -ivh mysql-community-libs-5.7.29-1.el7.x86_64.rpm
> rpm -ivh mysql-community-libs-compat-5.7.29-1.el7.x86_64.rpm
> rpm -ivh mysql-community-client-5.7.29-1.el7.x86_64.rpm
> rpm -ivh mysql-community-server-5.7.29-1.el7.x86_64.rpm
> rpm -ivh mysql-community-devel-5.7.29-1.el7.x86_64.rpm

上面组件安装完成后就完全够日常使用了。

3 初始化

使用下面命令进行初始化:

> mysqld --initialize --user=mysql # --user 是可选的参数,意思是创建一个名称是 mysql 的用户

初始化完成后,mysql 会给 root 用户创建一个临时的登录密码,登录进去后再对 root 用户的密码进行自定义修改,临时密码在 mysql 的日志中,默认路径是 /var/log/mysqld.log,一般在最后一行类似下面:

A temporary password is generated for root@localhost: hSQ&zl/3m?oF

一会使用上面的临时密码登录。

使用系统方式启动 mysql,同时还把 mysql 的加入到系统自启动列表中:

> systemctl start mysqld.service
> systemctl status mysqld.service     # 检查是否启动成功

然后使用上面日志中的临时密码登录,登录后修改密码,否则不能做任何操作:

> mysql -uroot -p
....
> set password=password('your_new_password');

为了让集群中的各个数据库节点能正常通信,需要关闭防火墙或者在防火墙中放行 3306 的端口,这里就直接停掉了:

> systemctl stop iptables      # iptables 防火墙
> systemctl stop firewalld     # firewalld 防火墙,CentOS 自带
> systemctl disable firewalld.service   # 彻底一点,从开机启动中禁用掉

4 配置主从

4.1 配置主库

修改主库的配置文件 /etc/my.cnf,增加以下配置:

# log_bin
server-id=1                          # 设置 server-id,每个数据库不能重复,必须
log_bin=mysql-bin                    # 指定 binlog 的名称,相当于开启 bin log, 必须
sync-binlog=1                        # 开始刷新 bin log 到磁盘,每次有更新事务,完成后都要马上刷新到磁盘
binlog-ignore-db=performance_schema  # binlog 中忽略的库
binlog-ignore-db=information_schema
binlog-ignore-db=sys

#binlog-do-db=lagou                   # 可以使用这个参数指定只同步那个库

保存退出后,重启数据库:

> systemctl restart mysqld

开始 bin log 后,就需要对 master 库进行一下权限设置,设置哪些 ip 的 slave 可以从本 master 同步 binlog。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值