MySQL数据库表数据迁移--ibd的使用

需求:

        现在线上mysql5.7 +生产库有一张10多个G的表数据,需要迁移到其他库中,现使用ibd的方式 进行数据的迁移;

步骤:

  • demo
#1. 创建相同结构的表,并添加几条测试数据

	mysql> create table test3 like test;
	mysql> select * from test3;
	+------+------+----+---------------------+--------+------------+
	| age  | name | id | create_time         | is_man | salary_amt |
	+------+------+----+---------------------+--------+------------+
	| 11   | 11   |  1 | 2021-01-28 11:15:11 |      1 |      11.00 |
	| 22   | 22   |  2 | 2021-01-28 11:15:11 |      1 |      11.00 |
	+------+------+----+---------------------+--------+------------+


#2. 查看当前数据库数据存储位置,备份 test3.idb 

	mysql> select  @@datadir;
		+------------------------+
		| @@datadir              |
		+------------------------+
		| /usr/local/mysql/data/ |
		+------------------------+
	[root@hadoop001 test_db]# pwd
		/usr/local/mysql/data/test_db
	[root@hadoop001 test_db]# ll
		total 220
		-rw-r----- 1 mysqladmin dba    61 Jan 16 18:12 db.opt
		-rw-r----- 1 mysqladmin dba  8734 Jan 28 11:14 test3.frm
		-rw-r----- 1 mysqladmin dba 98304 Jan 28 11:21 test3.ibd
	
#3. 删除表空间 注: show global variables like 'innodb_file_per_table'; 是否 on 状态
	mysql> alter table test3 discard tablespace;
		Query OK, 0 rows affected (0.01 sec)
	# test3.idb 被删除
		[root@hadoop001 test_db]# ll  
		total 124
		-rw-r----- 1 mysqladmin dba    61 Jan 16 18:12 db.opt
		-rw-r----- 1 mysqladmin dba  8734 Jan 28 11:14 test3.frm
		
#4. 恢复表空间 
	#4.1 修改文件权限
		-rw-r----- 1 mysqladmin dba     61 Jan 16 18:12 db.opt
		-rw-r----- 1 mysqladmin dba   8734 Jan 28 11:14 test3.frm
		-rw-r----- 1 root       root 98304 Jan 28 13:47 test3.ibd
		-rw-r----- 1 mysqladmin dba   8734 Jan 26 16:31 test.frm
		-rw-r----- 1 mysqladmin dba  98304 Jan 26 16:32 test.ibd
		[root@hadoop001 test_db]# chown -R mysqladmin:dba test3.ibd 
		[root@hadoop001 test_db]# ll
			total 220
			-rw-r----- 1 mysqladmin dba    61 Jan 16 18:12 db.opt
			-rw-r----- 1 mysqladmin dba  8734 Jan 28 11:14 test3.frm
			-rw-r----- 1 mysqladmin dba 98304 Jan 28 13:47 test3.ibd
			-rw-r----- 1 mysqladmin dba  8734 Jan 26 16:31 test.frm
			-rw-r----- 1 mysqladmin dba 98304 Jan 26 16:32 test.ibd
	#4.2 执行mysql命令,idb与test3表空间绑定
		mysql> alter table test3 import tablespace;
			Query OK, 0 rows affected, 1 warning (0.08 sec)
	
#5. 验证结果
	mysql> select * from test3;
+------+------+----+---------------------+--------+------------+
| age  | name | id | create_time         | is_man | salary_amt |
+------+------+----+---------------------+--------+------------+
| 11   | 11   |  1 | 2021-01-28 11:15:11 |      1 |      11.00 |
| 22   | 22   |  2 | 2021-01-28 11:15:11 |      1 |      11.00 |
+------+------+----+---------------------+--------+------------+
2 rows in set (0.00 sec)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL数据库恢复frm和ibd文件的操作步骤如下: 1. 停止MySQL服务。可以使用以下命令停止MySQL服务: ``` sudo service mysql stop ``` 2. 备份原有的frm和ibd文件。可以将原有的frm和ibd文件备份到其他目录,以免出现数据丢失。 3. 将需要恢复的frm和ibd文件复制到MySQL数据库数据目录下。可以使用以下命令将文件复制到MySQL数据目录下: ``` sudo cp /path/to/frm/file /var/lib/mysql/dbname/ sudo cp /path/to/ibd/file /var/lib/mysql/dbname/ ``` 其中,/path/to/frm/file是需要恢复的frm文件的路径,/path/to/ibd/file是需要恢复的ibd文件的路径,/var/lib/mysql/dbname/是MySQL数据库数据目录,dbname是需要恢复的数据库名称。 4. 修改文件所属用户和用户组。可以使用以下命令修改文件的所属用户和用户组: ``` sudo chown mysql:mysql /var/lib/mysql/dbname/*.frm sudo chown mysql:mysql /var/lib/mysql/dbname/*.ibd ``` 其中,mysql:mysqlMySQL服务的用户和用户组,/var/lib/mysql/dbname/是MySQL数据库数据目录,dbname是需要恢复的数据库名称。 5. 启动MySQL服务。可以使用以下命令启动MySQL服务: ``` sudo service mysql start ``` 6. 使用MySQL命令行客户端连接数据库。可以使用以下命令连接数据库: ``` mysql -u root -p ``` 其中,root是MySQL管理员账户,需要输入管理员密码才能登录。 7. 执行修复命令。可以使用以下命令修复: ``` USE dbname; REPAIR TABLE tablename; ``` 其中,dbname是需要恢复的数据库名称,tablename是需要修复的名称。 以上就是MySQL数据库恢复frm和ibd文件的操作步骤,希望对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值