`

备份&恢复

阅读更多

  *** 为保护数据完整,备份前先刷新内存数据到硬盘以及停止数据库 或 锁定数据库
    flush tables with read lock;

    ./mysqladmin -u root -p shutdown
    或
    service mysqld stop

  ------------------------------------------------------------------------
  *** 手工拷贝备份:
  # cp -rf mysql mysql_bak
 
  *** 恢复,直接拷贝回去。

  ------------------------------------------------------------------------
  *** mysqldump备份:
  完整导出:./mysqldump -u root -p db_name tb_name >xxx.sql   //mysql/bin下
  只导出结构 -d
  只导出数据 -t
  INSERT项显示字段名称 -c
  所有数据库:--all-databases
  指定导出何种字符集:--default-character-set=charset
--disable-keys
告诉mysqldump在INSERT语句的开头和结尾增加/*!40000 ALTER TABLE table DISABLE KEYS */;和/*!40000 ALTER TABLE table ENABLE KEYS */;语句,这能大大提高插入语句的速度,因为它是在插入完所有数据后才重建索引的。该选项只适合MyISAM表

-e

使用values列表多行的插入语法,这样SQL文件更小,重载文件时可以加速插入。
-q
导出大表时很有用,它强制mysqldump从服务器查询取得记录直接输出而不是取得所有记录后将它们缓存到内存中
-R
导出存储过程以及自定义函数

-w

只导出符合指定条件的语句。如-w'id="tt123"'

 

--备份时排除某表脚步

脚本原著(http://storysky.blog.51cto.com/628458/278093

 

#!/bin/bash
i=`mysql -u root DB_NAME -e "show tables;" | awk '!/Table_name/&&!/Tb_name/'`
mysqldump -u root DB_NAME $i >> ufo.sql

 

--如果要选择字段,可以用:
select * into outfile '/tmp/out.txt' from tablename;

  *** source恢复:
  mysql>use db_name;
  mysql>set names 导入数据的字符集     ***否则可能出现中文乱码

  引述:在MySQL环境下,大量实验证明GB2312没有UTF-8支持中文好,有很多文字GB2312是不支持的,变成'?',所以建议先把文件转成UTF-8再做下一步。
  mysql>source 路径/xxx.sql;
  *** bin/mysql恢复:
  # ./mysql DB_NAME -u root -p < xxx.sql
mysql4.0导出到5.0中可能怎样都会出现乱码,试下在建表语句后TYPE=MyISAM改为ENGINE=MyISAM DEFAULT CHARSET=utf8。

  -----------------------------------------------------------------------------
  *** 文本export data:
  select COL_NAME into outfile '/tmp/dump.txt'
  fields terminated by ','          //设定字段间的分隔符
  optionally enclosed by '"'        //1、使用该句则数字类型不被指定字符包装。2、不使用则全部类型被包装。
  lines terminated by '\n'          //告诉MYSQL输出每条记录结束后添加什么字符
  from TABLE where …;

  -----------------------------------------------------------------------------

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics