728x90
반응형

0. Percona XtraBackup 2.4 설치

Percona 최신 Repository  설치를 위하여 다음 수행

yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm

최신 버전의 xtrabackup 확인

yum list | grep percona-xtrabackup

percona-xtrabackup-24.x86_64             2.4.9-1.el7                     @percona-release-x86_64

percona-xtrabackup.x86_64                2.3.10-1.el7                    percona-release-x86_64

percona-xtrabackup-22.x86_64             2.2.13-1.el7                    percona-release-x86_64

percona-xtrabackup-22-debuginfo.x86_64   2.2.13-1.el7                    percona-release-x86_64

percona-xtrabackup-24-debuginfo.x86_64   2.4.9-1.el7                     percona-release-x86_64

percona-xtrabackup-debuginfo.x86_64      2.3.10-1.el7                    percona-release-x86_64

percona-xtrabackup-test.x86_64           2.3.10-1.el7                    percona-release-x86_64

percona-xtrabackup-test-22.x86_64        2.2.13-1.el7                    percona-release-x86_64

percona-xtrabackup-test-24.x86_64        2.4.9-1.el7                     percona-release-x86_64

Xtrabackup 2.4 설치

yum install percona-xtrabackup-24.x86_64 -y

Xtrabackup 2.4 설치 확인

yum list installed | grep percona-xtrabackup

percona-xtrabackup-24.x86_64         2.4.9-1.el7                    @percona-release-x86_64

 

1. xtrabackup을 수행 할 유저 생성

 

로컬 백업을 위한 유저 생성

 

CREATE USER 'xtrabackup'@'localhost' IDENTIFIED BY 'xtra' ;

GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'xtrabackup'@'localhost' ;

FLUSH PRIVILEGES ;

원격 백업이 필요할 경우 사용할 유저 생성

 

CREATE USER 'xtrabackup'@'%' IDENTIFIED BY 'xtra' ;

GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'xtrabackup'@'%' ;

FLUSH PRIVILEGES ;

 

백업 경로 설정

 

mkdir /xbackup

mkdir /xbackup/maria5

mkdir /xbackup/maria10

chown -R mysql:mysql /xbackup

 

xtrabackup은 기본적으로 my.cnf파일의 [mysqld] 와 [xtrabackup] 섹션의 값을 참조 한다.

[mysqld] 섹션에서는 datadir 값을 참조하고 , [xtrabackup] 섹션에서는 백업 경로인 target_dir 값을 참조한다.

각각의 섹션에 저장되지 않은 값은 command-line에서 지정해서 사용할 있다.

/etc/my.cnf 파일에 접근이 안 될 경우, mysqld 기동 시 사용된 옵션을 이용한다. (/etc/my.cnf 파일이 없을 경우 basedir 안의 my.cnf 파일을 사용 함)

 

테스트 환경에서는 서버에 Maria10 / Maria5 설치 되어 있어서 socket 옵션을 주고 수행 시킴.

 

[root@CMaria maria5.5.58]# ps -ef | grep mysqld

root     30373 30226  0 17:39 pts/1    00:00:00 /bin/sh /usr/local/mariadb5/bin/mysqld_safe --basedir=/usr/local/mariadb5 --datadir=/maria5.5.58 --plugin-dir=/usr/local/mariadb5/lib/plugin --user=mysql --log-error=/maria5.5.58/CMaria.err --open-files-limit=8192 --pid-file=/maria5.5.58/CMaria.pid --socket=/tmp/mysql5.sock --port=3305

mysql    31110 30373  0 17:39 pts/1    00:00:00 /usr/local/mariadb5/bin/mysqld --basedir=/usr/local/mariadb5 --datadir=/maria5.5.58 --plugin-dir=/usr/local/mariadb5/lib/plugin --user=mysql --log-error=/maria5.5.58/CMaria.err --open-files-limit=8192 --pid-file=/maria5.5.58/CMaria.pid --socket=/tmp/mysql5.sock --port=3305

 

root     31141 30226  0 17:39 pts/1    00:00:00 /bin/sh /usr/local/mariadb10/bin/mysqld_safe --basedir=/usr/local/mariadb10 --datadir=/maria10.2.10 --plugin-dir=/usr/local/mariadb10/lib/plugin --user=mysql --log-error=/maria10.2.10/CMaria.err --pid-file=/maria10.2.10/CMaria.pid --socket=/tmp/mysql10.sock --port=3310

