您可以下载备份文件,并通过备份文件进行本地存储备份或者恢复数据。
前提条件
通过下载备份文件恢复数据到自建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数据库性能指标的守护进程。