Mysql小技巧

一、如何快速对mysql进行备份

最快速的方法肯定是借助mysql提供的mysqldump命令:

1、从数据库导出数据到 bak.sql:

# 如果是本机3306端口,那么-h -P都可省略
mysqldump -h132.72.192.432 -P3306 -uroot -p123456 jiguiquandb > /路径/bak.sql;

#如果还想指定数据库中的表的话:
mysqldump -h132.72.192.432 -P3306 -uroot -p123456 jiguiquandb table1 table2 > /路径/baktable.sql;

# 如果只是想导出表结构的话:(-d)
mysqldump -h132.72.192.432 -P3306 -uroot -p123456 -d jiguiquandb > /路径/baktabled.sql;

2、导入数据:

# 首先我们得先创建数据库:
mysql -uroot -p123456
mysql> show databases;
mysql> use bpv;   #查看源数据库的信息:
mysql> select database(); #查看当前选择的数据库
mysql> SHOW VARIABLES LIKE 'character_set_database';  #查看字符集
mysql> SHOW VARIABLES LIKE 'collation_database';   #查看排序规则

## 创建数据库newdb1、newdb2、newdb3用于测试:
mysql> CREATE DATABASE `newdb1` DEFAULT CHARACTER SET UTF8 COLLATE UTF8_GENERAL_CI;
mysql> CREATE DATABASE `newdb2` DEFAULT CHARACTER SET UTF8 COLLATE UTF8_GENERAL_CI;
mysql> CREATE DATABASE `newdb3` DEFAULT CHARACTER SET UTF8 COLLATE UTF8_GENERAL_CI;

### 方法1:通过source命令将数据导入到newdb1(速度慢)
mysql> use newdb1
mysql> source /路径/bak.sql

### 方法2:通过mysql命令,直接将数据导入newdb2(速度快)
mysql -uroot -p123456 newdb2 < /路径/bak.sql

3、不需要提前备份,直接将jiguiquandb中的数据,拷贝到newdb3中:

mysqldump jiguiquandb -uroot -p123456 --add-drop-table | mysql newdb3 -uroot -p123456

# 如果不像锁表的话(Innodb)
mysqldump jiguiquandb --single-transaction=TRUE -uroot -p123456 --add-drop-table | mysql newdb3 -uroot -p123456

# 还可以指定多张表
mysqldump jiguiquandb table1 table2 table3 --single-transaction=TRUE -uroot -p123456 --add-drop-table | mysql newdb3 -uroot -p123456

4、在备份前,还可以先查询看看指定数据库的大小:

mysql> select concat(round(sum(data_length/1024/1024),2),'MB') as data from information_schema.tables where table_schema='jiguiquandb';
+----------+
| data     |
+----------+
| 320.68MB |
+----------+
1 row in set (0.02 sec)
  • 其实,还有一个mysqlpump命令,速度比mysqldump命令略快,因为它支持了并行;用法和mysqldump差不多;

  • 还有一个,非自带的mysqldumper,速度远高于mysqldump,但需要另外安装,仅作了解!

jiguiquan@163.com

文章作者信息...

留下你的评论

*评论支持代码高亮<pre class="prettyprint linenums">代码</pre>

相关推荐