mysql    31287 31141  0 17:39 pts/1    00:00:00 /usr/local/mariadb10/bin/mysqld --basedir=/usr/local/mariadb10 --datadir=/maria10.2.10 --plugin-dir=/usr/local/mariadb10/lib/plugin --user=mysql --log-error=/maria10.2.10/CMaria.err --pid-file=/maria10.2.10/CMaria.pid --socket=/tmp/mysql10.sock --port=3310

 

2. Xtrabackup  실행 (Maria5.x 버전 백업 수행)

 

FULL backup 수행

 

/usr/bin/innobackupex --defaults-file=/usr/local/mariadb5/my.cnf --user xtrabackup --password xtra --socket=/tmp/mysql5.sock /xbackup/maria5

중략.....

...... /xbackup/maria5/2017-12-01_16-15-32/.....

171130 17:44:10 completed OK!

백업 변경된 내용을 반영하기 위하여 로그 파일을 읽어서 백업 파일에 반영

 

/usr/bin/innobackupex --defaults-file=/usr/local/mariadb5/my.cnf --apply-log /xbackup/maria5/2017-12-01_16-15-32

 

로그 까지 반영이 끝난 후의 백업 디렉토리 내용.

 

[root@CMaria ~]# ls -al /xbackup/maria5/2017-12-01_16-15-32

total 825372

drwxr-x--- 6 root  root        323 Dec  1 16:16 .

drwxr-xr-x 8 mysql mysql       168 Dec  1 16:15 ..

-rw-r----- 1 root  root        419 Dec  1 16:15 backup-my.cnf

-rw-r----- 1 root  root   18874368 Dec  1 16:16 ibdata1

-rw-r----- 1 root  root  268435456 Dec  1 16:16 ib_logfile0

-rw-r----- 1 root  root  268435456 Dec  1 16:16 ib_logfile1

-rw-r----- 1 root  root  268435456 Dec  1 16:16 ib_logfile2

-rw-r----- 1 root  root   12582912 Dec  1 16:16 ibtmp1

drwxr-x--- 2 root  root         41 Dec  1 16:15 maria5

drwxr-x--- 2 root  root       4096 Dec  1 16:15 mysql

drwxr-x--- 2 root  root       4096 Dec  1 16:15 performance_schema

drwxr-x--- 2 root  root         20 Dec  1 16:15 test

-rw-r----- 1 root  root         21 Dec  1 16:15 xtrabackup_binlog_info

-rw-r--r-- 1 root  root         23 Dec  1 16:16 xtrabackup_binlog_pos_innodb

-rw-r----- 1 root  root        113 Dec  1 16:16 xtrabackup_checkpoints

-rw-r----- 1 root  root        555 Dec  1 16:15 xtrabackup_info

-rw-r----- 1 root  root    8388608 Dec  1 16:16 xtrabackup_logfile

 

3. 복구 테스트를 위하여 데이터 삭제

 

[root@CMaria ~]# mysql5 -uroot -p

Enter password:

Welcome to the MariaDB monitor.  Commands end with ; or \g.

Your MariaDB connection id is 16

Server version: 5.5.58-MariaDB Source distribution

 

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

 

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

 

MariaDB [(none)]> show databases ;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| maria5             |

| mysql              |

| performance_schema |

| test               |

+--------------------+

5 rows in set (0.00 sec)

 

MariaDB [(none)]> use maria5 ;

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

 

Database changed

MariaDB [maria5]> show tables ;

+------------------+

| Tables_in_maria5 |

+------------------+

| test_enum        |

+------------------+

1 row in set (0.01 sec)

 

MariaDB [maria5]> select * from test_enum ;

+----+-----------+

| id | type_enum |

+----+-----------+

|  1 | c         |

|  2 | a         |

|  3 | a         |

|  4 | e         |

|  5 | a         |

|  6 | NULL      |

|  7 |           |

|  8 | z         |

|  9 | a         |

| 10 | A         |

| 11 | AbCd      |

| 12 | AbCd      |

| 13 | AbCd      |

+----+-----------+

13 rows in set (0.00 sec)

 

MariaDB [maria5]> delete from test_enum where id > 10 ;

Query OK, 3 rows affected (0.08 sec)

 

MariaDB [maria5]> commit ;

Query OK, 0 rows affected (0.00 sec)

 

MariaDB [maria5]> select * from test_enum ;

