1#
2# Backup server using keyring_file and restore using keyring_vault
3#
4
5require_server_version_higher_than 5.7.10
6
7vlog setup keyring_file
8. inc/keyring_file.sh
9
10start_server
11
12run_cmd $MYSQL $MYSQL_ARGS test <<EOF
13CREATE TABLE t1 (c1 VARCHAR(100)) ENCRYPTION='y';
14INSERT INTO t1 (c1) VALUES ('ONE'), ('TWO'), ('THREE');
15INSERT INTO t1 (c1) VALUES ('10'), ('20'), ('30');
16INSERT INTO t1 SELECT * FROM t1;
17INSERT INTO t1 SELECT * FROM t1;
18EOF
19
20record_db_state test
21
22# wait for InnoDB to flush all dirty pages
23innodb_wait_for_flush_all
24
25vlog backup
26xtrabackup --backup --target-dir=$topdir/backup1 --transition-key=key1
27
28vlog cleanup environment variables
29MYSQLD_EXTRA_MY_CNF_OPTS=
30XB_EXTRA_MY_CNF_OPTS=
31
32vlog setup keyring_vault
33. inc/keyring_vault.sh
34
35cat > ${topdir}/my-copy-back.cnf <<EOF
36[mysqld]
37datadir=${MYSQLD_DATADIR}
38${MYSQLD_EXTRA_MY_CNF_OPTS:-}
39
40[xtrabackup]
41${XB_EXTRA_MY_CNF_OPTS:-}
42EOF
43
44vlog remove datadir
45stop_server
46rm -rf $mysql_datadir
47
48vlog prepare
49xtrabackup --prepare --target-dir=$topdir/backup1 --transition-key=key1
50
51keyring_vault_ping || skip_test "Keyring vault server is not avaliable"
52keyring_vault_mount
53
54trap "keyring_vault_unmount" EXIT
55
56vlog copy-back
57run_cmd ${XB_BIN} --defaults-file=${topdir}/my-copy-back.cnf --copy-back \
58	--target-dir=$topdir/backup1 --generate-new-master-key \
59	 --transition-key=key1 \
60	--xtrabackup-plugin-dir=${plugin_dir}
61
62start_server
63
64verify_db_state test
65