您的位置:首页 > 数据库 > MySQL

xtrabackup执行备份要拥有的权限

2017-05-19 18:09 330 查看
xtrabackup备份的原理:
  xtrabackup直接复制datadir目录中的文件到备份目录下。这样问题就来了,在备份的时候mysql可以还在执行写入操作;所以xtrabackup会不停的去扫描MySQL的
  redo_log,也就是说备份集中一来会保存数据文件,二来还会保存日志文件;注意这个时候备份并不是一致的,原因是有的事务提交了,但是也只是写把变更写到了redo_log
  中,并还没有把变更写到数据文件当中去。由于这个原因我们要前滚redo_log以应用那些已经提交了的事务。

xtrabackup备份需要的权限:
  1、MySQL层面:由于要备份MYISAM引擎的表(xtrabackup不能备份MYISAM表,但是它的包装器innobackup可以备份这种表)所以要用到RELOAD,LOCK TABLE。
          这个权限用于执行FLUSH TABLES WITH READ LOCK、FLUSH ENGINE LOGS。
  2、MYSQL层面:REPLICATION CLIENT 这个权限为的是查看二进制日志当前写到了那个位置。
  3、MySQL层面:PROCESS 查看MySQL相关连接的进程。
  4、MySQL层面:SUPPER 用于在复制环境中执行stop slave | start slave。
  5、MySQL层面:create、insert、select;这是因为xtrabackup会创建一个它自己用的表对象。
  6、综上所述创建用于xtrabackup备份用户的SQL语句为
          grant RELOAD,LOCK TABLES,REPLICATION CLIENT,PROCESS,SUPER,CREATE,INSERT,SELECT on *.*
          to xtraback@'localhost' identified by 'xtraback';
  7、Linux文件系统层面:由于要写入,读取;所以用户要有对应备份目录的wrx权限。对datadir目录要rx权限。
  8、在linux系统中创建一个用于执行备份的用户
          root> useradd xtrabackupuser
          root>echo 'xtrabackupuser' | passwd --stdin xtrabackupuser
          root>mkdir /mysql_backup && chown xtrabackupuser.xtrabackupuser /mysql_backup

xtrabackup备份例子:用xtrabckupuser创建一个全备
          root> su - xtrabackupuser
          xtrabackupuser> innobackup --user=xtraback --password=xtraback /mysql_backup
          #看清楚了没有,明白了吧,只要给了它MySQL、Linux这两个层面的权限就可以执行备份了。
          
由于xtrabackup还要记录一些操作日志到mysql数据中,总的来说它要用到的所有权限如下:
create user xtrabackup@'localhost' identified by 'xtrabackup';grant reload,lock tables,replication client,create tablespace,process,super on *.* to xtrabackup@'localhost' ;grant create,insert,select on percona_schema.* to xtrabackup@'localhost' ;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql 二进制 包装