+----+-----------+

| id | type_enum |

+----+-----------+

|  1 | c         |

|  2 | a         |

|  3 | a         |

|  4 | e         |

|  5 | a         |

|  6 | NULL      |

|  7 |           |

|  8 | z         |

|  9 | a         |

| 10 | A         |

+----+-----------+

10 rows in set (0.00 sec)

 

MariaDB [maria5]> exit

Bye

 

4. 복구

백업 이후에 변경된 로그를 적용해서 마지막 데이터 까지 살리고자 한다면, --copy-back 전에 복구에 사용할 백업 디렉토리에 --apply-log 옵션을 이용하여 데이터를

최신의 데이터로 반영해 주고 --copy-back 옵션을 주어서 복구를 하면 된다.

그러나 여기 시나리오에서는 지워진 테이블의 데이터를 삭제 이전으로 돌리기 위한 시나리오 였으므로 -- apply-log 적용하지 않고 백업 시점으로 DB 되돌린다.

 

/usr/bin/innobackupex --defaults-file=/usr/local/mariadb5/my.cnf --copy-back /xbackup/maria5/2017-12-01_16-15-32

171201 16:24:08 innobackupex: Starting the copy-back operation

 

IMPORTANT: Please check that the copy-back run completes successfully.

           At the end of a successful copy-back run innobackupex

           prints "completed OK!".

 

/usr/bin/innobackupex version 2.4.9 based on MySQL server 5.7.13 Linux (x86_64) (revision id: a467167cdd4)

Error: datadir must be specified.

 

/usr/local/mariadb5/my.cnf 파일에 datadir 값이 지정되지 않았음. 그래서 옵션으로 지정해

 

/usr/bin/innobackupex --defaults-file=/usr/local/mariadb5/my.cnf --datadir=/maria5.5.58 --copy-back /xbackup/maria5/2017-12-01_16-15-32

171201 16:26:13 innobackupex: Starting the copy-back operation

 

IMPORTANT: Please check that the copy-back run completes successfully.

           At the end of a successful copy-back run innobackupex

           prints "completed OK!".

 

/usr/bin/innobackupex version 2.4.9 based on MySQL server 5.7.13 Linux (x86_64) (revision id: a467167cdd4)

Original data directory /maria5.5.58 is not empty!

 

datadir 파일이 하나도 없어야 .

 

[root@CMaria ~]# cd /maria5.5.58

[root@CMaria maria5.5.58]# ls

aria_log.00000001  CMaria.err       ibdata1      ib_logfile1  maria5  mysql-bin.000001  mysql-bin.000003  mysql-bin.000005  mysql-bin.000007  mysql-bin.000009  mysql-bin.000011  performance_schema

aria_log_control   CMaria-slow.log  ib_logfile0  ib_logfile2  mysql   mysql-bin.000002  mysql-bin.000004  mysql-bin.000006  mysql-bin.000008  mysql-bin.000010  mysql-bin.index   test

[root@CMaria maria5.5.58]# rm -rf *

[root@CMaria maria5.5.58]# ls

[root@CMaria maria5.5.58]# pwd

/maria5.5.58

 

/usr/bin/innobackupex --defaults-file=/usr/local/mariadb5/my.cnf --datadir=/maria5.5.58 --copy-back /xbackup/maria5/2017-12-01_16-15-32

171201 16:28:18 innobackupex: Starting the copy-back operation

 

IMPORTANT: Please check that the copy-back run completes successfully.

           At the end of a successful copy-back run innobackupex

           prints "completed OK!".

 

/usr/bin/innobackupex version 2.4.9 based on MySQL server 5.7.13 Linux (x86_64) (revision id: a467167cdd4)

171201 16:28:18 [01] Copying ib_logfile0 to /maria5.5.58/ib_logfile0

171201 16:28:19 [01]        ...done

중략...

171201 16:28:29 completed OK!

 

5. 디비 기동

 

xtrabackup 명령을 root 수행하고, 복구도 root 하니 datadir copy 데이터들이 모두 root 권한으로 되어 있어서 DB 기동 되지 않음.

datadir 모든 파일들의 권한을 변경 시켜 줘야 .

 

[root@CMaria maria5.5.58]# cd /maria5.5.58

[root@CMaria maria5.5.58]# ls -al

total 817188

drwxr-xr-x   6 mysql mysql       306 Dec  1 16:29 .

