linux下如何导入导出大MySQL数据库
13 年 ago jony linux下如何导入导出大MySQL数据库已关闭评论
注意:
导出导入大数据库时,要用mysqldump -u root -p abc > abc.sql 语句来操作,不能通过脚本来操作,要不然导入数据库时会出很多错误
一、导出:
用mysqldump命令行
命令格式
mysqldump -u 用户名 -p 数据库名 > 数据库名.sql
范例:
mysqldump -u root -p abc > abc.sql
(导出数据库abc到abc.sql文件)
提示输入密码时,输入该数据库用户名的密码。
三、直接COPY
如果数据库比较大,可以考虑用直接拷贝的方法,但不同版本和操作系统之间可能不兼容,要慎用。
3.1 将原始数据库用tar打包为一个文件
tar -zcvf mydb.tar.gz mydb
3.2 创建空数据库
3.3 解压
在临时目录中解压,如:
cd /tmp
tar -zxvf mydb.tar.gz
3.4 拷贝
将解压后的数据库文件拷贝到相关目录
cd mydb/
cp * /var/lib/mysql/mydb/
对于FreeBSD:
cp * /var/db/mysql/mydb/
3.5 权限设置
将拷贝过去的文件的属主改为mysql:mysql,权限改为660
chown mysql:mysql /var/lib/mysql/mydb/*
chmod 660 /var/lib/mysql/mydb/*
2、只导出表结构
mysqldump -u用户名 -p密码 -d 数据库名 > 数据库名.sql
#/usr/local/mysql/bin/mysqldump -uroot -p -d abc > abc.sql
二、导入数据库
1、首先建空数据库
mysql>create database abc;
2、导入数据库
方法一:
(1)选择数据库
mysql>use abc;
(2)设置数据库编码
mysql>set names utf8;
(3)导入数据(注意sql文件的路径)
mysql>source /home/abc/abc.sql;
注意:有命令行模式,有sql命令
##########################################################
导入完成后,对表进行修复,优化:
mysql -u root -p:
>use dbname;
REPAIR TABLE `table_name` 修复表
OPTIMIZE TABLE `table_name` 优化表
快速修复数据库:
有的时候因为掉电或者其他原因导致数据库损坏,我们可以使用mysql自带的mysqlcheck命令来快速修复所有的数据库或者特定的数据库;例如
检查优化并修复所有的数据库用:
#
下面说下几个参数的含义
-a, –analyze 分析 [Analyze given tables]
-o, –optimize 优化 [Optimize table]
-A, –all-databases 所有的数据库 [Check all the database]
–auto-repair 自动修复 [If a checked table is corrupted, automatically fix it. Repairing will be done after all tables have been checked, if corrupted ones were found]
Enter password:
guestbook.simpgb_avatars OK
guestbook.simpgb_bad_words OK
guestbook.simpgb_banlist OK
guestbook.simpgb_data OK
……
……
……
修复指定的数据库用
# mysqlcheck -A -o -r Database_NAME -p
或者修复所有数据库: