xtrabackup执行备份要拥有的权限

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' ;
原文地址:https://www.cnblogs.com/JiangLe/p/4837196.html