加入收藏 | 设为首页 | 会员中心 | 我要投稿 济南站长网 (https://www.0531zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

mysql热备份方法

发布时间:2016-10-09 02:19:51 所属栏目:MySql教程 来源:站长网
导读:mysql 热备 在运维中需定期备份mysql,为崩溃后的恢复数据做准备。一般分为冷备和热备,冷备就是停掉mysql服务,直接cp文件,但是在生产环境中,很 少有机会这样,一般都是在mysql提供服务的时候就进行备份,因此这牵扯到数据一致性的问题。所以,在MyISAM

mysql 热备

在运维中需定期备份mysql,为崩溃后的恢复数据做准备。一般分为冷备和热备,冷备就是停掉mysql服务,直接cp文件,但是在生产环境中,很 少有机会这样,一般都是在mysql提供服务的时候就进行备份,因此这牵扯到数据一致性的问题。所以,在MyISAM存储引擎下,我们的思路就是:锁表 –>备份–>解锁

# 进入mysql环境 锁表
root@mysql : test> flush tables with read lock;# 在系统环境下 备份
cp -R test /tmp/backup/test_back
# 进入mysql环境 解锁
root@mysql : test> unlock tables;

mysqlhotcopy 热备工具

当然也可通过mysql自带的工具 mysqlhotcopy 解决,事实上mysqlhotcopy是个perl程序,提供MyISAM下的锁表备份解锁操做。因为是perl脚本,所以需要机器上有PERL-DBD 模块,不然会报错: Can’t locate DBI.pm in @INC ,安装过程很简单,在这里: perl-DBI连接mysql

mysqlhotcopy也很简单,参数可用 –help 查看

# 备份test库为新的test_tmp库,与test同级目录 
mysqlhotcopy  --user=root  --password=root   test   test_tmp
 
# 备份test库 到 /tmp/ 目录下 
mysqlhotcopy  --user=root  --password=root   test   /tmp/
 
# --checkpoint dbinfo.checkpoint 这个是指定存放操作记录的数据库/表# --addtodest 增量备份,新的备份自动覆盖掉原来的
mysqlhotcopy  --user=root  --password=root  --checkpoint=dbinfo.checkpoint  --addtodesttest  /tmp/
mysqlhotcopy的安装方法如下:
yum -y install perl perl-DBI
wget http://down1.chinaunix.net/distfiles/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 test

make install

记录到到数据库的方法:

1、在数据库段分配一个专门用于备份的用户 mysql> grant select,reload,lock tables on *.* to 'hotcopyer'@'localhost' identified by '123456'; Query OK, 0 rows affected (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) 2、在/etc/my.cnf或者登陆用户的个人主文件.my.cnf里面添加 [mysqlhotcopy] interactive-timeout user=hotcopyer password=123456 port=3306

重新加载mysql 3、可以把记录写到专门的表中。具体察看帮助。 mysql> create database hotcopy; Query OK, 1 row affected (0.03 sec) mysql> use hotcopy Database changed mysql> create table checkpoint(time_stamp timestamp not null,src varchar(32),dest varchar(60), msg varchar(255)); Query OK, 0 rows affected (0.01 sec) 同时记得给hotcopyer用户权限。 mysql> grant insert on hotcopy.checkpoint to hotcopyer@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) mysql> quit; 4、备份数据(写入数据库{备份的结果},增量备份) /usr/local/mysql/bin/mysqlhotcopy --user=root --password=mysql --checkpoint=hotcopy.checkpoint --addtodest radius /bak

5、查看 mysql> show databases; +--------------------+ | Database           | +--------------------+ | information_schema | | 1234la             | | conntrack          | | hotcopy            | | mysql              | | pinphp             | | radius             | | test               | | vod                | | web                | +--------------------+ 10 rows in set (0.00 sec) mysql> show tables; +-------------------+ | Tables_in_hotcopy | +-------------------+ | checkpoint        | +-------------------+ 1 row in set (0.00 sec) mysql> select * from checkpoint; +---------------------+--------+---------------+-----------+ | time_stamp          | src    | dest          | msg       | +---------------------+--------+---------------+-----------+ | 2012-08-25 21:50:26 | radius | /bak/radius   | Succeeded | +---------------------+--------+---------------+-----------+ 1 row in set (0.00 sec) mysql>

本文出自 “幼兒園童鞋” 博客,请务必保留此出处http://yangxiaofei.blog.51cto.com/2910082/973165

查看本栏目更多精彩内容:http://www.bianceng.cn/database/MySQL/

(编辑:济南站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读