• 沒有找到結果。

您可以下载备份文件,并通过备份文件进行本地存储备份或者恢复数据。

前提条件

通过下载备份文件恢复数据到自建MySQL,请确保恢复目标MySQL版本不低于备份源 RDS for MySQL版本。

恢复数据过程中,您可通过命令查看任务进程:

ps -ef | grep mysql

操作步骤

步骤1 下载qpress程序,并上传到ECS进行安装。

在网站下载文件“qpress-11-linux.x64.tar”, 并上传到ECS上。

tar -xvf qpress-11-linux-x64.tar mv qpress /usr/bin/

步骤2 下载XtraBackup软件,并上传到ECS进行安装。

须知

● 对于MySQL 5.6和5.7,请下载XtraBackup 2.4.9及其以上版本。

● 对于MySQL 8.0,请下载XtraBackup 8.0及其以上版本。

在网站下载XtraBackup,并上传到ECS上,下面以下载“percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm”为例。

rpm -ivh percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm --nodeps --force 步骤3 在ECS上解压下载好的全备文件。

1. 创建一个临时目录backupdir。

mkdir backupdir 2. 解压文件。

xbstream -x -p 4 < ./全备文件.qp -C ./backupdir/

5.6和5.7版本执行:innobackupex --parallel 4 --decompress ./backupdir – 8.0版本执行:xtrabackup --parallel 4 --decompress --target-dir=./

backupdir

find ./backupdir/ -name '*.qp' | xargs rm -f

说明

如果是MySQL5.7, 需执行如下命令停止MySQL数据库服务:

/bin/systemctl stop mysqld.service 2. 备份原来的数据库目录。

mv /var/lib/mysql/data /var/lib/mysql/data_bak 3. 创建新的数据库目录并修改目录权限。

mkdir /var/lib/mysql/data

chown mysql:mysql /var/lib/mysql/data 步骤6 拷贝全备文件,并修改目录权限。

5.6和5.7版本执行:innobackupex --defaults-file=/etc/my.cnf --copy-back ./

backupdir

8.0版本执行:xtrabackup --defaults-file=/etc/my.cnf --copy-back --target-dir=./backupdir

chown -R mysql:mysql /var/lib/mysql/data 步骤7 启动数据库。

service mysql start 说明

如果是MySQL5.7, 需执行如下命令启动数据库:

/bin/systemctl start mysqld.service 步骤8 登录数据库,查看数据恢复结果。

mysql -u -root show databases

2-54 查看数据恢复结果

----结束

2-5 参数说明

参数名称 允许值 描述

innodb_flush_log_at

_trx_commit 0, 1, 2 当重新安排并批量处理与提交相关的I/O操作 时,可以控制磁盘的写入策略,严格遵守 ACID合规性和高性能之间的平衡,该参数默 认值为“1”,详情见参数解析。

sync_binlog 0~

4,294,967,2 95

同步binlog(MySQL持久化到硬盘,或依赖 于操作系统)。

参数解析

innodb_flush_log_at_trx_commit:

– 0:日志缓存区将每隔一秒写到日志文件中,并且将日志文件的数据刷新到磁 盘上。该模式下在事务提交时不会主动触发写入磁盘的操作。

– 1:每次事务提交时MySQL都会把日志缓存区的数据写入日志文件中,并且 刷新到磁盘中,该模式为系统默认。

– 2:每次事务提交时MySQL都会把日志缓存区的数据写入日志文件中,但是 并不会同时刷新到磁盘上。该模式下,MySQL会每秒执行一次刷新磁盘操 作。

说明

● 当设置为0,该模式速度最快,但不太安全,mysqld进程的崩溃会导致上一秒钟所有事 务数据的丢失;

● 当设置为1,该模式是最安全的,但也是最慢的一种方式。在mysqld服务崩溃或者服务 器主机宕机的情况下,日志缓存区只有可能丢失最多一个语句或者一个事务;

● 当设置为2,该模式速度较快,较取值为0情况下更安全,只有在操作系统崩溃或者系 统断电的情况下,上一秒钟所有事务数据才可能丢失;

sync_binlog=1 or N

默认情况下,并不是每次写入时都将binlog日志文件与磁盘同步。因此如果操作

innodb_flush_log_at_

trx_commit sync_binlog 描述

1 0 适合数据安全性要求高,磁盘写入能力

支持业务不足,允许备库落后或无复 制。

