一款基于Django Web框架开发的可视化数据库备份工具。通过开源数据库备份工具Xtrabackup实现图形化数据库的全量和增量备份。
XtrawithDjango/ # 仓库目录
├── nginx.conf # nginx配置文件
├── README.md
├── Xtra # 项目目录
│ ├── db.sqlite3
│ ├── logs # 日志目录
│ │ └── xtra.log
│ ├── manage.py
│ ├── wsgi.ini # uwsgi配置文件
│ └── Xtra # 工程目录
│ ├── apps # 应用目录
│ │ ├── contents # 备份和展示应用
│ │ ├── users # 用户管理应用
│ │ └── verifications # 认证应用
│ ├── db.sqlite3
│ ├── __init__.py
│ ├── settings # 工程配置目录
│ │ ├── dev.py
│ │ ├── __init__.py
│ │ ├── prod.py
│ ├── static # 工程静态文件目录
│ │ ├── css
│ │ ├── images
│ │ └── js
│ ├── templates # 工程模板目录
│ ├── urls.py
│ ├── utils # 工程工具目录
│ └── wsgi.py
└── Xtra.ini # Xtra项目的supervisord管理配置文件
OS: CentOS7
Python:Python3.5+
Python模块:
mod.txt
Django==1.11.11
django-redis==4.11.0
Jinja2==2.11.1
Pillow==7.1.1
PyMySQL==0.9.3
wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.9/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm
yum install -y percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm
create database Xtra charset=utf8;
create user Xtra identified by '123456';
grant all on Xtra.* to 'Xtra'@'%';
flush privileges;
yum -y install redis
mkdir Xtra
mkdir /tmp/xtra_test/
cd Xtra/
yum -y install git
git clone "https://github.com/wuyangdevops/XtrawithDjango.git"
cd XtrawithDjango/
mkvirtualenv -p python3 Xtra
pip3 install -r mod.txt
python manage.py makemigrations
python manage.py migrate
python manage.py runserver 0.0.0.0:80
yum -y install python3-devel
yum install epel-release
yum install -y supervisor
systemctl enable supervisord
systemctl start supervisord
yum -y install nginx
systemctl enable nginx
systemctl start nginx
请修改/etc/nginx/nginx.conf配置文件中如下内容
user root;
...
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8000;
}
location /static {
alias /root/Xtra/XtrawithDjango/Xtra/Xtra/static;
}
然后重启Nginx
systemctl restart nginx
pip3 install uwsgi
该工程中wsgi.ini配置信息如下:
"""
WSGI config for WebXtra project.
It exposes the WSGI callable as a module-level variable named ``application``.
For more information on this file, see
https://docs.djangoproject.com/en/1.11/howto/deployment/wsgi/
"""
[uwsgi]
socket=127.0.0.1:8000
chdir=/root/Xtra/XtrawithDjango/Xtra
wsgi-file=Xtra/wsgi.py
processes=4
threads=2
master=True
pidfile=uwsgi.pid
daemonize=uwsgi.log
virtualenv=/root/.virtualenvs/Xtra/
使用supervisord来管理uwsgi进程
将Xtra.ini配置文件放入/etc/supervisord.d/目录
重载supervisord
supervisorctl reload
http://47.100.98.161/
线上代码只可备份本机数据库,需要尝试体验请与作者联系获取本机数据库测试账号密码
command = "/usr/bin/innobackupex --user=" + dbuser \
+ " --password=" + password \
+ " --host=" + "127.0.0.1" \
+ " --port=" + port \
+ " --incremental /tmp/xtra_test/" \
+ " --incremental-basedir=/tmp/xtra_test/" \
+ filename + "/"
Email:wuyangdevops@163.com