欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

Mysql备份_MySQL

程序员文章站 2022-05-19 17:31:45
...

1.冷备

冷备份发生在数据库已经正常关闭的情况下,当正常关闭时会提供给我们一个完整的数据库。冷备份是将关键性文件拷贝到另外位置的一种说法。对于备份数据库信息而言,冷备份是最快和最安全的方法。

只能提供到“某个时间点”的恢复;不能按表和用户恢复;工作是需要关闭数据库;恢复对版本有很高要求

备份速度取决于存储引擎类型

cp

1.找到数据目录存放位置

#mysql -uroot -pmypasswd
mysql> show variables like ‘%datadir%’;

2.把内存中的数据都刷新到磁盘中,同时锁定数据表,以保证拷贝过程中不会有新的数据写入

#mysql -uroot -pmypasswd
mysql> FLUSH TABLES WITH READ LOCK;
mysql> FLUSH LOGS;

3.关闭mysql服务器

#service mysqld stop

4.备份

#tar -zcvf mysql.tar.gz /var/lib/mysql
#cp mysql.tar.gz mysql_bck

注意,对于 Innodb 类型表来说,还需要备份其日志文件,即 ib_logfile* 文件。因为当 Innodb 表损坏时,就可以依靠这些日志文件来恢复。

2.热备

热备份是在数据库运行的情况下,备份数据库操作的sql语句。

mysqldump

mysqldump 是采用SQL级别的备份机制(逻辑备份),它将数据表导成 SQL 脚本文件,在不同的 MySQL 版本之间升级时相对比较合适,这也是最常用的备份方法

Mysqldump命令的工作原理很简单,它先查出需要备份的表的结构,再在文本文件中生成一个CREATE语句。然后,将表中的所有记录转换为一条INSTERT语句。这些CREATE语句和INSTERT语句都是还原时使用的。还原数据时就可以使用其中的CREATE语句来创建表。使用其中的INSERT语句来还原数据。它可以实现整个服务器备份,也可以实现单个或部分数据库、单个或部分表、表中的某些行、存储过程、存储函数、触发器的备份;并且能自动记录备份时刻的二进制日志文件及相应的位置。对于InnoDB存储引擎来讲支持基于单事务模式实现热备,对于MyISAM则最多支持温备。

MySQL数据库压缩备份

#mysqldump -hhostname -uusername -pmypasswd db_name | gzip > backupfile.sql.gz

仅备份数据库结构

#mysqldump –no-data –databases db_name1 db_name2 > backupfile.sql

备份服务器上所有数据库

#mysqldump –all-databases > allbackupfile.sql

还原需要先手动创建一个数据库 db_name
还原MySQL数据库的命令

#mysql -hhostname -uusername -pmypasswd db_name

还原压缩的MySQL数据库

#gunzip

二进制(binlog)

二进制日志包含了所有更新了数据或者已经潜在更新了数据(例如,没有匹配任何行的一个DELETE)的所有语句。

启用binlog。

#vim /etc/my.cnf

server-id = 1
log-bin = binlog
log-bin-index = binlog.index

#service mysqld restart

1.滚动日志复制文件
终止对当前 binlog 的写入

#mysql -uroot -pmypasswd
mysql> FLUSH LOGS;

复制导出二进制文件

cp mysql-bin.000001 /mysql_bck/mysql-bin.000001

2.mysqlbinlog导出二进制日志文件内容

# mysqlbinlog mysql-bin.000001 > binlog_date +%F.sql

3.恢复

#mysqlbinlog /mysql_bck/binlog.000001 | mysql -uroot -pmypasswd db_name

ps:如果是备份复制系统中的从服务器,还应该备份 master.info 和 relay-log.info 文件。

mysqldump全备 + binlog增备

#mysqldump -uroot -pmypasswd –lock-all-tables –master-data=2 –events
–routines–all-databases > /mysql_bck/database_date +%F.sql
tips:–lock-all-tables表示为所有表施加读锁;–master-data=2表示在备份文件中记录当前二进制日志的位置;–events表示备份数据的同时备份时间调度器代码;–routines表示备份数据的同时备份存储过程和存储函数;–all-databases表示备份所有库。
# mysqlbinlog –start-position= –stop-position= mysql-bin.000001 > /mysql_bck/binlog_date +%F_%H.sql

http://www.bitsCN.com/article/74613.htm
http://www.bitsCN.com/article/22727.htm

mysqlhotcopy

mysqlhotcopy 是一个 PERL 程序,最初由Tim Bunce编写。它使用 LOCK TABLES、FLUSH TABLES 和 cp 或 scp 来快速备份数据库。它是备份数据库或单个表的最快的途径,但它只能运行在数据库文件(包括数据表定义文件、数据文件、索引文件)所在的机器上。mysqlhotcopy 只能用于备份 MyISAM,并且只能运行在 类Unix 和 NetWare 系统上。

安装

#yum -y install perl perl-DBI
#wget http://file.111cn.net/upload/2013/12/DBD-mysql-3.0002.tar.gz
#tar zxvf DBD-mysql-3.0002.tar.gz
#cd DBD-mysql-3.0002
#perl Makefile.PL –mysql_config=/usr/local/mysql/bin/mysql_config
#make
 #make install

备份

#mysqlhotcopy -uroot -pmypasswd db_name /mysql_bck