dr-xr-xr-x. 20 root  root       4096 Nov 30 16:43 ..

-rw-rw----   1 mysql mysql      8192 Dec  1 16:29 aria_log.00000001

-rw-rw----   1 mysql mysql        52 Dec  1 16:29 aria_log_control

-rw-rw----   1 mysql mysql       951 Dec  1 16:29 CMaria.err

-rw-r-----   1 root  root   18874368 Dec  1 16:28 ibdata1

-rw-r-----   1 root  root  268435456 Dec  1 16:28 ib_logfile0

-rw-r-----   1 root  root  268435456 Dec  1 16:28 ib_logfile1

-rw-r-----   1 root  root  268435456 Dec  1 16:28 ib_logfile2

-rw-r-----   1 root  root   12582912 Dec  1 16:28 ibtmp1

drwxr-x---   2 root  root         41 Dec  1 16:28 maria5

drwxr-x---   2 root  root       4096 Dec  1 16:28 mysql

-rw-rw----   1 mysql mysql         0 Dec  1 16:29 mysql-bin.index

drwxr-x---   2 root  root       4096 Dec  1 16:28 performance_schema

drwxr-x---   2 root  root         20 Dec  1 16:28 test

-rw-r-----   1 root  root         23 Dec  1 16:28 xtrabackup_binlog_pos_innodb

-rw-r-----   1 root  root        555 Dec  1 16:28 xtrabackup_info

[root@CMaria maria5.5.58]# chown -R mysql:mysql /maria5.5.58

[root@CMaria maria5.5.58]# ls -al

total 817188

drwxr-xr-x   6 mysql mysql       306 Dec  1 16:29 .

dr-xr-xr-x. 20 root  root       4096 Nov 30 16:43 ..

-rw-rw----   1 mysql mysql      8192 Dec  1 16:29 aria_log.00000001

-rw-rw----   1 mysql mysql        52 Dec  1 16:29 aria_log_control

-rw-rw----   1 mysql mysql       951 Dec  1 16:29 CMaria.err

-rw-r-----   1 mysql mysql  18874368 Dec  1 16:28 ibdata1

-rw-r-----   1 mysql mysql 268435456 Dec  1 16:28 ib_logfile0

-rw-r-----   1 mysql mysql 268435456 Dec  1 16:28 ib_logfile1

-rw-r-----   1 mysql mysql 268435456 Dec  1 16:28 ib_logfile2

-rw-r-----   1 mysql mysql  12582912 Dec  1 16:28 ibtmp1

drwxr-x---   2 mysql mysql        41 Dec  1 16:28 maria5

drwxr-x---   2 mysql mysql      4096 Dec  1 16:28 mysql

-rw-rw----   1 mysql mysql         0 Dec  1 16:29 mysql-bin.index

drwxr-x---   2 mysql mysql      4096 Dec  1 16:28 performance_schema

drwxr-x---   2 mysql mysql        20 Dec  1 16:28 test

-rw-r-----   1 mysql mysql        23 Dec  1 16:28 xtrabackup_binlog_pos_innodb

-rw-r-----   1 mysql mysql       555 Dec  1 16:28 xtrabackup_info

 

 

[root@CMaria maria5.5.58]# mysql5 -uroot -p

Enter password:

Welcome to the MariaDB monitor.  Commands end with ; or \g.

Your MariaDB connection id is 1

Server version: 5.5.58-MariaDB Source distribution

 

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

 

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

 

MariaDB [(none)]> show databases ;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| maria5             |

| mysql              |

| performance_schema |

| test               |

+--------------------+

5 rows in set (0.00 sec)

 

MariaDB [(none)]> use maria5 ;

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

 

Database changed

MariaDB [maria5]> show tables ;

+------------------+

| Tables_in_maria5 |

+------------------+

| test_enum        |

+------------------+

1 row in set (0.00 sec)

 

MariaDB [maria5]> select * from test_enum ;

+----+-----------+

| id | type_enum |

+----+-----------+

|  1 | c         |

|  2 | a         |

|  3 | a         |

|  4 | e         |

|  5 | a         |

|  6 | NULL      |

|  7 |           |

|  8 | z         |

|  9 | a         |

| 10 | A         |

| 11 | AbCd      |

| 12 | AbCd      |

| 13 | AbCd      |

+----+-----------+

13 rows in set (0.01 sec)


반응형

+ Recent posts