当前位置:Gxlcms > 数据库问题 > mysql 备份及恢复

mysql 备份及恢复

时间:2021-07-01 10:21:17 帮助过:3人阅读

msyql>flush tables with read lock; 只读形式锁表

mysql>flush logs;

msyql>show binary logs; 查看二进制日志

--master-data=n{0|1|2} 0:不记录二进制文件及位置

             1:以 change master to 的方式记录位置,用于恢复后直接启动从服务器

             2:以change master to 方式备份,默认被注释

 

记录二进制日志备份:

mysqldump -uroot -p --master-data=1 msyqldb >/back/back-date+%F-%H-%M-%S.sql

温备份 锁定所有表

--lock-all-tables 参数 锁定所有表 后进行备份

mysqldump -uroot -p --lock-all-tables  --master-data=1 msyqldb >/back/back-date+%F-%H-%M-%S.sql

--flush-logs:执行日志flush;执行备份前,日志滚动

 

* 如果指定库中的表类型均为InnoDB ,可以使用 --single-transaction 启动热备;

备份多个库

--all-databases :备份所有库

--databases DB—Name 备份指定库

这两个命令备份库名;恢复前不用手动创建库

备份所有库:mysqldump -uroot -p --lock-all-tables --flush-logs --all-databases --master-data=2 >/back/dbs+%F-%H-%M-%S.sql

增量备份:备份每天的二进制日志

10、备份策略:每周完全+每日增量

完全备份:mysqldump  msyqldump -uroot -p  --master-data=2 --flush-logs --all-databases --lock-all-tables>/back/alldatabases.sql

 

mysql>purge binary logs to ‘msyql-bin-000011‘ ;删除‘msyql-bin-000011‘之前的 二进制日志;

msyql>show binary logs;

增量备份:备份二进制日志文件(flush logs)

1、mysql>flush logs; 先登录mysql 刷新下日志;

2、cd /mysql/data/ (此目录为数据库的data存放路径) 

  cp mysql-bin-000011 /back/

 

3、或者可以另一种方式增量备份,把mysql-bin-000011 数据读出了后进行备份

mysqlbinlog mysql-bin.000011 >/back/mon-01bin.sql

 

恢复mysql 数据库;

假如mysql data 目录下,被整个都删除了;

1、cd /usr/local/mysql/ mysql安装目录

2、初始化mysql :scripts/mysql_install_db --user=mysql --datadir=/mydat/data/

3、启动mysql 

4、#mysql -u root -p </back/alldatabases.sql  导入完全备份库

5、#mysql -u root -p </back/mon-01bin.sql  再导入增量的二进制备份

6、再把没有备份的最新二进制日志导入:#mysqlbinlog mysql-bin.000012 >/back/tu.sql

                   #mysql -uroot -p </back/tu.sql

 

 

mysql 备份脚本:

 

mysql 备份及恢复

标签:

人气教程排行