Linux中,如何做mysql数据库定时备份
数据库备份工具: mysqldump
备份基本命令
mysqldump -uroot -proot --single-transaction -R -E --triggers --master-data=2 --flush-logs --all-databases > /data/mysqldata/alldb-fullback-$(date +%F).sql
解释:
--single-transaction 此选项将事务隔离模式设置为, REPEATABLE READ并START TRANSACTION在转储数据之前将SQL语句发送到服务器。它仅对诸如之类的事务表有用InnoDB,因为这样它在START TRANSACTION发布时转储数据库的一致状态, 而不会阻塞任何应用程序。
-R 包括存储的函数和过程
-E 记录此次事件
--triggers 在输出中包括每个转储表的触发器。默认情况下启用此选项。使用禁用它 --skip-triggers。
--master-data=2 使用此选项可转储主复制服务器以生成转储文件,该转储文件可用于将另一台服务器设置为主服务器的从属服务器。它使转储输出包含一条CHANGE MASTER TO 语句,该语句指示转储服务器的二进制日志坐标(文件名和位置)。这些是将转储文件加载到从属服务器后,从属服务器应从其开始复制的主服务器坐标。如果选项值为2,则该CHANGE MASTER TO语句将写为SQL注释,因此仅提供信息;重新加载转储文件时,它无效。如果选项值为1,则该语句不会作为注释写入,并在重新加载转储文件时生效。如果未指定选项值,则默认值为1。
--flush-logs 开始转储之前,请刷新MySQL服务器日志文件。此选项需要 RELOAD特权。如果将此选项与该--all-databases选项结合使用
--all-databases 备份所以的数据库数据
如报错:Binlogging on server not active
解决方法:开启binlog日志设置,修改mysql配置文件
log_bin=master-bin
备份结束了,哈哈_。每天都来这么操作一遍吗?那不得累死 巴拉巴拉,找到了定时任务的工具crontab ,
crontab格式介绍,一张图搞定:
先把备份命令写进脚本dump.sh
mysqldump -uroot -proot --single-transaction -R -E --triggers --master-data=2 --flush-logs --all-databases > /data/mysqldata/alldb-fullback-$(date +%F).sql
创建定时任务:
crontab -e
写定时任务保存:
#每周一,三,五备份数据库数据
00 00 * * 1,3,5 /data/mysqldata/dump.sh
OK
数据恢复:
数据库恢复:
#登陆mysql
mysql–uroot –p
#数据恢复
sourced : xxx.sql;
记住:牛逼的技术虽然不是你的,但是你会了,就是你的
还没有评论,来说两句吧...