2 0/

N(0<N<100) 适合数据安全性要求低,允许丢失一点 事务日志,允许复制延迟。

0 0 磁盘写能力有限,无复制或允许复制延

迟较长。

说明

● “innodb_flush_log_at_trx_commit”和“sync_binlog”两个参数设置为1的时候,安全性 最高,写入性能最差。在mysqld服务崩溃或者服务器主机宕机的情况下,日志缓存区只有可 能丢失最多一个语句或者一个事务。但是会导致频繁的磁盘写入操作,因此该模式也是最慢 的一种方式。

● 当sync_binlog=N(N>1 ),innodb_flush_log_at_trx_commit=2时,在当前模式下MySQL的 写操作才能达到最高性能。

1. 查看慢SQL日志来确定是否存在运行缓慢的SQL查询以及各个查询的性能特征(如 果有),从而定位查询运行缓慢的原因。

查询MySQL日志,请参见慢查询日志。

2. 查看华为云关系型数据库实例的CPU使用率指标,协助定位问题。

请参见通过Cloud Eye监控。

3. 创建只读实例专门负责查询。减轻主实例负载,分担数据库压力。

4. 多表关联查询时,关联字段要加上索引。

5. 尽量避免用select*语句进行全表扫描,可以指定字段或者添加where条件。

步骤2 执行以下命令,查看当前执行操作,定位效率低的查询。

show full processlist

查看Time和State列,如下图,长事务的ID为4038566。

步骤3 得到需要优化的查询后,您可以使用华为云数据管理服务(Data Admin Service,简 称DAS),通过SQL诊断查询,您可获知资源消耗大、执行耗时长、执行次数频繁的 SQL语句。可根据诊断建议进行优化,保持数据库性能的稳定性。

1. 登录到数据管理服务控制台。

2. 在顶部菜单栏选择“SQL操作 > SQL查询 > SQL诊断”,进入SQL诊断页面。

2-55 SQL 诊断-1

3. 在SQL诊断页面,单击“新增SQL性能诊断”,新增SQL诊断任务。在新增SQL性 能诊断弹出框中,您根据实际需要选择输入SQL语句或者上传SQL文件,然后单击

“确定”,完成创建SQL诊断任务。

2-56 SQL 诊断-2

2-57 SQL 诊断-3

4. 在SQL诊断列表页面,您可选择“数据库”、“日期范围”单击“搜索”,进行 筛选诊断报告。在诊断列表中,您可在“操作”栏查看诊断详情。

2-58 SQL 诊断任务查询

在SQL诊断详情页面,您可了解本次诊断任务的基本信息、诊断状态预览、诊断 列表,并查看SQL列表中SQL诊断详情内容,获取语句优化建议等信息。

2-59 SQL 诊断详情

2-60 诊断详情

– SQL诊断历史是唯一存储在DAS服务器上的数据,如果执行删除操作后,也将彻底从服 务器上删除。

----结束

2.10 RDS for MySQL 元数据锁 MDL 导致无法操作数据库的 解决方法

MetaData Lock即元数据锁,MetaData Lock主要为了保证元数据的一致性,用于处 理不同线程操作同一数据对象的同步与互斥问题。MySQL 5.5版本开始,引入了MDL 锁,但是因为MDL锁,会导致表级别的锁,无论是读或者写操作,都无法进行,导致 SQL的阻塞。本章介绍通过华为云数据管理服务(Data Admin Service,简称DAS)解 决该问题。

操作步骤

步骤1 登录管理控制台。

步骤5 正确输入数据库用户名和密码,单击“登录”,即可进入您的数据库并进行管理。

步骤6 在顶部菜单栏选择“SQL操作”>“SQL查询”,打开一个SQL窗口。

步骤7 在SQL窗口执行如下SQL查看数据库所有线程状态。

show full processlist

2-61 执行结果

步骤8 查看“State”列是否出现大量“Waiting for table metadata lock”,“Waiting for table metadata lock”即表示出现阻塞,在对应的“Info”列可以查看到对应表的操 作,找到正在对该表进行操作的会话,记录“Id”。

步骤9 在SQL窗口执行如下命令解锁MDL锁。

kill Id

2-62 执行结果

----结束

3 PostgreSQL

3.1 pgAdmin 基本操作使用指南

3.1.1 连接云数据库 PostgreSQL

