分享一下mysqldump的一些知识,希望对小白和大神的成功之路上都有一些帮助。
mysqldump 是 MySQL 自带的逻辑备份工具,无需下载只要熟知使用方法老人小孩都可放心食用,它可以保证数据的一致性和服务的可用性。
备份语法:
远程备份:
# mysqldump -h 服务器 -u用户名 -p密码 数据库名 > 备份文件.sql
本地备份:
# mysqldump -u用户名 -p密码 数据库名 > 备份文件.sql
备份文件结尾最好带醒目的标识,方便下次恢复数据时查看。
备份参数:
常用备份选项:
-A, --all-databases #备份所有库
-B, --databases #备份多个数据库
-F, --flush-logs #备份之前刷新binlog日志
--default-character-set #指定导出数据时的默认字符集,若不是默认字符集,可能出现乱码
--no-data,-d #不导出任何数据,只导出数据库表结构。
-D #恢复的表结构的时候用
--lock-tables #备份前,锁定所有数据库表
--single-transaction #保证数据的一致性和服务的可用性
-f, --force #即使在一个表导出期间得到一个SQL错误,继续。
mysqldump在备份是时候避免锁表,在运行期间的数据库备份的时候一定要注意保持服务的可用性,可以使用添加--single-transaction选项
备份库表语法:
备份表:
语法:# mysqldump -u root -p‘密码’ 库名 表名 > /备份文件(能显示重要信息信息)
备份多个表:
语法:# mysqldump -u root -p‘密码’ 库名 表名1 表名2 > /备份文件
备份库:
语法:# mysqldump -u root -p‘密码’ 库名 > /备份文件
备份多个库:
语法:# mysqldump -u root -p‘密码’ -B 库名1 库名2 库名3 > /备份文件
备份所有的库:
语法:# mysqldump -u root -p‘密码’ -A > /备份文件
注:在备注文件的时候最好是‘库名.文件名.bak’这样方便下次使用的时候查看。
备份数据库和表操作:
备份数据库和表:
备份数据库时要保证数据的一致性,恢复数据库之前要停止数据库对外服务,
停止bin-log日志,避免bin-log产生恢复数据的日志。
恢复库:
先登录数据库创建一个数据库
mysql> create database 库名;
[root@mysql-server ~]# mysql -uroot -p'密码' 库名 < 备份的文件
恢复表:
开始恢复:
mysql> set sql_log_bin=0; #停止binlog日志
恢复方式一:
mysql> use 库名;
mysql> source 备份的文件; -------加路径和备份的文件
恢复方式二:
# mysql -u root -p'' 库名 < 备份的文件加路径
[root@mysql-server ~]# mysql -uroot -p'密码' 库名 < 备份的文件加路径
备份和恢复表结构:
备份及恢复表结构:
1.备份表结构:
语法:# mysqldump -uroot -p'' -d 库名 表名 > 备份文件
2.恢复表结构:
登陆数据库创建一个库
语法:# mysql -u root -p'' -D 库名 < 备份文件
备份的时候用-d 恢复的时候用-D
备份和恢复表数据操作:
数据的导入导出,没有表结构
表的导出和导入只备份表内记录,不会备份表结构,
需要通过mysqldump备份表结构,恢复时先恢复表结构,再导入数据。
mysql> show variables like "secure_file_priv"; 查询导入导出的目录。
修改安全文件目录:
1.创建一个目录:mkdir 路径目录
[root@mysql ~]# mkdir /文件夹名
2.修改权限
[root@mysql ~]# chown mysql.mysql /文件夹名
3.编辑配置文件:
vim /etc/my.cnf
在[mysqld]里追加
secure_file_priv=/文件夹名
4.重新启动mysql.
# systemctl restart mysqld
5.导出数据
mysql> select * from 库名 表名 outfile '/文件夹名/备份文件';
6.导入数据
mysql> load data infile '/文件夹名/备份文件' into table 表名;