mysqldump基础备份
数据量大,要不影响线上数据,不影响用户操作,前期主从复制,多个从数据库,利用从数据库备份。并且从数据库本身就相当于是一个备份。多主多从。
一、使用mysqldump命令备份
mysqldump命令将数据库中的数据备份成一个文本文件。表的结构和表中的数据将存储在生成的文本文件中。
mysqldump命令的工作原理很简单。它先查出需要备份的表的结构,再在文本文件中生成一个CREATE语句。然后,将表中的所有记录转换成一条INSERT语句。然后通过这些语句,就能够创建表并插入数据。
需要开启mysql服务
1、备份命令
格式:mysqldump -h主机名 -P端口 -u用户名 -p密码 --databases 数据库名 > 文件名.sql
mysqldump -h127.0.0.1 -uroot -proot --databases test > F:\b\data\b_test_319.sql phpmyadmin
2、备份压缩
格式:mysqldump -h主机名 -P端口 -u用户名 -p密码 --databases 数据库名 | gzip > 文件名.sql.gz
备份同个库多个表
格式:mysqldump -h主机名 -P端口 -u用户名 -p密码 数据库名 表1 表2 .... > 文件名.sql
mysqldump -h127.0.0.1 -uroot -proot test test user > F:\b\data\b_test_test.user_319.sql
3、时备份多个库
格式:mysqldump -h主机名 -P端口 -u用户名 -p密码 --databases 数据库名1 数据库名2 数据库名3 > 文件名.sql
mysqldump ... --databases test test2 > F:\b\data\*.sql
4、备份实例上所有的数据库
格式:mysqldump -h主机名 -P端口 -u用户名 -p密码 --all-databases > 文件名.sql
mysqldump ... --all-databases > F:\b\data\b_all_319.sql
-- Warning: Skipping the data of table mysql.event. Specify the --events option explicitly.
--events, -E mysqldump -uroot -p --all-databases --events 导出事件
5、备份数据库结构,不备份数据
格式:mysqldump -h主机名 -P端口 -u用户名 -p密码 --no-data 数据库名1 数据库名2 数据库名3 > 文件名.sql
mysqldump ... --no-data --databases test test2 > F:\b\data\b_nodata_319.sql
mysqldump ... --no-data test test user > F:\b\data\b_nodata_319.sql test.test test.user
6、备份where
mysqldump ... test test --where="id>10"> F:\b\data\b_where_320.sql
... test test user --where="id between 10 and 15"
二、直接复制整个数据库目录
MySQL有一种非常简单的备份方法,就是将MySQL中的数据库文件直接复制出来。这是最简单,速度最快的方法。
不过在此之前,要先将服务器停止,这样才可以保证在复制期间数据库的数据不会发生变化。如果在复制数据库的过程中还有数据写入,就会造成数据不一致。这种情况在开发环境可以,但是在生产环境中很难允许备份服务器。
注意:这种方法不适用于InnoDB存储引擎的表,而对于MyISAM存储引擎的表很方便。同时,还原时MySQL的版本最好相同。
三、导入 启动mysql服务
1、导入表
mysql -uroot -p database < mysqldump.sql
database 即 use database
mysqldump ... test test --where="id>10"> F:\b\data\b_where_320.sql
mysql -uroot -p test < F:\b\data\b_test_test.user_320.sql
2、导入数据库
mysql -uroot -p < mysqldump.sql
mysqldump ... --databases test > F:\b\data\b_where_320.sql
mysql -uroot -p < F:\b\data\b_test_test.user_320.sql
mysqlhotcopy
- 优点
- 速度快
- 缺点
- 只支持MyISAM引擎
- 需要安装perl语言及配置支持环境,因为hotcopy由perl写成
- 选项参数较少,功能不够强大,比如不提供--where选项,无法选取某部分数据备份
- 只能运行在数据库目录所在的机器上
2.mysqldump
- 优点
- 支持MyISAM和innodb引擎
- 只要装了mysql就可以用,无需别的操作,不存在平台兼容问题
- 参数较多,功能强大,可以备份整个数据库,也可以备份单个表,还可以备份单个表的部分数据
- 可生成多种文件,还可以用于从一个MySQL服务器向另一个服务器复制数据
- 缺点
- 速度没有那么快