MariaDB数据库备份与恢复


【实验目的】

1,定期给数据做备份。

2,防止有人误操作删除数据。

3,通过备份及时恢复数据文件。


【实验步骤】

1,数据存储路径/var/lib/mysql 来确认数据(我只是实验yum安装路径),同时事先需要开启bin-log。

2,写一个shell脚本来实现数据库文件的备份。

3,通过crontabl来配合shell脚本实现自动化备份数据库文件。

4,预先执行shell脚本文件来备份数据库wiki文件。

5,模拟用户删除数据库wiki文件。

6,通过本地最近备份文件来恢复数据库wiki文件。

7,验证数据库wiki有效性。


【实验过程】

1,数据存储路径/var/lib/mysql 来确认数据。

[root@wiki mysql]# ls
aria_log.00000001  multi-master.info  mysql.sock
aria_log_control   mysql              performance_schema
ib_buffer_pool     mysql_bin.000001   test
ibdata1            mysql_bin.000002   wikidatabase
ib_logfile0        mysql_bin.000003   wiki.pid
ib_logfile1        mysql_bin.000004
ibtmp1             mysql_bin.index

开启bin-log,需要重新启动数据库。

vim /etc/my.cnf.d/server.cnf
[mysqld]
log-bin=mysql-bin

重启数据库:systemctl restart mariadb.service

2,写一个shell脚本来实现数据库文件的备份。

#auto backup mysql
#tony  2019-03-01
#Define PATH定义变量
BAKDIR=/data/backup/mysql/`date +%Y-%m-%d`
MYSQLDB=wikidatabase
MYSQLPW=Pass23!
MYSQLUSR=root
#must use root user run scripts 必须使用root用户运行,$UID为系统变量
if
[ $UID -ne 0 ];then
echo This script must use the root user ! ! !
sleep 2
exit 0
fi
#Define DIR and mkdir DIR 判断目录是否存在,不存在则新建
if
[ ! -d $BAKDIR ];then
mkdir -p $BAKDIR
else
echo This is $BAKDIR exists....
fi
#Use mysqldump backup mysql 使用mysqldump备份数据库
/usr/bin/mysqldump -u$MYSQLUSR -p$MYSQLPW  -B -F -R -x --master-data=2 $MYSQLDB|gzip >$BAKDIR/wikidatabase_db.sql.gz
echo "The mysql backup successfully

-----------------
参数说明:
-B:指定数据库
-F:刷新日志
-R:备份存储过程等
-x:锁表
--master-data:在备份语句里添加CHANGE MASTER语句以及binlog文件及位置点信息
-----------------

3,通过crontabl来配合shell脚本实现自动化备份数据库文件。

[root@wiki scripts]# crontab -l
#backup mariadb
0 0 * * * /scripts/backup_db_wiki.sh >/dev/null 2>&1

4,预先执行shell脚本文件来备份数据库wiki文件。

[root@wiki scripts]# chmod +x backup_db_wiki.sh 
[root@wiki scripts]# sh backup_db_wiki.sh

5,模拟用户删除数据库wiki文件。

MariaDB [(none)]> drop schema wikidatabase;
Query OK, 59 rows affected (0.24 sec)

MariaDB [(none)]> show databases;          
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.00 sec)

6,通过本地最近备份文件来恢复数据库wiki文件。

[root@wiki scripts]# cd /data/backup/mysql/2019-03-04/
[root@wiki 2019-03-04]# gzip -d wikidatabase_db.sql.gz
[root@wiki 2019-03-04]# mysql -uroot -p < wikidatabase_db.sql
[root@wiki 2019-03-04]# mysql -uroot -p
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
| wikidatabase       |
+--------------------+
5 rows in set (0.01 sec)

7,验证数据库wiki有效性。

通过浏览器访问发现数据完成恢复了。