mysql备份与导入

乱码问题:
1:建库及建表的语句导出,批量修改为utf8
2:导出之前所有的数据(只导数据,不导结构)
3:修改mysql服务端和客户端编码为utf8
4:删除原有的库表及数据
5:导入新的建库及建表语句
6:导入之前的数据

1):导出表结构
mysqldump –uroot -p --default-character-set=latin1 -d book2> booktable.sql
-d 只导数据,不导结构
2):编辑booktable.sql 将latin1修改成utf8
vim booktable.sql 修改所有latin1为utf8
3):确保数据库不再更新,导出所有数据
mysqldump -uroot –p --quick --no-create-info --extended-insert --default-character-set=latin1 book2>bookdata.sql

–quick:用于转储大的表,强制mysqldump从服务器一次一行的检索数据而不是检索所有行,并输出当前cache到内存中
–no-create-info:不要创建create table语句
–extended-insert:使用包括几个values列表的多行insert语法,这样文件更小,IO也小,导入数据时会非常快
–default-character-set=latin1:按照原有字符集导出数据,这样导出的文件中,所有中文都是可见的,不会保存成乱码

4):打开bookdata.sql 将SET NAME latin1 修改成SET NAME utf8
vim bookdata.sql
/*!40101 SET NAMES utf8 */;
5):重新建库
mysql> create database book2 default charset utf8;
6):建立表,导入我们之前导出的表的数据库
mysql –uroot –p123456 book 7):导入数据
mysql -uroot -p123456 book2

mysql修复工具:mysqlcheck
/usr/local/mysql/bin/mysqlcheck #源码编译安装位置
rpm -qf which mysqlcheck yum安装查看

mysqlcheck –-help 查看帮助
-c, --check (检查表);
-r, --repair(修复表);
-a, --analyze (分析表);
-o, --tmpimize(优化表); //其中,默认选项是-c(检查表)
-u, 使用mysql中哪个用户进行操作

MySQL备份恢复
Hot backup(热备) Cold Backup(冷备)Warm Backup(温备)
按照备份后文件内容:
逻辑备份 -->
指备份后的文件内容是可读的,通常为文本文件,内容一般是SQL语句,或者是表内的实际数据,如mysqldump和SELECT * INTO OUTFILE的方法,一般适用于数据库的升级和迁移,恢复时间较长
裸文件备份–>
拷贝数据库的物理文件,数据库既可以处于运行状态(mysqlhotcopy 、ibbackup、xtrabackup这类工具),也可以处于停止状态,恢复时间较短。
按照备份数据库的内容来分,又可以分为:
完全备份:对数据库完整的备份
增量备份:在上一次完全备份基础上,对更新的数据进行备份(xtrabackup)
日志备份:二进制日志备份,主从复制

逻辑备份工具mysqldump
语法: mysqldump [TMPIONS] database [tables] >导出的文件名.sql
导出所有数据库
mysqldump -uroot -p123456 -A >all.sql
mysqldump -uroot -p123456 --all-databases >all2.sql
参数-A代表所有,等同于—all-databases
导出某个数据库
mysqldump -u 用户名 -p 数据库名 > 导出的文件名.sql # 注意是-p空格后是数据库名,不是密码。
mysqldump -uroot -p123456 book >book.sql
vim book.sql
导出单张表
mysqldump -uroot -p123456 book books >books.sql #导出book库books表
导出库的表结构
mysqldump -uroot -p123456 -d book>booktable.sql #只导出book库的表结构
只导出数据
mysqldump -uroot -p123456 -t book>bookdata.sql #只导出book库中的数据
F:导出数据库,并自动生成库的创建语句
mysqldump -uroot -p123456 -B book2 >book2.sql
mysql -uroot -p123456 < book2.sql 导入不用指定数据名

导入数据:
导入所有数据库
mysql -uroot -p123456 导入数据库
Mysql -uroot -p123456 book create database book;
使用source导入
mysql> create database book;
mysql> use book;
mysql> source /root/book.sql
导入表
mysql> drop table books;
mysql> source /root/books.sql; ##导入表时,不需要重新,创建表。要先进到相应的数据库中
mysql> select * from books;
导入表结构和数据
mysql> create database book;
mysql -uroot -p123456 book mysql -uroot -p123456 book

mysqlhotcopy-裸文件备份 :
Mysqlhotcopy本质是使用锁表语句后再使用cp或scp拷贝数据库
mysqlhotcopy –help
–allowold don’t abort if target dir already exists (rename it _old) --不覆盖以前备份的文件
–addtodest don’t rename target dir if it exists, just add files to it --属于增量备份
–noindices don’t include full index files in copy --不备份索引文件
–debug enable debug --启用调试输出
–regexp=# copy all databases with names matching regexp --使用正则表达式
–checkpoint=# insert checkpoint entry into specified db.table --插入检查点条目
–flushlog flush logs once all tables are locked --所有表锁定后刷新日志
–resetmaster reset the binlog once all tables are locked --一旦锁表重置binlog文件
–resetslave reset the master.info once all tables are locked --一旦锁表重置master.info文件

你可能感兴趣的:(mysql备份与导入)