脚本解释
#!/bin/bash
# 在备份指定库时,可以使用--include参数,也可以使用--tables-file参数,把指定的库写在文件中
User="root"
Hostip=x.x.x.x
Passwd="x.x.x.x.x.x"
Tbname="fi_repayplan.fi_reapyplan,fi_repayplan.fi_reapyplan_bank_once,fi_repayplan.fi_reapyplan_boc,fi_repayplan.fi_reapyplan_ccb,fi_repayplan.fi_reapyplan_irr,fi_repayplan.fi_reapyplan_irrmoney,fi_repayplan.fi_reapyplan_money,fi_repayplan.fi_reapyplan_once,fi_reapyplan.fi_reapyplan_oncemoney"

innobackupex --user=${User} --password=${Passwd} --host=${Hostip} --no-timestamp --include=${Tbname} --stream=tar /tmp | gzip > /data/fi_repayplan-`date +%F`.tar.gz
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
逐行解释
  1. User="root": 设置 MySQL 用户名为 root
  2. Hostip=x.x.x.x: 设置 MySQL 服务器的 IP 地址。
  3. Passwd="x.x.x.x.x.x": 设置 MySQL 用户的密码。
  4. Tbname="fi_repayplan.fi_reapyplan,fi_repayplan.fi_reapyplan_bank_once,fi_repayplan.fi_reapyplan_boc,fi_repayplan.fi_reapyplan_ccb,fi_repayplan.fi_reapyplan_irr,fi_repayplan.fi_reapyplan_irrmoney,fi_repayplan.fi_reapyplan_money,fi_repayplan.fi_reapyplan_once,fi_repayplan.fi_reapyplan_oncemoney": 设置需要备份的表的名称列表。
  5. innobackupex --user=${User} --password=${Passwd} --host=${Hostip} --no-timestamp --include=${Tbname} --stream=tar /tmp | gzip > /data/fi_repayplan-date +%F.tar.gz: 这一行是备份操作的核心命令。
  • innobackupex: 执行 innobackupex 命令。
  • --user=${User}: 使用 $User 变量中的用户名登录 MySQL。
  • --password=${Passwd}: 使用 $Passwd 变量中的密码登录 MySQL。
  • --host=${Hostip}: 指定 MySQL 服务器的 IP 地址。
  • --no-timestamp: 不在备份文件中添加时间戳。
  • --include=${Tbname}: 指定需要备份的表列表。
  • --stream=tar: 将备份输出为 tar 格式。
  • /tmp: 指定备份输出的临时目录。
  • | gzip > /data/fi_repayplan-date +%F.tar.gz: 将 innobackupex 的输出通过 gzip 压缩,并将结果保存到 /data/fi_repayplan-date +%F.tar.gz 文件中。其中 date +%F 生成当前日期的格式为 YYYY-MM-DD,使得每次备份的文件名都带有当天的日期。
总结

这段脚本备份了指定的表,并将备份文件输出为 tar 格式,然后使用 gzip 压缩并保存到 /data 目录下,文件名中包含了当天的日期。这种方法适用于定期备份特定表的情况。