RHEL系统安装MySQL主备环境

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介:

环境准备

  • 操作系统: rhel6.4
  • 数据库: percona 5.6.14
  • 使用3306端口保证端口未被占用,selinux关闭状态

原理说明

mysql的复制(Replication)是一个异步的复制,从一个mysql instance(称之为master)复制到另一个mysql instance(称之为slave).实现整个复制操作主要由三个进程完成的,其中俩个进程在slave(sql进程和io进程),另外一个进程在master(IO进程)上。

要实施复制,首先要打开master端的binary log(bin-log)功能,否则无法实现。因为整个复制过程实际上就是slave从master端获取该日志然后在自己升上完全顺序的执行日志中所记录的各种操作。

配置说明

1. 配置master并启动

拷贝配置文件:

cp /usr/share/doc/Percona-Server-server-56-5.6.14/my-default.cnf /etc/my.cnf

编辑/etc/my.cnf

[mysqld]
explicit_defaults_for_timestamp=true   ##开启查询缓存
# log_bin
log_bin = mysql-bin
server_id = 36

启动mysql服务:

service mysql start 

2. 配置slave并启动

拷贝配置文件:

cp /usr/share/doc/Percona-Server-server-56-5.6.14/my-default.cnf /etc/my.cnf

编辑/etc/my.cnf

[mysqld]
explicit_defaults_for_timestamp=true 
log_bin = mysql-bin
server_id = 37
relay_log=/var/lib/mysql/mysql-relay-bin ##传送过来的日志存放目录
log_slave_updates=1
read_only=1 ##这个参数只对普通用户生效,超级用户和复制用户无效

启动mysql服务:

service mysql start 

3. 主从分别授权用户

在master,slave分别执行以下命令:

#mysql
mysql->grant replication slave,replication client on *.* to repl@'%' identified by  '123456';
mysql->flush priviledges;

4. 主库数据备份到从库

master上运行:

# mysqldump -A >all.sql

slave上运行:

# mysql <all.sql

5. 根据主状态启动从库

(1) 查询主库状态

mysql->show master status \G
 *************************** 1. row ***************************
             File: mysql-bin.000001
         Position: 697
     Binlog_Do_DB: 
 Binlog_Ignore_DB: 
Executed_Gtid_Set: 
1 row in set (0.00 sec)

(2) 从库启动复制

#mysql
mysql->change master to
        ->master_host="192.168.0.114",master_port=3306,master_user="repl",master_password="123456",master_log_file="mysql-bin.000001",master_log_pos=697;
mysql->start slave;

(3) 从库状态

mysql> show slave status \G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.0.114
                  Master_User: repl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000001
          Read_Master_Log_Pos: 697
               Relay_Log_File: mysql-relay-bin.000002
                Relay_Log_Pos: 563
        Relay_Master_Log_File: mysql-bin.000001
         ....Exec_Master_Log_Pos: 697
         ....

6. 主从用于复制的进程

在master上查看进程:

mysql->show processlist

1个如下状态的进程:

Master has sent all binlog to slave; waiting for binlog to be updated

在slave上查看进程:

mysql->show processlist

2个如下状态的进程

Waiting for master to send event
Slave has read all relay log; waiting for the slave I/O thread to update it

7. 主从状态监控

常规做法是slave上show slave status\G中的两个变量的差值(Read_Master_Log_PosExec_Master_Log_Pos),也可以使用percona提供的工具包pt-heartbeat

8. Percona-tookit 安装及pg-heartbeat使用

工具集中包含pt-heartbeat, 安装依赖perl-DBD-MySQL, perl-IO-Socket-SSL:

% rpm -ivh percona-toolkit-2.2.6-1.noarch.rpm

pg-heartbeat功能介绍:

  • 监控复制延迟
  • 测量复制落后时间

实现机制:

  • 第一步,pt-heartbeat的–update线程会在指定的时间间隔更新一个时间戳。
  • 第二步,pt-heartbeat的–monitor线程或者–check线程连接到从上检查前面更新的时间戳,和主当地时间做比较,得出时间差。

使用例子:

1)初始化环境,创建一个后台进程定期更新主上的test库heartbeat表,默认是一秒可以–interval指定,执行后会生成一个heartbeat表,test为需要监控的同步库

pt-heartbeat -D test --update -u repl -p 123456 -h 192.168.0.108 --create-table --daemonize

2)监控并输出slave落后时间

