更新时间:2024-06-06 14:24:11

Linux 主机版备份前置条件检查

备份需要保证MySQL实例在线,环境正常可用。

  1. 确认要备份的数据库可以正常连接使用。

    使用命令在数据库查看数据库实例是否存在:

    ps -ef|grep mysql

    image5.png

  2. 确认MySQL开启了binlog日志,并将日志模式设置为 “ROW”模式。

    使用命令在数据库查看是否开启了日志模式:

    show variables like 'log_bin';

    image6.png

    如果没有开启,可通过修改MySQL配置文件my.cnf开启:

    [mysqld] 中,添加以下内容:

    log_bin=mysql_bin

    binlog_format="ROW"

    image7.png

    注意:若添加该命令后导致MySQL服务无法启动,则需要在my.cnf[mysqld] 下再添加server_id = 1,保存后即可重新启动MySQL服务。

    如果要关闭掉binlog,需要先关掉实例服务,可以先执行ps -ef|grep mysql查询到实例的进程ID,然后 执行kill -9 进程ID。之后修改配置文件my.cnf,注释掉log_binbinlog_formatserver_id字段,然后在 [mysqld] 下添加skip-log-bin,之后使用守护进程重启实例服务,命令为mysql_safe --defaults-file=/etc/my.cnf --user=mysql &。登录mysql实例服务,执行show variables like “log_bin”;后可以看到binlog处于OFF状态。

  3. 确认MySQL安装用户能够通过netstat命令查到MySQL进程端口。

    在root用户下执行:which netstat,查询netstat工具的路径。

    image8.png

    image9.png

    在root用户下执行:chmod +s /usr/bin/netstatchmod +s /bin/netstat,使MySQL用户拥有root权限执行netstat程序。

    在MySQL安装用户下输入命令netstat -nap|grep mysqld,查到MySQL进程对应端口。

    image10.png

  4. 确认用于备份用户的权限,指定某用户进行备份,需要给用户授予相应的权限才使用备份恢复功能。

    • MySQL物理备份需要开启数据库远程用户访问权限。

    • 物理备份的用户权限请参照以下表格:

      版本 备份恢复所需权限
      MySQL 5.x PROCESS, RELOAD, LOCK TABLES, REPLICATION CLIENT, REPLICATION SLAVE, SHUTDOWN, SUPER, CREATE, ALTER, INSERT, SELECT。
      MySQL 8.x PROCESS, RELOAD, LOCK TABLES, REPLICATION CLIENT, REPLICATION SLAVE, SHUTDOWN, SUPER, BACKUP_ADMIN , CREATE, ALTER, INSERT, SELECT。

    注意:

    • 可登录数据库,通过show grants for 'xxx'@'%';查看xxx用户权限。
    • 若权限不是以上说明所需的权限,请按照以上方法给用户授予对应的权限。
    • MySQL root用户一般具有物理备份所需的权限。
    • 确认客户端主机上mysql数据库版本号,如果版本号是5.5,物理备份时不建议使用归档日志备份,因为mysql5.5没有GTID选项,导致归档日志备份的数据在进行恢复时会出现数据丢失等未知情况。同时物理备份的增量备份和差异备份的数据不建议进行不完全恢复,原因同样是mysql5.5没有GTID选项,会导致恢复数据丢失等未知情况。

TDSQL 备份前置条件检查

  1. 用于数据库备份与恢复的账号需要在赤兔平台上授予所有权限,如下图为创建用户时授予的权限:

    image11.png

    创建登录用户界面

    image12.png

    勾选用户权限界面

  2. 登录集群主机,通过SQL命令将步骤1创建的用户,授予BACKUP_ADMIN权限:

    GRANT BACKUP_ADMIN ON *.* TO '用户名'@'%';
    GRANT BACKUP_ADMIN ON *.* TO '用户名'@'localhost';