1.常用参数:
1、备份策略
两台主机,192.168.50.137和192.168.50.135,在137主机上运行mysql,做完全备份,然后做基于二进制日志(会保存导致数据改变或健在数据改变的SQL语句)的增量备份,模拟某个时刻137主机宕机,将数据库服务转到135主机上运行。
2、对137主机上的所有数据库做完全备份
先查看137主机上mysql数据库
[root@www ~]# mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 8
Server version: 5.5.56-MariaDB MariaDB Server
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 |
| Syslog |
| hellodb |
| mysql |
| performance_schema |
+--------------------+
5 rows in set (0.00 sec)
对其中的所有数据库做完全备份操作,同时加上--single-transaction实现启动一个大事务,保证事务内的数据保持一致性,但仅对innodb有效,--master-data实现记录CHANGE MASTER TO语句,在二进制文件中记录我们的完全备份开始的位置以及在哪个二进制文件里记录的,--flush-logs实现二进制文件滚动,最后将生产的sql脚本保存在/backup目录下
[root@www ~]# mysqldump --all-database --single-transaction --master-data=2 --flush-logs > /backup/mysqlbkp-$(date +%F).sql
[root@www backup]# ll
总用量 4812
-rw-r--r-- 1 root root 4923837 6月 23 13:34 mysqlbkp-2018-06-23.sql
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000008', MASTER_LOG_POS=245; #我们的备份操作记录在mysql-bin.000008中,开始位置为245
3、做增量备份
从我们做完全备份的时刻起,数据库的操作依然在进行,因此做增量备份保证以后数据库恢复是能有完整数据的一项重要措施。现在我们对137上的数据库进行一些修改
删除Syslog数据库,添加test数据库
MariaDB [(none)]> drop database Syslog;
Query OK, 2 rows affected (0.05 sec)
MariaDB [(none)]> create database test;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| hellodb |
| mysql |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.00 sec)
从二进制文件中导出刚才的增量操作,并保存到/backup中
[root@www backup]# mysqlbinlog --start-position 245 /var/lib/mysql/mysql-bin.000008 > /backup/mysqlinsert-$(date +F%).sql #开始位置即为我们记录下来的245。
[root@www backup]# ll
总用量 4844
-rw-r--r-- 1 root root 4923837 6月 23 13:34 mysqlbkp-2018-06-23.sql
-rw-r--r-- 1 root root 32709 6月 23 14:02 mysqlinsert-2018-06-23.sql
假如现在137主机的mysql宕掉了,将/backup中所以内容scp到135主机进行恢复。
[root@www backup]# scp -p /backup/* 192.168.50.135:/tmp/mysql-bkp
mysqlbkp-2018-06-23.sql 100% 4808KB 24.2MB/s 00:00
mysqlinsert-2018-06-23.sql 100% 32KB 14.1MB/s 00:00
先恢复到完全备份时的状态
[root@Eric ~]# mysql < /tmp/mysql-bkp/mysqlbkp-2018-06-23.sql
查看数据库
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| Syslog |
| hellodb |
| mysql |
| performance_schema |
+--------------------+
5 rows in set (0.00 sec)
MariaDB [(none)]>
可以看到此时已经在135主机上恢复出了当时完全备份时的状态,但是还记得我们在完全备份后是删除了Syslog数据库,添加了test数据库,因此我们在导入增量备份,恢复到最新的数据库状态
[root@Eric ~]# mysql < /tmp/mysql-bkp/mysqlinsert-2018-06-23.sql
再次查看数据库
[root@Eric ~]# mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 10
Server version: 5.5.56-MariaDB MariaDB Server
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 |
| hellodb |
| mysql |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.00 sec)
此时就恢复到了最新的状态了;
成功!!!