备份
1.将mysql的数据文件做备份
cp -r /var/lib/mysql/ /tmp/mysql_data
2.彻底卸载mysql
3.安装mysql,并启动mysql服务
4.进入备份的目录,可以看到各个数据库文件夹,文件夹中有.frm(储存表结构)和.ibd(储存表数据)
cd /tmp/mysql_data
恢复表结构
5.利用mysqlfrm恢复frm表结构(安装mysqlfrm需要python2环境)
wget https://cdn.mysql.com/archives/mysql-utilities/mysql-utilities-1.6.5.tar.gz
tar -xvzf mysql-utilities-1.6.5.tar.gz
cd mysql-utilities-1.6.5
python ./setup.py build
python ./setup.py install
6.通过备份的frm获得表结构
mysqlfrm --server=user:password@127.0.0.1:3306 /tmp/mysql_data/demo_database/demo_table.frm --port=3434 --user=mysql --diagnostic
7.根据得到的结构创建表
恢复表数据
8.进入mysql,将已有.ibd失效
mysql -u root -p
use demo_database
alter table demo_table discard tablespace
9.将备份的.ibd拷贝到mysql数据路径下,然后进入mysql将其生效
cp /tmp/mysql_data/demo_database/demo_table.ibd /var/lib/mysql/demo_database/
#必须更改权限,否则mysql无操作权限
chown mysql:mysql /var/lib/mysql/demo_database/demo_table.ibd
mysql -u root -p
use demo_database
alter table demo_table import tablespace;
至此,备份和恢复结束