
1:官方百万级别的测试数据库:
官方测试数据库github网址:https://github.com/datacharmer/test_db
下载到目录,解压即可,运行命令:
2:自己创建简单测试数据库:
快速随机生成测试语言的网站:https://generatedata.com/
选择sql和想生成的字段,点击生成Generate!生成即可。
在MySQL输入生成的语句即可。
3:测试备份还原时用到的命令
删库跑路测试(先备份好)
还原后查询库的表数据是否完整。
采用复制整个数据存放目录
1:查看数据库数据存放位置
有两种方法:
1):在数据库中用命令 show variables like 'datadir' 查看
2):在配置文件中查看,配置了 datadir 目录的可查看。没有配置的默认为 /var/lib/mysql/ 位置
Linux中查看配置文件
2:复制目录或者目录下某个数据库名
3:还原时直接复制文件夹到数据库目录即可
mysqldump又可叫做全量备份。
参数 --databases 同 -B ,单独一个库,也可省略。
1、备份命令mysqldump格式
格式:mysqldump -h主机名 -P端口 -u用户名 -p密码 database 数据库名 >文件名.sql
备份testDatabase数据库
2、备份MySQL数据库为带删除表的格式
备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库。
3、直接将MySQL数据库压缩备份
备份并压缩
4、备份MySQL数据库某个(些)表
备份testDatabase中的myTable表,不需要用参数 --databases 或者 -B
5、同时备份多个MySQL数据库
同时备份testDatabase和 employees两个库
6、备份服务器上所有数据库
参数 --all-databases 同 -A
7、还原MySQL数据库的命令
1) 不指定数据名还原,默认生成原数据库名称,还原所有数据库。
2) 指定数据名还原,还原指定单个数据库,需在数据库种预先创建一个testDatabase名称。
3) 还原压缩的MySQL数据库
4) 进入数据库用source导入
增量备份是针对于数据库的bin-log日志进行备份的,增量备份是在全量的基础上进行 *** 作的。增量备份主要是靠mysql记录的bin-log日志。
1:查看是否开启bin-log日志
进入mysql输入命令可查看。
显示如下为开启状态,日志文件在/var/lib/mysql/以binlog.00001的格式保存。
如未开启,需要在配置文件种配置
2:查看目前使用的bin-log日志文件
进入mysql查看命令。
显示如下,目前使用的是binlog.000022文件,所有 *** 作都记录在此文件。
查看当前testDatabase的表myTable数据如下,
3:刷新日志,使用新的日志文件(备份)
在命令端执行命令
日志文件从 binlog.000022 变为 binlog.000023
这时相当与已经备份成功,备份文件即为上次的binlog.000022日志文件。
4:删除数量,从日志还原数据
1) 删除ABC行
查询以及没有ABC行列。
2) 恢复数据ABC行
退出mysql,在命令端用mysqlbinlog命令恢复到binlog.000022日志状态。
进入数据库再次查看数据,ABC已经恢复。
增量备份完成。
简单的 mysql 增量备份方案想弄一个自动作业每天备份公司项目的一个mysql数据库,原本采取的方案是crontab+全量mysqldump 然后gzip压缩并按日期保存,最后生成文件大概30多M的样子。但是毕竟这种全量备份放在每天执行不是很好,因为以后数据会越来越大(其中几张表,每天可能增加几w条数据)。
百度google了mysql增量备份的方案,看到有2种:
1.也是使用mysqldump,然后将这一次的dump文件和前一次的文件用比对工具比对,生成patch补丁,将补丁打到上一次的dump文件中,生成一份新的dump文件。(stackoverflow上看到的,感觉思路很奇特,但是不知道这样会不会有问题)
2.增量拷贝 mysql 的数据文件,以及日志文件。典型的方式就是用官方mysqlbackup工具配合 --incremental 参数,但是 mysqlbackup 是mysql Enterprise版才有的工具,现在项目安装的mysql版本貌似没有。
Ø 首先,我们需要开启MySQL服务器的二进制日志功能,其实现方法有很多种,最常用的是在MySQL的配置文件的mysqld项中加入log-bin=[filepath]项;也可以使用mysqld –log-bin=[filepath]重新启动MySQL服务器。
Ø 其次,使用mysqldump对数据库进行完全备份,它可以实现对数据据的联机,非阻塞的热备份,不会影响其他进程对数据库的读写 *** 作。(参考指令:mysqldump -uroot --password=123 --single-transaction --flush-logs --master-data=2 --all-databases --delete-master-logs >d:/mysql5.0/full_%date:~0,10%_1500_PM.sql)
Ø 第三,使用flush logs指令刷新创建新的二进制日志。可以通过mysqladmin flush logs或者flush logs语句实现。最方便有效的方法是将它做成批处理文件,然后让 *** 作系统定期执行。
Ø 使用mysql <*.sql进行完全备份的恢复。
Ø 使用mysqlbinlog logs-bin.[0-9]* | mysql进行增量备份的恢复。一般的,假设我们周日下午三点进行了完全备份并生成备份文件full_backup_20100415_3_PM.sql,周一周二中午一点进行了两次增量备份,分别生成增量备份文件inc_backup_1_PM.0007和inc_backup_1_PM.0008,周三上午10:00数据库发生崩溃,需要进行数据库恢复,此时正在记录的二进制日志为inc_backup_1_PM.0009,我们还需要恢复其中记录的 *** 作。具体的恢复 *** 作为:
mysql <full_backup_20100415_3_PM.sql
mysqlbinlog inc_backup_1_PM.0007 inc_backup_1_PM.0008 inc_backup_1_PM.0009
u 具体应用(结合T8项目)
根据上述分析,我们在T8项目使用MySQL增量备份,也需要三个步骤:
Ø 首选修改MySQL启动配置文件my.cnf,在其中的mysqld项中增加log-bin选项,重新启动MySQL 服务器以开启二进制日志功能,在生成文件/usr/data/mysql/ t8server-bin.index和t8server-bin..000001。如图所示:
Ø 编写完全备份可执行文件脚本:
Ø 编写增量备份可执行文件脚本:
Ø 执行full_backup_20100417_1_pm,生成/usr/data/mysql/full_backup_20100417_1_pm. sql文件。
Ø 执行inc_backup_1_pm,生成/usr/data/mysql/t8server-bin..000002。
其中full_backup_20100417_1_pm. sql和t8server-bin..000002分别是完全备份和增量备份文件。
要进行备份文件的恢复,只需执行命令:
u 总结
MySQL提供了很方便的完全+增量备份实现方法,我们只需调用系统内置的方法或者作出一些细微的配置就可以对MySQL数据库进行备份和恢复。对于MyISAM数据库和InnoDB数据库,都可以通过mysqldump实现数据库的完全逻辑备份,通过启动二进制日志(binary logs),可以记录一个时间段内对数据库的所有可能更新的 *** 作,从而通过flush logs创建新的日志而实现增量备份。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)