pt-heartbeat -D test --monitor -u repl -p 123456 -h 192.168.0.115
0.00s [  0.00s,  0.00s,  0.00s ]           ###瞬时延迟 [一分钟平均延迟,五分钟平均延迟,十五分钟平均延迟]
0.00s [  0.00s,  0.00s,  0.00s ]
0.00s [  0.00s,  0.00s,  0.00s ]

结果如下 会一直输出,断开一下连接得到如下结果,最后同步

0.00s [  0.34s,  0.07s,  0.02s ]
0.00s [  0.00s,  0.07s,  0.02s ]

3)只输出瞬时的差值

#pt-heartbeat -D test --test -u repl -p 123456 -h 192.168.0.115
0.00 ###只代表瞬时延迟

9. mysql主从互换

(1) 停止从库复制,从新设置状态

mysql->stop slave;
mysql->reset master;
mysql->reset slave;

(2) 如配置文件相同的情况下,配置文件无需更改。否者主备的配置文件交换。

(3) 原先的主变为备

mysql->reset master;
mysql->reset slave;

从新配置change master to参数

(4) 服务器重启

如原先的主中有bin日志在从上为实现同步,可以认为读取bin日志的内容,在新的主中执行

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
29天前
|
安全 关系型数据库 MySQL
mysql8安装
本文介绍了在 CentOS 7 上安装 MySQL 5.7 的详细步骤,包括下载、环境准备、系统配置、安装过程及启动方法。首先通过wget下载MySQL压缩包并解压至指定目录,接着进行主机名修改、依赖安装、用户与用户组创建、ulimit配置等环境准备工作。随后,对操作系统环境进行调整,如文件句柄和进程数的设置、内核参数优化、SELinux和防火墙的关闭等。最后,完成MySQL的安装配置,创建数据和日志目录,初始化MySQL,并设置启动脚本和环境变量,确保MySQL能够正常运行。
70 4
|
30天前
|
安全 关系型数据库 MySQL
Linux下安装mysql8.0(以tar.xz包安装--编译安装)
通过上述步骤,您完成了从下载、编译、安装到配置MySQL 8.0的全过程。此过程虽然较为复杂,但提供了对MySQL安装环境的完全控制,有助于满足特定的部署需求。在实际操作中,根据具体的系统环境,可能还需调整部分步骤或解决未预见的依赖问题。始终参考官方文档和社区资源,保持安装过程与最新版本的兼容性。
537 67
|
1天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
11 4
|
23天前
|
关系型数据库 MySQL Linux
Docker安装Mysql5.7,解决无法访问DockerHub问题
当 Docker Hub 无法访问时,可以通过配置国内镜像加速来解决应用安装失败和镜像拉取超时的问题。本文介绍了如何在 CentOS 上一键配置国内镜像加速,并成功拉取 MySQL 5.7 镜像。
200 2
Docker安装Mysql5.7,解决无法访问DockerHub问题
|
7天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。通过具体案例,读者可以了解如何准备环境、下载源码、编译安装、配置服务及登录 MySQL。编译源码安装虽然复杂,但提供了更高的定制性和灵活性,适用于需要高度定制的场景。
24 3
|
7天前
|
关系型数据库 MySQL Docker
docker环境下mysql镜像启动后权限更改问题的解决
在Docker环境下运行MySQL容器时,权限问题是一个常见的困扰。通过正确设置目录和文件的权限,可以确保MySQL容器顺利启动并正常运行。本文提供了多种解决方案,包括在主机上设置正确的权限、使用Dockerfile和Docker Compose进行配置、在容器启动后手动更改权限以及使用 `init`脚本自动更改权限。根据实际情况选择合适的方法,可以有效解决MySQL容器启动后的权限问题。希望本文对您在Docker环境下运行MySQL容器有所帮助。
17 1
|
8天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。
本文介绍了在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。内容涵盖准备工作、下载源码、编译安装、配置服务、登录设置及实践心得,帮助读者根据需求选择最适合的安装方法。
16 2
|
10天前
|
存储 SQL 关系型数据库
2024Mysql And Redis基础与进阶操作系列(1)作者——LJS[含MySQL的下载、安装、配置详解步骤及报错对应解决方法]
Mysql And Redis基础与进阶操作系列(1)之[MySQL的下载、安装、配置详解步骤及报错对应解决方法]
|
10天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
49 2
|
23天前
|
SQL Oracle 关系型数据库
安装最新 MySQL 8.0 数据库(教学用)
安装最新 MySQL 8.0 数据库(教学用)
96 4