欢迎转载,请注明出处,谢谢
作者:刘春雷
欢迎评论,感谢~
------------------------------------------------------
mysql备份平台--django实践
--刘春雷 20170725
概要:
如果你想快速搭建一个可以备份表,表结构,表数据的小平台
如果你想学习django
如果你想了解bootstrap
那么此篇文章适合你~
--刘春雷
另:本文只是分享一个思想,代码是刚学django/python写的,不太美观哈,大家学会了可以自己写就行~
-------------------------------------------------------------------
一、mysql备份平台
1.1、mysql备份平台说明
<1>功能:
实现界面化备份表、SQL导出备份
<2>方法:
利用django,bootstrap,mysqldump,html 来搭建
利用mysqldump优先选择从库进行导出备份
<3>适用场景:
上线前的备份,日常备份等
1.2、平台界面如下
1.2.1、最初界面
注:被屏蔽的为IP地址与端口,自己测试的时候更改即可
界面丑了点,主要只是作者本人所做,没有开发、前端等帮助,且只有DBA自己使用,就简单实用就行啦~您也可以找前端帮助美化~
1.2.2、检查库信息的界面
注:在此处输入库名,例如my,点击检查库名对应记群号,即可获取此库对应的集群信息
即 1号集群
1.2.3、SQL备份方式
注:选择SQL备份方式,在输入框输入具体SQL
下面确定集群号,输入1,点击提交即可
因:html不太熟悉,暂时不知如何点击1@my 来确定集群,后期优化下
备份结果如图:
注:
备份地址为中控机的地址
表名不好获取,暂时为空
1.2.4、table模式备份
注:选择TABLE,选择table备份模式:
只导表结构,只导数据,表结构和数据全部
填入集群号 1
输入表名,多个表名以空格 分隔即可
例如: my_db my_cluster my_database
备份结果如图:
注:
即3张表都备份到中控机的地址
文件名:库名_表名_时间
二、具体实现
2.1、python2.7安装
tar zvf Python-2.7.10.tar
cd Python-2.7.10
./configure --enable-shared --prefix=/usr/local/python27
make && make install
cp /usr/local/python27/lib/libpython2.7.so.1.0 /usr/local/lib
cd /usr/local/lib
ln -s libpython2.7.so.1.0 libpython2.7.so
2.2、django环境搭建
tar zxvf Django-1.11.3.tar.gzcd Django-1.11.3
python setup.py install
2.3、安装 MySQL-python
tar xvf MySQL-python-1.2.3.tarcd MySQL-python-1.2.3/
python setup.py build
python setup.py install
测试是否ok
Python 2.7.5 (default, Nov 6 2016, 00:28:07)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> import MySQLdb
>>>
2.4、数据库
<1>、创建好mysql数据库,此处忽略
<2>、建立数据库my,创建元信息表,具体可参考博客:mysql多层元信息与查询实践(http://blog.itpub.net/28823725/viewspace-2142234/)
create user dumper@'127.0.0.1' identified by '123456';
grant select on *.* to dumper@'127.0.0.1';
grant show view on *.* to dumper@'127.0.0.1';
grant lock tables on *.* to dumper@'127.0.0.1';
grant trigger on *.* to dumper@'127.0.0.1';
查询用户
create user dba_read@'127.0.0.1' identified by '123456';
grant select on *.* to dba_read@'127.0.0.1';
注:次处只有一个mysql,只做元信息库与测试备份库
<4>、构建数据:
insert into my_server values(1,'127.0.0.1','127.0.0.1','lcl','1','idc1','2017-07-24 10:00:00','A',now());
insert into my_ip values(1,'127.0.0.1','lcl','1','idc1','2017-07-24 10:00:00','A',now())
insert into my_cluster values(1,'my',6001,'db info',0,1,now(),now(),'1',10,10,'5.7.19',1,1,'db info');
insert into my_db values(1,1,'127.0.0.1',6001,1,now(),now(),1,'w,r','Master',1,1,0,1,'/data/mysql/','1G','5.7.19','my','succ','db info');
insert into my_database values(1,1,'my','my','lcl',1,1,now(),now(),'dba','dba','succ','db info');
2.5、django详细
<1>创建项目
cd /chunlei/django/
django-admin.py startproject dba_backup
会产生目录dba_backup
cd /chunlei/django/dba_backup
ls
drwxr-xr-x. 3 root root 4096 Jul 24 17:18 dba_backup
-rwxrwxr-x. 1 root root 808 Jul 24 14:56 manage.py
<2>设置配置文件
cd /chunlei/django/dba_backup/dba_backup
vi settings.py
ALLOWED_HOSTS = ['可以访问的IP地址,也可以写*即不限制']
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'dba_backup',
]
EMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': ['/chunlei/chunlei/django/dba_backup/dba_backup/templates'],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
TIME_ZONE = 'Asia/Shanghai'
<3>、设置django的url文件
from django.conf.urls import url
from django.contrib import admin
from dba_backup.views import sql_export_search_form
from dba_backup.views import sql_export_result
from dba_backup.views import sql_export_sql
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^sql_export_search_form/$',sql_export_search_form),
url(r'^sql_export_result/$', sql_export_result),
url(r'^sql_export_search_form/sql_export_sql/$', sql_export_sql),
]
<4>、编写django的view文件
如附件
<5>、django的template的网页文件
/chunlei/django/dba_backup/dba_backup
mkdir templates
文件如附件
<6>、启动django
cd /chunlei/django/dba_backup
python manage.py runserver IP:端口
<7>测试使用
http://IP:端口号/sql_export_search_form/
具体使用方式如上面图即可
三、其他
3.1、优点
简单方便DBA备份,可以在上线前备份,或者日常备份
优先找备份库备份,防止影响主库性能
导出限制条数,防止影响从库性能
3.2、缺点
界面简单,后期可以优化下界面
代码不整洁,为刚学时所做,后期可以优化下
3.3、源代码如附件
dba_backup_liuchunlei.zip
注:大家就当从此例中学习下django即可~