云RDS MySQL迁移至本地MySQL

本地准备工作
1.安装:percona-xtrabackup
上传percona-xtrabackup-2.3.9-Linux-x86_64.tar.gz包到/usr/local
tar -zxvf percona-xtrabackup-2.3.9-Linux-x86_64.tar.gz
mv percona-xtrabackup-2.3.9-Linux-x86_64 percona-xtrabackup

2.创建数据目录
cd /data/
mkdir rds-mysql
chown mysql:mysql rds-mysql
chmod 775 rds-mysql

3.将RDS MySQL备份解压至创建的目录
cd /soft
tar -izxvf hins820_data_20210625103209.tar.gz -C /data/rds-mysql/

解压完8.7G

cd /data/
chown -R mysql:mysql rds-mysql
chmod -R 775 rds-mysql

4.进行恢复

cd /usr/local/percona-xtrabackup/bin

./innobackupex --defaults-file=/data/rds-mysql/backup-my.cnf --apply-log /data/rds-mysql

提示完成后,进行下一步
恢复完11G

[root@mysql rds-mysql]# cd /usr/local/percona-xtrabackup/bin
[root@mysql bin]# ./innobackupex --defaults-file=/data/rds-mysql/backup-my.cnf --apply-log /data/rds-mysql
210629 17:33:06 innobackupex: Starting the apply-log operation

IMPORTANT: Please check that the apply-log run completes successfully.
           At the end of a successful apply-log run innobackupex
           prints "completed OK!".

./innobackupex version 2.3.9 based on MySQL server 5.6.24 Linux (x86_64) (revision id: fde0e3e)
xtrabackup: cd to /data/rds-mysql/
xtrabackup: This target seems to be not prepared yet.
xtrabackup: xtrabackup_logfile detected: size=2097152, start_lsn=(293078720261)
xtrabackup: using the following InnoDB configuration for recovery:
xtrabackup:   innodb_data_home_dir = ./
xtrabackup:   innodb_data_file_path = ibdata1:200M:autoextend
xtrabackup:   innodb_log_group_home_dir = ./
xtrabackup:   innodb_log_files_in_group = 1
xtrabackup:   innodb_log_file_size = 2097152
xtrabackup: using the following InnoDB configuration for recovery:
xtrabackup:   innodb_data_home_dir = ./
xtrabackup:   innodb_data_file_path = ibdata1:200M:autoextend
xtrabackup:   innodb_log_group_home_dir = ./
xtrabackup:   innodb_log_files_in_group = 1
xtrabackup:   innodb_log_file_size = 2097152
xtrabackup: Starting InnoDB instance for recovery.
xtrabackup: Using 104857600 bytes for buffer pool (set by --use-memory parameter)
InnoDB: Using atomics to ref count buffer pool pages
InnoDB: The InnoDB memory heap is disabled
InnoDB: Mutexes and rw_locks use GCC atomic builtins
InnoDB: Memory barrier is not used
InnoDB: Compressed tables use zlib 1.2.3
InnoDB: Using CPU crc32 instructions
InnoDB: Initializing buffer pool, size = 100.0M
InnoDB: Completed initialization of buffer pool
InnoDB: Highest supported file format is Barracuda.
InnoDB: Log scan progressed past the checkpoint lsn 293078720261
InnoDB: Database was not shutdown normally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Restoring possible half-written data pages 
InnoDB: from the doublewrite buffer...
InnoDB: Doing recovery: scanned up to log sequence number 293079851297 (60%)
InnoDB: Starting an apply batch of log records to the database...
InnoDB: Progress in percent: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 
InnoDB: Apply batch completed
InnoDB: 128 rollback segment(s) are active.
InnoDB: Waiting for purge to start
InnoDB: 5.6.24 started; log sequence number 293079851297
xtrabackup: Last MySQL binlog file position 24206254, file name mysql-bin.004613

