MySQL——备份

冷备份:

关闭mysql服务,拷贝所有库表文件。一般冷备份来备份所有库表数据。 通过监控,查看每天哪个时间在线用户最少。

/var/lib/mysql
myisam: 
t1.frm	表结构  
t1.MYD	表数据   
t1.MYI	表索引


#对fdb1库备份
[root@Fox mysql]# /etc/init.d/mysqld stop
[root@Fox class]# cd /var/lib/mysql/db1/
[root@Fox db1]# scp -p t1.* 192.168.11.146:/tmp			#拷贝到146上

[root@Client tmp]# mkdir /var/lib/mysql/bank			#创建备份库
[root@Client tmp]# cp t1.* /var/lib/mysql/bank/			#拷贝到bank库下
[root@Client bank]# chmod 660 t1.*						修改权限和所有者
[root@Client bank]# chown mysql.mysql t1.*
[root@Client bank]# mysql -uroot -p112					#登录mysql查看
mysql> use bank											#查看
mysql> show tables;

#对整个mysql数据库备份
[root@Fox lib]# /etc/init.d/mysqld stop  
[root@Fox /]# mkdir back
[root@Fox /]# cp -a /var/lib/mysql/* ./back
[root@Fox lib]# zip -r back.zip back/						#打包
[root@Fox lib]# scp back.zip 10.1.1.2:/tmp

[root@Client tmp]# unzip back.zip -d /var/lib/mysql/		#解包
[root@Client tmp]# cd /var/lib/mysql/
[root@Client mysql]# rm -rf mysql/
[root@Client mysql]# mv back/* ./
[root@Client mysql]# rm -rf back/
[root@Client mysql]# cd db1/
[root@Client db1]# chown -R mysql.mysql ./*
[root@Client mysql]# /etc/init.d/mysqld resatrt
[root@Client mysql]# mysql -uroot -p112					#登录
mysql> show databases;									#查看
Innodb:  需要备份以下文件
/var/lib/mysql/ibdata		数据和索引
ib_logfile0  ib_logfile1	日志
fox2.frm					表结构

热备份:

不关闭mysql服务,mysqldump

#备份同一个数据库中的多张表:
[root@Fox mysql]# mysqldump
Usage: mysqldump [OPTIONS] database [tables]
[root@Fox ~]# mysqldump -uroot -p112 -x db1 t1 t5 > /tmp/db1_t1_t5.bank
-x		读锁、备份过程中任何人可读不可修改

#备份多个库:
OR     mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
mysqldump -uroot -p112 -x --databases db1 mysql > /tmp/db_db1_mysql.sql

#备份所有库表:
OR     mysqldump [OPTIONS] --all-databases [OPTIONS]
[root@Fox ~]# mysqldump -uroot -p112 -x --all-databases > /tmp/all.sql
[root@Fox ~]# mysqldump -uroot -p112 -Ax > /tmp/all.sql
如果备份innodb表:
  --single-transaction   替换 -x

还原 :

#同一个数据库中的多张表:
[root@Fox ~]#mysql -u root -p112 dbname < /tmp/db1_t1_t5.sql	dbname库名
#多个库的还原:
[root@Fox ~]#mysql -uroot -p112 < /tmp/db_db1_mysql.sql
#所有库还原:
[root@Fox ~]#mysql -uroot -p112 < /tmp/all.sql

备份策略:

  • 全备份:冷备份、热备份 可以选择一周一次、一天一次
  • 增量备份 可以选择一天一次、一小时一次
mysql -uroot -pqwer -e 'flush logs;'
cp/scp 将备份文件保存到一个网络的日志备份机上。

找一个日志,将用户对数据库的修改【增、删、改】操作记录下来。以sql语句形式记录下来。这个日志称为: 二进制日志 log_bin
在/var/lib/mysql 下:
binlog.000001  binlog.000002.......	日志切割、每次重启、会生成一个
[root@Fox mysql]# mysqlbinlog binlog.000001	翻译二进制日志、可读
#at xx	  是一条语句、at是起始位置、end_log_pos 结束位置。其中为第二行为开始时间。

开启二进制日志

[root@Fox ~]# vim /etc/my.cnf
#symbolic-links=0
log_bin=binlog					开启二进制日志。=日志名称
log_bin_index=binlog.index		二进制日志索引。=右边名字随便起、左边固定
重启mysql
通过binlog的日志位置号和起始时间进行数据还原。
1[root@Fox mysql]# mysqlbinlog binlog.000001 > /tmp/1.sq1	导出数据
[root@Fox mysql]# mysql -uroot -p112 < /tmp/1.sql			还原

2、通过位置号进行数据还原
[root@Fox]#mysqlbinlog --start-position='4' --stop-position='699' binlog.000004  > /tmp/1.sql 
[root@Fox ]# mysql -uroot -p112 < /tmp/1.sql			还原

3、通过时间进行数据还原:
[root@Fox]#mysqlbinlog --start-date='2017-06-20 23:36:35 ' --stop-date='2017-06-20 23:44:25' binlog.000004  > /tmp/1.sql
[root@Fox mysql]# mysql -uroot -p112 < /tmp/1.sql			还原
or
mysqlbinlog --start-date='2017-06-20 23:36:35 ' --stop-date='2017-06-20 23:44:25' binlog.000004 | mysql -uroot -p112

日志切割方式:

1 、mysql重启自动切割
2 、通过sql命令: 
mysql> flush logs;   切割生成新日志、之后对数据库的操作都记录在新日志里
 flush privileges; 使update mysql.user生效

Vim  /etc/my.cnf
sync_binlog=1 			mysql缓存数据实时写入binlog中(保证数据安全、)
max_binlog_size=1G    达到1G自动切割binlog
binlog_do_db=mysql 	只记录mysql库的修改操作	(与下二选一)
binlog_ignore_db=test  	不记录test库的操作
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

〆`杨陆原じ₯㎕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值