1. 生成key
  #使用shasum生成
  echo -n "123456" | shasum -a 256
  8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92  -   #注意后面的中划线不算,共64个字符
  注意:这种生成的密钥串mysqlbackup可以使用,但是xtrabackup不能使用,使用的过程中会报错

  #使用md5sum生成
  echo "123456" |md5sum
  f447b20a7fcbf53a5d5be013ea0b15af  -    #注意后面的中划线不算,
  注意:通过md5sum生成的密钥串mysqlbackup不能使用,会报错:Invalid encryption key given. It should be a string of 64 hexadecimal digits.
  1. 加密方式1:使用key
  #备份
  mysqlbackup --defaults-file=/etc/my.cnf --backup-dir=/tmp/fullbak --backup-image=/data/backup/full.mbi.enc --user=mysqlbackup -p'Abc@12345678' --read-threads=4 --process-threads=8 --write-threads=4 --compress --encrypt --  key=8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92  backup-to-image >>/data/backup/bak.log 2>&1

  #恢复
  mysqlbackup --defaults-file=/etc/my.cnf --backup-image=/data/backup/full.mbi.enc  --backup-dir=/tmp/mysqlrestore --datadir=/data/mysql/data --decrypt  --key=8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92  copy-back-and-apply-log
  1. 加密方式2:使用key-file
  #生成keyfile
  echo -n "123456" | shasum -a 256 >/tmp/bakey

  #备份
  mysqlbackup --defaults-file=/etc/my.cnf --backup-dir=/tmp/fullbak --backup-image=/data/backup/full.mbi.enc --user=mysqlbackup -p'Abc@12345678' --read-threads=4 --process-threads=8 --write-threads=4 --compress --encrypt --key-file=/tmp/bakey  backup-to-image >>/data/backup/bak.log 2>&1

  #校验(需要指定解密和解密的key,不然会报错)
  mysqlbackup --backup-image=/data/backup/full.mbi.enc --decrypt  --key-file=/tmp/bakey  validate
  
  #查看备份image中备份的文件(需要指定解密和解密的key,不然会报错)
  mysqlbackup --backup-image=/data/backup/full.mbi.enc --decrypt  --key-file=/tmp/bakey  list-image
  
  #恢复
  mysqlbackup --defaults-file=/etc/my.cnf --backup-image=/data/backup/full.mbi.enc  --backup-dir=/tmp/mysqlrestore --datadir=/data/mysql/data --decrypt  --key-file=/tmp/bakey  copy-back-and-apply-log
  1. 加密方式3:使用--encrypt-password参数
  #备份(密码明文)
  mysqlbackup --defaults-file=/etc/my.cnf --backup-dir=/tmp/fullbak --backup-image=/data/backup/full.mbi  --user=mysqlbackup -p'Abc@12345678' --read-threads=4 --process-threads=8 --write-threads=4 --compress --encrypt-password="123456"  backup-to-image >>/data/backup/bak.log 2>&1

  #恢复--不指定密码--成功
  mysqlbackup --defaults-file=/etc/my.cnf --backup-image=/data/backup/full.mbi   --backup-dir=/tmp/mysqlrestore --datadir=/data/mysql/data  copy-back-and-apply-log

  #恢复--指定密码--成功
  mysqlbackup --defaults-file=/etc/my.cnf --backup-image=/data/backup/full.mbi   --backup-dir=/tmp/mysqlrestore --datadir=/data/mysql/data  --encrypt-password="123456"  copy-back-and-apply-log

  

注意:我们会发现,在备份的时候我们指定了--encrypt-password,但是在恢复数据库的时候,即使我们不指定这个参数也能恢复成功,为什么呢???

 --encrypt-password参数只有在备份使用TED加密的表空间的时候才有用,如果使用mysqlbackup备份数据库的时候,表空间没有加密,那么添加这个参数将会被忽略