xtrabackup: starting shutdown with innodb_fast_shutdown = 1
InnoDB: FTS optimize thread exiting.
InnoDB: Starting shutdown...
InnoDB: Shutdown completed; log sequence number 293079851893
xtrabackup: using the following InnoDB configuration for recovery:
xtrabackup:   innodb_data_home_dir = ./
xtrabackup:   innodb_data_file_path = ibdata1:200M:autoextend
xtrabackup:   innodb_log_group_home_dir = ./
xtrabackup:   innodb_log_files_in_group = 2
xtrabackup:   innodb_log_file_size = 1048576000
InnoDB: Using atomics to ref count buffer pool pages
InnoDB: The InnoDB memory heap is disabled
InnoDB: Mutexes and rw_locks use GCC atomic builtins
InnoDB: Memory barrier is not used
InnoDB: Compressed tables use zlib 1.2.3
InnoDB: Using CPU crc32 instructions
InnoDB: Initializing buffer pool, size = 100.0M
InnoDB: Completed initialization of buffer pool
InnoDB: Setting log file ./ib_logfile101 size to 1000 MB
InnoDB: Progress in MB: 100 200 300 400 500 600 700 800 900 1000
InnoDB: Setting log file ./ib_logfile1 size to 1000 MB
InnoDB: Progress in MB: 100 200 300 400 500 600 700 800 900 1000
InnoDB: Renaming log file ./ib_logfile101 to ./ib_logfile0
InnoDB: New log files created, LSN=293079851893
InnoDB: Highest supported file format is Barracuda.
InnoDB: 128 rollback segment(s) are active.
InnoDB: Waiting for purge to start
InnoDB: 5.6.24 started; log sequence number 293079852044
xtrabackup: starting shutdown with innodb_fast_shutdown = 1
InnoDB: FTS optimize thread exiting.
InnoDB: Starting shutdown...
InnoDB: Shutdown completed; log sequence number 293079855264
210629 17:33:15 completed OK!
[root@mysql bin]# cd /data
[root@mysql data]# ll
total 4
drwxrwxr-x. 5 mysql mysql  167 Jun 29 14:59 mysql
drwxrwxr-x. 8 mysql mysql 4096 Jun 29 17:33 rds-mysql
[root@mysql data]# cd rds-mysql/
[root@mysql rds-mysql]# ll
total 3956016
-rwxrwxr-x. 1 mysql mysql        450 Jun 25 10:38 backup-my.cnf
-rwxrwxrwx. 1 mysql mysql 1887436800 Jun 29 17:33 ibdata1
-rw-r--r--. 1 root  root  1048576000 Jun 29 17:33 ib_logfile0
-rw-r--r--. 1 root  root  1048576000 Jun 29 17:33 ib_logfile1
-rwxrwxr-x. 1 mysql mysql   62874130 Jun 25 10:38 log000000000005.tokulog29
drwxrwxr-x. 2 mysql mysql       4096 Jun 29 17:31 mysql
drwxrwxr-x. 2 mysql mysql       4096 Jun 29 17:31 performance_schema
drwxrwxr-x. 2 mysql mysql         20 Jun 29 17:31 test
-rwxrwxr-x. 1 mysql mysql      16384 Feb 11  2018 tokudb.directory
-rwxrwxr-x. 1 mysql mysql      32768 May 28  2018 tokudb.environment
-rwxrwxr-x. 1 mysql mysql      16384 May 28  2018 tokudb.rollback
-rwxrwxr-x. 1 mysql mysql        123 Jun 25 10:38 xtrabackup_binlog_info
-rw-r--r--. 1 root  root          26 Jun 29 17:33 xtrabackup_binlog_pos_innodb
-rwxrwxr-x. 1 mysql mysql        123 Jun 29 17:33 xtrabackup_checkpoints
-rwxrwxr-x. 1 mysql mysql        826 Jun 25 10:38 xtrabackup_info
-rwxrwxr-x. 1 mysql mysql    2097152 Jun 29 17:33 xtrabackup_logfile
-rwxrwxr-x. 1 mysql mysql         80 Jun 25 10:38 xtrabackup_slave_filename_info
-rwxrwxr-x. 1 mysql mysql        164 Jun 25 10:38 xtrabackup_slave_info
drwxrwxr-x. 2 mysql mysql      36864 Jun 29 17:33 yhd_kf
drwxrwxr-x. 2 mysql mysql       4096 Jun 29 17:31 yhd_qzk
drwxrwxr-x. 2 mysql mysql      90112 Jun 29 17:31 yhd_test
[root@mysql rds-mysql]# 

