RHEL系统安装MySQL主备环境

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

环境准备

  • 操作系统: 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日志的内容,在新的主中执行

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
11天前
|
关系型数据库 MySQL 数据库
【MySQL基础篇】MySQL概述、Windows下载MySQL8.0超详细图文安装教程
在这一章节,主要介绍两个部分,数据库相关概念及MySQL数据库的介绍、下载、安装、启动及连接。接着,详细描述了MySQL 8.0的版本选择与下载,推荐使用社区版(免费)。安装过程包括自定义安装路径、配置环境变量、启动和停止服务、以及客户端连接测试。此外,还提供了在同一台电脑上安装多个MySQL版本的方法及卸载步骤。最后,解释了关系型数据库(RDBMS)的特点,即基于二维表存储数据,使用SQL语言进行操作,格式统一且便于维护。通过具体的结构图展示了MySQL的数据模型,说明了数据库服务器、数据库、表和记录之间的层次关系。
【MySQL基础篇】MySQL概述、Windows下载MySQL8.0超详细图文安装教程
|
5天前
|
NoSQL 关系型数据库 Redis
《docker高级篇(大厂进阶):1.Docker复杂安装详说》包括:安装mysql主从复制、安装redis集群
《docker高级篇(大厂进阶):1.Docker复杂安装详说》包括:安装mysql主从复制、安装redis集群
43 14
|
2天前
|
关系型数据库 MySQL 应用服务中间件
《docker基础篇:8.Docker常规安装简介》包括:docker常规安装总体步骤、安装tomcat、安装mysql、安装redis
《docker基础篇:8.Docker常规安装简介》包括:docker常规安装总体步骤、安装tomcat、安装mysql、安装redis
26 7
|
17天前
|
关系型数据库 MySQL 数据库
docker高级篇(大厂进阶):安装mysql主从复制
docker高级篇(大厂进阶):安装mysql主从复制
93 24
|
7天前
|
安全 关系型数据库 MySQL
Windows Server 安装 MySQL 8.0 详细指南
安装 MySQL 需要谨慎,特别注意安全配置和权限管理。根据实际业务需求调整配置,确保数据库的性能和安全。
48 9
|
12天前
|
NoSQL 关系型数据库 MySQL
Linux安装jdk、mysql、redis
Linux安装jdk、mysql、redis
124 7
|
2月前
|
关系型数据库 MySQL Linux
Linux环境下MySQL数据库自动定时备份实践
数据库备份是确保数据安全的重要措施。在Linux环境下,实现MySQL数据库的自动定时备份可以通过多种方式完成。本文将介绍如何使用`cron`定时任务和`mysqldump`工具来实现MySQL数据库的每日自动备份。
138 3
|
2月前
|
监控 关系型数据库 MySQL
Linux环境下MySQL数据库自动定时备份策略
在Linux环境下,MySQL数据库的自动定时备份是确保数据安全和可靠性的重要措施。通过设置定时任务,我们可以每天自动执行数据库备份,从而减少人为错误和提高数据恢复的效率。本文将详细介绍如何在Linux下实现MySQL数据库的自动定时备份。
59 3
|
2月前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
75 4
|
3月前
|
关系型数据库 MySQL Linux
Docker安装Mysql5.7,解决无法访问DockerHub问题
当 Docker Hub 无法访问时,可以通过配置国内镜像加速来解决应用安装失败和镜像拉取超时的问题。本文介绍了如何在 CentOS 上一键配置国内镜像加速,并成功拉取 MySQL 5.7 镜像。
709 2
Docker安装Mysql5.7,解决无法访问DockerHub问题