加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

mysql中mysqlhotcopy备份使用详解

发布时间:2022-06-20 14:18:03 所属栏目:MySql教程 来源:互联网
导读:在mysql中备份数据库有mysqldump与mysqlhotcopy常用方法,不过mysqldump是mysql安装好后可直接使用的,mysqlhotcopy需要安装perl支持,因为mysqlhotcopy是prel语言写的. 1,安装,mysql已经安装好m在/usr/local/mysql目录下,代码如下: yum -y install perl perl-D
  在mysql中备份数据库有mysqldump与mysqlhotcopy常用方法,不过mysqldump是mysql安装好后可直接使用的,mysqlhotcopy需要安装perl支持,因为mysqlhotcopy是prel语言写的.
 
  1,安装,mysql已经安装好m在/usr/local/mysql目录下,代码如下:
 
  yum -y install perl perl-DBI
  wget http://file.phpfensi.com/upload/2013/12/DBD-mysql-3.0002.tar.gz
  tar zxvf  DBD-mysql-3.0002.tar.gz
  cd DBD-mysql-3.0002
  
  2,备份某个数据库,代码如下:
 
  mkdir -p /data/word/
  /usr/local/mysql/bin/mysqlhotcopy –user=root –password=123456  word /data/word
  可以打包,假如打包名称为word.tar.gz.
 
  3,恢复
 
  停止mysql数据库,修改权限,启动mysql.
 
  例,mysqlhotcopy + binlog 实现mysql增量备份
 
  mysqlhotcopy只是简单的缓存写入和文件复制的过程,占用资源和备份速度比mysqldump快很多很多,特别适合大的数据库,它使用LOCK TABLES、FLUSH TABLES和cp或scp来快速备份数据库,它是备份数据库或单个表的最快的途径,只能运行在数据库目录所在的机器上.
 
  注意:mysqlhotcopy只支持MyISAM引擎.
 
  1.安装依赖包:
 
  mysqlhotcopy是perl语言写的,因此需要安装perl的连接mysql的驱动,代码如下:
 
  # yum install perl-DBI.x86_64  
 
  # yum install perl-DBD-MySQL.x86_64
 
  2.mysqlhotcopy常用参数:
 
  -–allowold 如果目标存在不退出(加上一个_old后缀重新命名它)
 
  -–addtodest 增量备份,新的备份自动覆盖掉原备份.
 
  -–checkpoint=db_name.tbl_name 在指定的数据库,表中插入检查点条目。
 
  -–debug 启用调试输出。
 
  -–dryrun,-n 报告动作而不执行它们。
 
  -–flushlog 所有表锁定后刷新日志。
 
  -–keepold 完成后不删除以前(重新命名的)的目标。
 
  -–method=command 复制方法(cp或scp)。
 
  -–noindices 备份中不包括全部索引文件。这样使备份更小、更快。可以在以后用myisamchk -rq重新构建索引。
 
  -–user=user_name,-u user_name 当连接服务器时使用的MySQL用户名。
 
  -–password=password,-p password 当连接服务器时使用的密码,请注意该选项的密码值是不可选的,不象其它MySQL程序。
 
  
  –resetslave 所有表锁定后reset master.info
 
  –record_log_pos=db.table 指定记录slave和master信息的表
 
  3.创建记录slave和master信息的表,代码如下:
 
  CREATE TABLE `mysqlhotcopy_log_pos` (  
   `host` varchar(60) NOT NULL,  
   `time_stamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE  
   `relog_log_pos` int(11) DEFAULT NULL,  
   PRIMARY KEY (`host`)  
  ) ENGINE=MyISAM DEFAULT CHARSET=utf8
  注意:mysqlhotcopy脚本没有记录relay_log_file和relog_log_pos值,同时,也不会把这些信息写入到文件,后面记录relay log和pos值信息和写入到文件是因我改了mysqlhotcopy脚本内容.
 
  4.专用用户权限,代码如下:
 
  grant select, reload, lock tables on *.* to 'mysqlbackup'@'localhost' identified by 'www.phpfensi.com';   
  grant select, delete, update, insert on mysql.mysqlhotcopy_log_pos to 'mysqlbackup'@'localhost' identified by 'www.phpfensi.com';
  5.正则使用
 
  如果只想热备其中的一部分数据就有可能用到正则了,5.1 数据库名匹配,比如:备份以ttlsa开头的库,可以使用:
 
  # mysqlhotcopy --flushlog -u='mysqlbackup' -p='www.phpfensi.com' --regexp= ^ttlsa /backup/mysqlback
  
  # mysqlhotcopy --flushlog -u='mysqlbackup' -p='www.phpfensi.com' ttlsa_com./^user/ /backup/mysqlback
 
  备份ttlsa_com库除user_log开头的表,代码如下:
 
  # mysqlhotcopy --flushlog -u='mysqlbackup' -p='www.phpfensi.com' ttlsa_com./~^user_log/ /backup/mysqlback
 
  备份ttlsa_com库以user_0,user_1,user_2……,user_9开头的表,代码如下:
 
  # mysqlhotcopy --flushlog -u='mysqlbackup' -p='www.phpfensi.com' ttlsa_com./^(user_[0-9])/ /backup/mysqlback

(编辑:云计算网_泰州站长网)

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

    热点阅读