知识点:linux数据库备份

Posted 一只阿木木

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识点:linux数据库备份相关的知识,希望对你有一定的参考价值。

 

服务端启用二进制日志

如果日志没有启开,必须启用binlog,要重启mysql,首先,关闭mysql,打开/etc/my.cnf,加入以下几行:

[mysqld]
log-bin

 

然后重新启动mysql,会产生hostname-bin.000001以及hostname-bin.index,前面的日志文件是记录所有对数据的更新操作,后面的文件是存储所有二进制文件的索引,不能轻易被删除。

重启

[root@localhost ]# service mysqld start (5.0版本是mysqld) 
[root@localhost ]# service mysql start (5.5.7版本是mysql)

查看日志状态

 

 

 

Mysqldump备份执行脚本

# Name:backup.sh
# This is a ShellScript For Auto DB Backup and Delete old Backup
#备份地址
backupdir=/var/lib/mysql-files/mysqlbackup
#备份文件后缀时间
time=_` date +%Y_%m_%d_%H_%M_%S `
#需要备份的数据库名称
db_name=bike_system
#mysql 用户名
db_user=root
#mysql 密码
db_pass=bicycle
#mysqldump命令使用绝对路径,-flush-logs刷新biglog日志
mysqldump -flush-logs -u$db_user -p$db_pass --databases $db_name | gzip > $backupdir/$db_name$time.sql.gz
#删除7天之前的备份文件
find $backupdir -name $db_name"*.sql.gz" -type f -mtime +7 -exec rm -rf {} \\; > /dev/null 2>&1
echo "success"

设置脚本定时执行

输入:crontab -e

选择一个编辑器

在文件末尾添加:

30 1 * * * /var/lib/mysql-files/backup.sh
#每晚1点半执行数据库备份脚本 

Mysqldump用法参考

用法:mysqldump[options][db_name[tbl_name...]]
主要选项解释:
--all-databases,-A:备份所有数据库
--databases,-B:要备份的数据库,可以同时备份多个,使用空格分隔
--flush-logs,-F:备份前、请求到锁之后滚动日志,要记录下复制时的二进制日志
--flush-privileges:通知数据库重读授权表
--host=host_name,-hhost_name:要备份的数据库的主机名,可以基于网络备份
--lock-all-tables,-x:请求锁定所有表之后再备份,对MyISAM,InnoDB,Aria做温备
--single-transaction:能够对InnoDB存储引擎实现热备
-uusename备份的用户名
-ppassword登陆数据库的密码
--events:备份事件调度器代码
--routines:备份存储过程和存储函数
--triggers:备份触发器
--master-date={0|1|2},0表示不记录,1表示距离为changemaster语句,2表示记录为注释的changemaster语句

 

  • 1.备份全部数据库的数据和结构 mysqldump -uroot -p123456 -A >F:\\all.sql
  • 2.备份全部数据库的结构(加 -d 参数) mysqldump -uroot -p123456 -A-d>F:\\all_struct.sql
  • 3.备份全部数据库的数据(加 -t 参数) mysqldump -uroot -p123456 -A-t>F:\\all_data.sql
  • 4.备份单个数据库的数据和结构(,数据库名mydb) mysqldump -uroot-p123456 mydb>F:\\mydb.sql
  • 5.备份单个数据库的结构 mysqldump -uroot -p123456 mydb-d>F:\\mydb.sql
  • 6.备份单个数据库的数据 mysqldump -uroot -p123456 mydb-t>F:\\mydb.sql
  • 7.备份多个表的数据和结构(数据,结构的单独备份方法与上同) mysqldump -uroot -p123456 mydb t1 t2>f:\\multables.sql
  • 8.一次备份多个数据库 mysqldump -uroot -p123456 --databases db1 db2>f:\\muldbs.sql

还原部分分(1)mysql命令行source方法 和 (2)系统命令行方法

1.还原全部数据库:

(1) mysql命令行:mysql>source f:\\all.sql

(2) 系统命令行: mysql -uroot -p123456

(2) mysql -uroot -p123456 mydb

(2) mysql -uroot -p123456 mydb

 

(2) 系统命令行: mysql -uroot -p123456<f:\\muldbs.sql

Biglog还原参考

mysqlbinlog --start-datetime=“时间” 日志文件路径 | mysql -u用户 -p 从规定的起始时间还原到现在

mysqlbinlog --stop-datetime=“时间” 日志文件路径 | mysql -u用户 -p 从最开始还原到规定的结束时间

mysqlbinlog --start-datetime=“时间” --stop-datetime=“时间” 日志文件路径 | mysql -u用户 -p 从规定的起始时间还原到规定的结束时间

通过位置还原:

--start-position="还原数据的起始位置"

--stop-position="还原数据的结束位置"

mysqlbinlog --start-position=“位置” 日志文件路径 | mysql -u用户 -p 从规定的起始位置还原到现在

mysqlbinlog --stop-position=“位置” 日志文件路径 | mysql -u用户 -p 从最开始还原到规定的结束位置

mysqlbinlog --start-position=“位置” --stop-position=“位置” 日志文件路径 | mysql -u用户 -p 从规定的起始位置还原到规定的结束位置

 

以上是关于知识点:linux数据库备份的主要内容,如果未能解决你的问题,请参考以下文章

windows数据怎么定期备份到linux

Oracle数据库从RMAN备份集片段还原指定单个归档日志进行日志挖掘分析

android小知识点代码片段

linux自动代码增量备份 结合 全量备份

linux 下RMAN备份shell脚本

linux下远程备份mysql数据库