Home | 简体中文 | 繁体中文 | 杂文 | Github | 知乎专栏 | 51CTO学院 | CSDN程序员研修院 | OSChina 博客 | 腾讯云社区 | 阿里云栖社区 | Facebook | Linkedin | Youtube | 打赏(Donations) | About
知乎专栏多维度架构

3.2. RDS MySQL

3.2.1. RDS MySQL => 本地 MySQL 数据库

从 RDS 上下载的物理备份

		
[root@master backup]# ls
hins19648946_data_20220913035432_qp.xb		
		
		

3.2.1.1. MySQL 5.7

安装依赖库

			
[root@master backup]# dnf install -y qpress libaio		
			
			

安装恢复软件

			
[root@master backup]# wget https://downloads.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.24/binary/tarball/percona-xtrabackup-2.4.24-Linux-x86_64.glibc2.12.tar.gz
[root@master backup]# tar zxvf percona-xtrabackup-2.4.24-Linux-x86_64.glibc2.12.tar.gz
[root@master backup]# mv percona-xtrabackup-2.4.24-Linux-x86_64.glibc2.12 /srv/
[root@master backup]# rm -f /srv/percona-xtrabackup
[root@master backup]# ln -s /srv/percona-xtrabackup-2.4.24-Linux-x86_64.glibc2.12 /srv/percona-xtrabackup			
			
			
			
cat >> /etc/profile.d/percona.sh <<EOF
# Percona Xtrabackup
export PATH=$PATH:/srv/percona-xtrabackup/bin
EOF

source /etc/profile.d/percona.sh
			
			

恢复数据

			
[root@master backup]# xbstream -v -x  -C ./rds
[root@master backup]# xbstream -x -C rds/ < hins19648946_data_20220913035432_qp.xb	
			
			

解压

			
innobackupex --decompress --remove-original rds/
			
			

恢复日志

			
innobackupex --defaults-file=/etc/my.cnf --apply-log rds/
			
			

启动 mysql 增加 --skip-grant-tables 选项,然后运行 mysql_upgrade

			
mysql_upgrade			
			
			

去掉 --skip-grant-tables 选项,重启 MySQL,恢复完成。

3.2.1.2. MySQL 8.0

安装 percona-xtrabackup 恢复软件

			
[root@master backup]# tar zxvf percona-xtrabackup-8.0.29-22-Linux-x86_64.glibc2.17.tar.gz
[root@master backup]# mv percona-xtrabackup-8.0.29-22-Linux-x86_64.glibc2.17 /srv/
[root@master backup]# rm -f /srv/percona-xtrabackup
[root@master backup]# ln -s /srv/percona-xtrabackup-8.0.29-22-Linux-x86_64.glibc2.17/ /srv/percona-xtrabackup
			
			
			
cat >> /etc/profile.d/percona.sh <<EOF
# Percona Xtrabackup
export PATH=$PATH:/srv/percona-xtrabackup/bin
EOF

source /etc/profile.d/percona.sh
			
			

3.2.2. 换表升级

当前表改名,然后再基于旧表创建新的空表

		
ALTER TABLE old_table_name  RENAME TO new_table_name; 
CREATE TABLE current_table_name LIKE new_table_name;		
		
		

		
ALTER TABLE old_table_name  RENAME TO new_table_name; 		
CREATE TABLE old_table_name SELECT * FROM new_table_name WHERE ...;
		
		

3.2.3. 导出 CSV 文件

RDS 目前没有找到导出 csv 的方案,客服让使用 DMS 中的数据导出功能

		
mysql> show grants for 'root'@'%';
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Grants for root@%                                                                                                                                                                                                                                                                                                                                                                 |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD '*F5200743F6F42815CB2DC833C98D6E7730F8E2E2' WITH GRANT OPTION |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)		
		
		

查询未找到 FILE 权限,官网权限列表中也没有 https://help.aliyun.com/document_detail/146395.html

		
mysql> GRANT FILE ON *.* to neo@'%' identified by 'chen';
Query OK, 0 rows affected (0.026 sec)
		
		
		

secure_file_priv 只要不是 null 即可,阿里云配置是 secure_file_priv = ''。

		
mysql> SHOW VARIABLES LIKE "secure_file_priv";
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| secure_file_priv |       |
+------------------+-------+
1 row in set (0.01 sec)