- 生成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:使用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
- 加密方式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
- 加密方式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备份数据库的时候,表空间没有加密,那么添加这个参数将会被忽略