mysqlバックアップlvm
mysqlバックアップlvm
新しいlvmディスクを作成します.ここで私が作ったlvはmydatalvで、/dataの下にマウントされています.
元のデータベースファイルを/dataディレクトリにコピー
プロファイルを変更し、mysqlデータベースファイルをlvmディスクに、バイナリファイルをlvmディスク以外の/var/lib/mysql/ディレクトリに配置します.
mysqlのロックテーブルバックアップ
lvのスナップショットの作成
リリースロック
別のディスクにバックアップディレクトリを作成し、スナップショットを読み取り専用でマウントしてバックアップディレクトリにバックアップ
テーブルの内容を変更し、データベースファイルの内容である/data/mysqlの内容を削除します.
プロファイル内のバイナリ・ログとデータベース・ファイルの場所の変更
/myback/のコンテンツ復元を利用
バイナリ・ログを使用してスナップショットをリストアした後の操作は、次のファイルからスナップショット実行時のバイナリ・ログの場所を表示します.
000014の245以降の操作をsqlファイルにして復元する
新しいlvmディスクを作成します.ここで私が作ったlvはmydatalvで、/dataの下にマウントされています.
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
mydatalv mydata -wi-ao---- 1.00g
[root@localhost ~]# df -h
%
/dev/mapper/mydata-mydatalv 976M 2.6M 907M 1% /data
元のデータベースファイルを/dataディレクトリにコピー
[root@localhost ~]# cp -a /var/lib/mysql /data/
プロファイルを変更し、mysqlデータベースファイルをlvmディスクに、バイナリファイルをlvmディスク以外の/var/lib/mysql/ディレクトリに配置します.
[root@ns1 ~]# vim /etc/my.cnf
[mysqld]
log_bin=/var/lib/mysql/mysql-bin
datadir=/data/mysql
[root@localhost ~]# service mariadb restart
[root@localhost ~]# ls /data/mysql
aria_log.00000001 ibdata1 ib_logfile1 mysql-bin.000001 mysql-bin.000003 performance_schema
aria_log_control ib_logfile0 mysql mysql-bin.000002 mysql-bin.index test
/data/mysql
mysqlのロックテーブルバックアップ
[root@localhost ~]# mysql -e 'flush tables with read lock;'
[root@localhost ~]# mysql -e 'flush logs;' ,
[root@localhost ~]# mysql -e 'show master status;' > /root/back.$(date +%F+%T)
[root@localhost ~]# ls
back.2016-07-13+10:14:29
lvのスナップショットの作成
[root@localhost ~]# lvcreate -L 1G -n mysqlback -p r -s /dev/mydata/mydatalv
リリースロック
[root@localhost ~]# mysql -e 'unlock tables;'
別のディスクにバックアップディレクトリを作成し、スナップショットを読み取り専用でマウントしてバックアップディレクトリにバックアップ
[root@localhost ~]# mkdir /myback
[root@localhost ~]# mount -r /dev/mydata/mysqlback /mnt
[root@localhost ~]# cp -a /mnt/mysql /myback
テーブルの内容を変更し、データベースファイルの内容である/data/mysqlの内容を削除します.
[root@localhost ~]# mysql
MariaDB [hellodb]> use hellodb;
MariaDB [hellodb]> insert into classes (class,numofstu) values ('xxoo',39);
[root@localhost ~]# rm -rf /data/*
プロファイル内のバイナリ・ログとデータベース・ファイルの場所の変更
[root@localhost ~]# vim /etc/my.cnf
[mysqld]
log_bin=/data/mysql/mysql-bin
datadir=/data/mysql
/myback/のコンテンツ復元を利用
[root@localhost ~]# cp -a /myback/* /data/
[root@localhost ~]# service mariadb restart
バイナリ・ログを使用してスナップショットをリストアした後の操作は、次のファイルからスナップショット実行時のバイナリ・ログの場所を表示します.
[root@localhost ~]# cat back.2016-07-13+10\:14\:29
File Position Binlog_Do_DB Binlog_Ignore_DB
mysql-bin.000014 245
000014の245以降の操作をsqlファイルにして復元する
[root@localhost ~]# mysqlbinlog --start-position=245 /var/lib/mysql/mysql-bin.000014 > binlog.sql
[root@localhost ~]# mysql
[root@localhost ~]# mysql
MariaDB [(none)]> use hellodb;
MariaDB [hellodb]> select * from classes;
+---------+----------------+----------+
| ClassID | Class | NumOfStu |
+---------+----------------+----------+
| 1 | Shaolin Pai | 10 |
| 2 | Emei Pai | 7 |
| 3 | QingCheng Pai | 11 |
| 4 | Wudang Pai | 12 |
| 5 | Riyue Shenjiao | 31 |
| 6 | Lianshan Pai | 27 |
| 7 | Ming Jiao | 27 |
| 8 | Xiaoyao Pai | 15 |
| 9 | xxoo | 39 |
+---------+----------------+----------+
9 rows in set (0.00 sec)