5.恢复完成后修改权限

cd /data
chown -R mysql:mysql rds-mysql
chmod -R 775 rds-mysql

chmod 777 /data/rds-mysql/ib*

6.更新参数文件及参数
cd /data/rds-mysql

cp backup-my.cnf /etc/
cd /etc/
mv my.cnf my.cnf.bak
mv backup-my.cnf my.cnf

vi my.cnf
注释掉其他,[mysqld]下加入下面两个参数:
[mysqld]
lower_case_table_names=1
skip-grant-tables

vi /etc/init.d/mysqld
修改data_dir路径

7.启动mysqld服务
[root@mysql etc]# service mysqld restart
 ERROR! MySQL server PID file could not be found!
Starting MySQL.Logging to '/data/rds-mysql/mysql.err'.
. SUCCESS! 
[root@mysql etc]# service mysqld status
 SUCCESS! MySQL running (23168)
[root@mysql etc]# 

8.迁移完修改root密码
免密码登陆:

mysql -uroot -p


use mysql;
update mysql.user set password=PASSWORD('root') where User='root';
flush privileges;
exit

9.注释掉skip-grant-tables并重启数据库服务

[root@mysql rds-mysql]# vi /etc/my.cnf
# This MySQL options file was generated by innobackupex.

# The MySQL server
[mysqld]

lower_case_table_names=1
#skip-grant-tables
~

service mysqld restart

10.连接测试
mysql -h 127.0.0.1 -uroot -p

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
 

### 将AWS RDS MySQL 数据迁移本地数据库 为了将AWS RDS MySQL的数据迁移本地环境,可以采用`mysqldump`命令来完成这一过程。以下是具体的实现方法以及注意事项。 #### 使用 `mysqldump` 命令导出数据 可以通过`mysqldump`工具从远程的AWS RDS MySQL实例中提取数据并保存到本地文件中。以下是一个典型的命令示例: ```bash mysqldump --column-statistics=0 -u root -p -h <RDS_ENDPOINT> <DATABASE_NAME> > /path/to/local/dump.sql ``` 其中: - `<RDS_ENDPOINT>` 是指AWS RDS MySQL实例的端点地址[^4]。 - `<DATABASE_NAME>` 是需要导出的具体数据库名称。 - `/path/to/local/dump.sql` 表示导出后的SQL文件存储路径。 执行上述命令时,系统会提示输入密码,这是用于访问RDS MySQL实例的身份验证凭证。 #### 导入数据到本地MySQL服务器 一旦成功生成了`.sql`文件,就可以将其导入到本地MySQL环境中。具体步骤如下: 1. **启动本地MySQL服务** 确保本地已经安装并启用了MySQL服务。 2. **创建目标数据库** 登录到本地MySQL客户端,并创建一个新的数据库以接收来自RDS的数据: ```sql CREATE DATABASE IF NOT EXISTS local_db; ``` 3. **加载备份文件** 使用以下命令将之前导出的SQL脚本应用到新创建的目标数据库中: ```bash mysql -u <local_user> -p local_db < /path/to/local/dump.sql ``` 这里需要注意的是,如果存在视图、函数或者触发器等复杂对象,则可能需要额外处理这些元数据结构[^2]。通常建议先单独导出DDL语句并通过手动方式重新构建它们。 #### 性能优化与不停机迁移考虑 对于大规模生产级数据库而言,在线迁移而无需停机显得尤为重要。利用Amazon DMS(Database Migration Service),可以在不中断业务的前提下完成整个流程[^3]。然而当仅需简单的一次性转移而非持续复制时,直接运用`mysqldump`配合适当选项即可满足需求。 另外值得注意的是,在某些特定场景下比如跨服务商之间实施大型项目转换期间,除了基本功能外还需要关注兼容性和潜在风险评估等问题[^1]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值