在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:ubackup开源软件地址:https://gitee.com/lustlost/ubackup开源软件介绍:UBackup 游族统一异地备份系统简介此系统解决游族2w+个数据库实例(包括mysql,redis,ssdb)的异地灾备 每天大概40w+个备份文件(99%的数据库实例进行每小时备份策略) 每天40TB+数据量进行异地传输 支持任意备份
备份脚本规范1.每次都是全备的方式 (例如redis通过RDB每次都是全备)2.全备+增量 的方式(例如Mysql通过Xtrabackup) 脚本日志生成规范: 备份成功:back_log 第一行为ok,第二行为文件名 备份失败:back_log 第一行为wrong,第二行为错误信息如果是第2种方式,则在生成back_log的时候,同时生成一份相同的日志信息在last_all_log 日志中
支持以下报警类型
针对报警做了一个chrome插件提醒的功能 支持后端集群线性扩展
支持多纬度数据分析
一键恢复
架构介绍架构图统计数据页面报警页面集群管理页面部署方式安装基础环境安装好 ElasticSearch,Redis,下载源码 git clone [email protected]:lustlost/ubackup.git 初始化ES Mapper python ubackup/server/create_es_mapper.py 客户端yum install python-redis -yyum install rsync xinetd -ysed -i '/disable/ s#yes#no#g' /etc/xinetd.d/rsynccd ubackup/clientcp uuzuback.conf /etc/ 确保/etc/rsyncd.conf配置文件包含以下模块(具体可以根据实际情况修改) [backup]path = /data/backup/hosts allow = 0.0.0.0/0read only = yes /etc/init.d/xinetd restart 配置文件有2个样例section [global]server_id = 111111 #服务器ID,唯一标识,可以用资产编号game_id = 31 #业务ID,从Dashboard的业务管理中获取op_id = 1 #保留字段,随便填interval = 3600 #设定备份间隔时间redis_host = 0.0.0.0 #服务端redis地址redis_port = 6379 #服务端redis端口redis_queue = uuzuback #服务端redis队列名称my_ip = 127.0.0.0.1 #本机IPlog = /var/log/uuzu_back.log #日志路径error_log = /var/log/uuzu_back.error #错误日志路径[mysql3306] #一个section配置一个需要备份的实例back_type = mysql #备份类型instance = 3306 #实例号,数据库类的备份可以用端口号表示rsync_model = backup/database_3306 #rsync模块名称back_dir = /data/backup/database_3306/ #备份文件路径back_log = /var/log/mysql_3306.log #备份信息路径last_all_log = /var/log/last_3306.log #上一次全备路径,如果不区分全备增量,此配置可以省略script = sh /usr/local/uuzuback/mysql_backup.sh /etc/my.cnf #备份脚本[redis6379]back_type = redisinstance = 6379rsync_model = backup/redisbase_6379back_dir = /data/backup/redisbase_6379/back_log = /var/log/redis_6379.logscript = sh /usr/local/uuzuback/redis_backup.sh /data/conf/redis_conf 把python uuzuback_client.py 加入crontab,cron的间隔时间和配置文件中的interval保持一致 服务端:安装依赖 yum install supervisor MySQL-python -ypip install rediscd ubackup/server/cp uuzuback.conf /etc/ 配置文件 [global]work_thread = 4 #执行rsync拉取的线程数量rsync_bwlimit = 62000 #rsync带宽限制server_root_path = /backup/uuzubackup/ #本地备份存放根目录reserve = 1000 #本机保留大小interval = 0 #每个线程拉取备份后,休息的秒数,可以用来控制拉取速度的redis_host = 127.0.0.1 #redis地址redis_port = 6379 #redis端口redis_queue = level1 uuzuback_f #队列名称,越前面的优先级越高log = /var/log/uuzuback.log error_log = /var/log/uuzuback.errormyip = 127.0.0.1 #本机IPretry = 3 #拉取重试次数message_redis_host=127.0.0.1 #全局队列地址message_redis_port=6379 #全局队列端口message_queue=message #全局队列名称mysqlkeeptime = 15 #保留字段rediskeeptime = 15 #保留字段node_id=5 #节点ID,从Dashboard中获取,用于上报节点信息用 启动服务/etc/supervisord.conf 加入配置段,server端执行文件路径根据实际情况配置打开 to_es.py修改5-9行的redis,es,dashboard连接信息 [program:uuzu_backup_server]command=/usr/bin/python /usr/local/uuzuback/uuzuback_server.pyautorestart=trueautostart=truestdout_logfile=/var/log/uuzu_backup_server.log[program:to_es]command=/usr/bin/python /usr/local/uuzuback/to_es.pyautorestart=trueautostart=truestdout_logfile=/var/log/uuzu_backup_to_es.log Dashboard:cd ubackup/dashboardpip install -r requirements.txt 修改config.py,配置好数据库连接串,执行 python -c 'from myapp import db;db.create_all()' 启动服务 python runserver.py 访问5000端口即可 节点信息上报:队列信息上报 在redis服务器上修改 server/update_queue.py中的dashboard_url添加crontabpython update_queue.py {{ID}} 加入crontab ,ID配置文件使用任意节点的配置 磁盘信息上报 在节点服务器上修改 server/update_disk.py中的dashboard_url添加corntabpython update_disk.py 加入crontab配置文件中的node_id配置的ID,配置为Dashboard上的节点ID |
请发表评论