pgAdmin是一款设计、维护和管理PostgreSQL数据库的客户端管理软件,它允许您连 接到特定的数据库,创建表和运行各种从简单到复杂的SQL语句。它可支持

Windows、Linux、Mac OS X等不同的操作系统。该软件最新版本架构是基于浏览器 的BS架构。本文介绍的pgAdmin基于版本为pgAdmin4-4.17。

本文主要介绍利用pgAdmin连接华为云数据库PostgreSQL以及创建数据库和表基本操 作。

更多功能请参考pgAdmin官方文档。

操作步骤

步骤1 获取pgAdmin的安装包。

请访问pgAdmin官方网站,以pgAdmin4-4.17为例,下载Windows平台的pgAdmin安 装包。

步骤2 双击安装包,按照向导完成安装。

步骤3 安装完成后,启动pgAdmin客户端。

步骤4 请参见通过pgAdmin连接实例连接华为云数据。

前提条件

您已成功连接云数据库 PostgreSQL。

操作步骤

步骤1 在左侧结构树导航栏中,选择数据库实例节点,单击鼠标右键,在菜单中选择

“Create > Database”。

步骤2 在弹出框的“General”页签,输入“Database”,单击“Save”。

3-1 创建数据库

前提条件

● 您已成功连接云数据库 PostgreSQL。

● 您需要在当前用户创建的库和schema下创建表。

操作步骤

步骤1 在左侧结构树导航栏中,选择目标表,单击鼠标右键,在菜单中选择“Create >

Table”。

步骤2 在弹出框的“General”页签,填写表的基本信息,单击“Save”。

3-2 基本信息

步骤3 单击“Columns”页签,在“Columns”页签添加表列,单击“Save”。

----结束

3.1.4 使用 Query Tool 执行 SQL

操作场景

本章节将介绍如何使用Query Tool执行SQL命令。

前提条件

您已成功连接云数据库 PostgreSQL。

插入数据

步骤1 在顶部导航栏选择“Tools > Query Tool”,进入SQL命令执行界面,即可执行用户输 入的SQL语句。

步骤2 在SQL命令执行界面,输入INSERT命令后,单击“执行”即可在对应表中插入数据。

查询数据

步骤1 在顶部导航栏选择“Tools > Query Tool”,进入SQL命令执行界面,即可执行用户输 入的SQL语句。

步骤2 在SQL命令执行界面,输入SELECT命令后,单击“执行”即可查询对应表中的数据。

----结束

3.1.5 数据库监控

操作场景

本章节将介绍数据库监控。

前提条件

您已成功连接云数据库 PostgreSQL。

pgAdmin 监控

----结束

RDS 监控

云服务平台提供的云监控,可以对关系型数据库的运行状态进行日常监控。您可以通 过管理控制台,直观地查看关系型数据库的各项监控指标。详见查看云数据库 PostgreSQL监控指标。

3.1.6 备份恢复

操作场景

本章节将介绍备份恢复。

前提条件

您已成功连接云数据库 PostgreSQL。

pgAdmin 备份恢复

备份数据库

步骤1 在左侧结构树导航栏中,选择需要备份的数据库,单击右键选择“Backup”。

步骤2 在弹出框的“General”页签,填写基本信息,选择要备份的路径、备份的格式,并输 入备份文件的名称,单击“Backup”等待备份成功即可。

----结束 恢复数据库

步骤1 在左侧结构树导航栏中,选择需要恢复的数据库,单击右键选择“Restore”。

步骤2 在弹出框中选择备份好的文件,单击“Restore”进行恢复。

----结束

RDS 备份恢复

关系型数据库服务支持数据库实例的备份和恢复,以保证数据可靠性。详见云数据库 PostgreSQL的备份与恢复。

3.2 PoWA 插件使用

3.2.1 插件介绍

PoWA是一套开源的用于对PostgreSQL数据库进行性能监控的系统。它由PoWA-archivist、PoWA-collector、PoWA-web三个部件组成工作系统,并通过安装于 PostgreSQL数据库中的其他插件获取性能数据。重要组成如下所示:

● PoWA-archivist:作为PostgreSQL的一个插件,用于收集其他插件获取到的性能 数据。

● PoWA-collector:是通过部署于远程服务器上的专用于存储库收集目标 PostgreSQL数据库性能指标的守护进程。

● PoWA-collector:是通过部署于远程服务器上的专用于存储库收集目标 PostgreSQL数据库性能指标的守护进程。