一、 功能
mysql数据库逻辑备份
二、应用演示
非大数据备份解决方案 SQL语句重现 备份数据表需要SELECT权限
语法:
mysqldump -h 服务器 -u用户名 -p密码 数据库名 > 备份文件.sql
-A, --all-databases 所有库
school 数据库名
school stu_info t1 school数据库的表stu_info、t1
-B, --databases bbs test mysql 多个数据库
关于其它参数说明:
--single-transaction #基于此项可以实现对InnoDB表做热备份
-x, --lock-all-tables #执行备份时为所有表请求加锁 MyISAM
-l, --lock-tables
-E, --events #备份事件调度器代码
--opt #同时启动各种高级选项
-R, --routines #备份存储过程和存储函数
-F, --flush-logs #备份之前刷新日志
--triggers #备份触发器
--master-data=2 #备库,该选项将会记录binlog的日志位置与文件名并追加到文件中,如果为1将
会输出CHANGE MASTER命令,主从下有用
注意:-B 作用:创建数据库和切换到数据库,恢复时不用创建数据库和删表。备份多个库,-B 数据库1
数据库2
-d只备份库结构,不包含数据内容
备份:mysqldump -u 用户名 -p 数据库名 表名 > 备份的文件名
备份多个表:mysqldump -u 用户名 -p 数据库名 表名1 表名2 > 备份的文件名
1、数据库备份
[root@localhost ~]# mysqldump -uroot -pAdmin@123 --single-transaction --master-data=2 test_data > /tmp/test_`date +%F-%H-%M`.sql
[root@localhost ~]# mysqlshow -uroot -p test_data
Enter password:
Database: test_data
+--------+
| Tables |
+--------+
| user |
+--------+
[root@localhost ~]# ls /tmp/
test_2019-07-21-21-54.sql
2、数据库恢复
创建一个新的数据库test
[root@localhost ~]# mysql -uroot -pAdmin@123 -e 'create database test'
[root@localhost ~]# mysql -uroot -pAdmin@123 -e 'show databases;'
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test |
| test_data |
+--------------------+
查看数据库test为空
[root@localhost ~]# mysqlshow -uroot -p test
Enter password:
Database: test
+--------+
| Tables |
+--------+
+--------+
将刚才备份的数据库恢复到test数据库里面
[root@localhost ~]# mysql -uroot -p test </tmp/test_2019-07-21-21-54.sql
Enter password:
[root@localhost ~]# mysqlshow -uroot -p test
Enter password:
Database: test
+--------+
| Tables |
+--------+
| user |
+--------+