mysql备份
[MySql数据库备份的几种方式]
mysqldump工具备份
备份整个数据库
1 | $> mysqldump -u root -h host -p dbname > backdb.sql |
备份数据库中的某个表
1 | $> mysqldump -u root -h host -p dbname tbname1, tbname2 > backdb.sql |
备份多个数据库
1 | $> mysqldump -u root -h host -p --databases dbname1, dbname2 > backdb.sql |
备份系统中所有数据库
1 | $> mysqldump -u root -h host -p --all-databases > backdb.sql |
直接复制整个数据库目录(对于InnoDB存储引擎不适用)备份
windowns: installpath/mysql/data
linux: /var/lib/mysql
在复制前需要先执行如下命令:
1 | MYSQL> LOCK TABLES; |
mysqlhotcopy工具备份
备份数据库或表最快的途径,只能运行在数据库目录所在的机器上,并且只能备份MyISAM类型的表。
要使用该备份方法必须可以访问备份的表文件。
1 | $> mysqlhotcopy -u root -p dbname /path/to/new_directory; |
mysql命令导入sql文件还原
1 | $> mysql -u root -p [dbname] < backup.sql |
直接复制数据库目录还原
注: 该方式必须确保原数据库和待还原的数据库主版本号一致,并且只适用于MyISAM引擎的表。
- 关闭mysql服务。
- 将备份的文件或目录覆盖mysql的data目录。
- 启动mysql服务。
- 对于linux系统,复制完文件后需要将文件的用户和组更改为mysql运行的用户和组。
mysqlhotcopy快速恢复
停止mysql服务,将备份数据库文件复制到存放数据的位置(mysql的data文件夹),重先启动mysql服务即可(可能需要指定数据库文件的所有者)。
1 | $> cp -R /usr/backup/test /usr/local/mysql/data |
相同版本数据库之间迁移
1 | $> mysqldump -h www.abc.com -uroot -p password dbname | |
不同版本的mysql数据库之间的迁移
备份原数据库。
卸载原数据库。
安装新数据库。
在新数据库中还原备份的数据库数据。
数据库用户访问信息需要备份mysql数据库。
默认字符集问题,MySQL4.x中使用latin1作为默认字符集,mysql5.x使用utf8作为默认字符集。如果有中文数据需要对默认字符集进行更改。
不同数据库之间的迁移
MyODBC工具实现MySQL和SQL Server之间的迁移。
MySQL Migration Toolkit工具。
表的导出和导入
SELECT …… INTO OUTFILE 导出文本文件,该方法只能导出到数据库服务器上,并且导出文件不能已存在。
1 | MYSQL> SELECT ...... INTO OUTFILE filename [OPTIONS] |
mysqldump文件导出文本文件(和INTO OUTFILE不一样的是该方法所有的选项不需要添加引号)
1 | $> mysqldump -T path -u root -p dbname [tables] [OPTIONS] |
mysql命令导出文本文件
1 | MYSQL> mysql -u root -p --execute="SELECT * FROM person;" test > C:\person3.txt; |
LOAD DATA INFILE导入文本文件
1 | MYSQL> LOAD DATA INFILE 'filename.txt' INTO TABLE tablename [OPTIONS] [IGNORE number LINES]; |
mysqlimport导入文本文件
1 | $> mysqlimport -u root -p dbname filename.txt [OPSTONS] |
使用mysqlbinlog恢复数据
1 | $> mysqlbinlog [option] filename | mysql -u user -p password |
启动二进制日志
1 | log-bin = path/filename #日志文件存储目录和文件名 |
查看二进制日志
1 | MYSQL> SHOW VARIABLES LIKE 'log_%'; |
删除二进制日志
1 | MYSQL> RESET MASTER; #删除所有二进制日志MYSQL> PURGE {MASTER | BINARY} LOGS TO 'log_name'; #删除文件编号小于log_name编号的文件MYSQL> PURGE {MASTER | BINARY} LOGS BEFORE 'date'; #删除指定日期以前的文件 |
暂时停止二进制日志(不需要重启mysql服务)
1 | MYSQL> SET sql_log_bin = {0|1} #暂停或启动二进制日志。 |
1 | 一. mysqldump命令备份数据 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Starli!
评论