差分バックアップ

 

(8.0.20)
-- MySQL Enterprise Backupのインストール

MySQL本体のバージョンと一致している必要がある

rpm -ivh mysql-commercial-backup-8.0.20-1.1.el7.x86_64.rpm


-- テストテーブル作成
drop table tab1;
create table tab1(col1 int);
insert into tab1 values(1);
select * from tab1;

-- 完全バックアップ

rm -rf /tmp/backups/*
mkdir -p /tmp/backups/001

 

mysqlbackup --defaults-file=/etc/my.cnf --backup-dir=/tmp/backups/001 backup-and-apply-log

-- データ追加
insert into tab1 values(2);
select * from tab1;


-- 差分バックアップ
mkdir -p /tmp/backups/002

mysqlbackup --defaults-file=/etc/my.cnf --incremental \
--incremental-base=dir:/tmp/backups/001 \
--incremental-backup-dir=/tmp/backups/002 \
backup

-- 完全バックアップに差分バックアップをマージ
mysqlbackup --backup-dir=/tmp/backups/001 apply-log

mysqlbackup --incremental-backup-dir=/tmp/backups/002 \
--backup-dir=/tmp/backups/001 apply-incremental-backup

-- データ追加
insert into tab1 values(3);
select * from tab1;


-- 差分バックアップ後の時点にリストア

mysqladmin shutdown

rm -rf /var/lib/mysql

mysqlbackup --defaults-file=/etc/my.cnf \
--backup-dir=/tmp/backups/001 \
--datadir=/var/lib/mysql \
copy-back-and-apply-log

chown -R mysql:mysql /var/lib/mysql

systemctl start mysqld
systemctl status mysqld


-- データ確認
select * from tab1;

 

(12cR1)

-- テストテーブル作成
drop table tab1 purge;
create table tab1(col1 int);
insert into tab1 values(1);
commit;
select * from tab1;

-- 完全バックアップ

rman target /
list backup;
backup incremental level 0 database plus archivelog;


-- SCN確認、データ追加
select current_scn from v$database;
insert into tab1 values(2);
commit;
select * from tab1;

-- 差分バックアップ

rman target /
list backup;
backup incremental level 1 database plus archivelog;

-- SCN確認、データ追加
select current_scn from v$database;
insert into tab1 values(3);
commit;
select * from tab1;


-- 差分バックアップ後の時点にリストア

rman target /

shutdown immediate;
startup mount;

restore database until scn 268926907;
recover database until scn 268926907;
alter database open resetlogs;

-- データ確認
select * from tab1;

 

(11)

-- pg_rmanのインストール

yum install https://github.com/ossc-db/pg_rman/releases/download/V1.3.9/pg_rman-1.3.9-1.pg11.rhel7.x86_64.rpm

-- アーカイブモードの設定
mkdir -p /var/lib/pgsql/11/archive

vim postgresql.conf

archive_mode = on
archive_command = 'test ! -f /var/lib/pgsql/11/archive/%f && cp %p /var/lib/pgsql/11/archive/%f'

sudo systemctl restart postgresql-11

-- テストテーブル作成
drop table tab1;
create table tab1(col1 int);
insert into tab1 values(1);
select * from tab1;

-- pg_rmanの初期化
mkdir -p /var/lib/pgsql/11/backup
export BACKUP_PATH=/var/lib/pgsql/11/backup

/usr/pgsql-11/bin/pg_rman init

-- 完全バックアップ
/usr/pgsql-11/bin/pg_rman backup --backup-mode=full --with-serverlog --progress


-- バックアップデータの検証
/usr/pgsql-11/bin/pg_rman validate
/usr/pgsql-11/bin/pg_rman show


-- トランザクションID確認、データ追加
SELECT txid_current();
insert into tab1 values(2);
select * from tab1;

 

-- 差分バックアップ
/usr/pgsql-11/bin/pg_rman backup --backup-mode=incremental --with-serverlog --progress

-- バックアップデータの検証
/usr/pgsql-11/bin/pg_rman validate
/usr/pgsql-11/bin/pg_rman show

-- トランザクションID確認、データ追加
SELECT txid_current();
insert into tab1 values(3);
select * from tab1;


-- 差分バックアップ後の時点にリストア
sudo systemctl stop postgresql-11


/usr/pgsql-11/bin/pg_rman restore --recovery-target-xid=961

sudo systemctl start postgresql-11

-- データ確認
select * from tab1;

 

 

(2014)

-- テストテーブル作成
drop table tab1;
create table tab1(col1 int);
insert into tab1 values(1);
select * from tab1;

-- 完全バックアップ

use test;
go
backup database test
to disk = 'C:\backup\bk01.bak'
with format,
medianame = 'bk01',
name = 'full backup of test';


-- LSN確認、データ追加
begin transaction tran001 with mark 'insert tab1 2';
go
insert into tab1 values(2);
go
commit transaction tran001;
go

select * from tab1;
select * from msdb.dbo.logmarkhistory;


-- 差分バックアップ

use test;
go
backup database test
to disk = 'C:\backup\bk02.bak'
with differential,
format,
medianame = 'bk02',
name = 'differential backup of test';

-- LSN確認、データ追加
begin transaction tran002 with mark 'insert tab1 3';
go
insert into tab1 values(3);
go
commit transaction tran002;
go

select * from tab1;
select * from msdb.dbo.logmarkhistory;


-- トランザクションログバックアップ

use test;
go
backup log test
to disk = 'C:\backup\bk03.bak'
with format,
medianame = 'bk03',
name = 'log backup of test';


-- 差分バックアップ後データ追加前の時点にリストア

use master
go

restore database test
from disk = 'C:\backup\bk01.bak'
with norecovery, replace;


restore database test
from disk = 'C:\backup\bk02.bak'
with norecovery;

restore log test
from disk = 'C:\backup\bk03.bak'
with recovery, stopbeforemark = 'lsn:35000000039700003';


-- データ確認
use test;
go
select * from tab1;