一、如何快速对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,但需要另外安装,仅作了解!