1. 程式人生 > >MySQL資料庫統一備份平臺管理

MySQL資料庫統一備份平臺管理

MySQL集中備份平臺實現過程:


  #1、將檔案db_back存放在/home目錄下

#2、將dbreport存放在在/home/www目錄下

1、修改/home/db_backup/config.ini配置檔案,設定連線資料庫設定的4個表基礎資訊

[baseconf]
host=192.168.15.57 #根據實際修改
name=dbinfo        #根據實際修改庫資訊
port=5700          #埠
user=dlan   #使用者名稱
password=root123   #密碼
Charset=utf8
[concurrent]

processor=20

2、新增資料庫及表

1#create database dbconfig;

CREATE TABLE `mysql_backup_list` (
  `c_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '資料庫ID',
  `idc` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '所屬IDC',
  `c_ip` varchar(30) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT 'ip',
  `db_version` enum('5.1','5.5','5.6') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '5.1',
  `back_type` enum('mysqldump','xtrabackup','mydumper') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'mysqldump',
  `c_port` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT '資料庫埠',
  `app_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '應用名稱',
  `mysql_dir` varchar(120) COLLATE utf8mb4_unicode_ci DEFAULT '/usr/local/mysql/bin' COMMENT 'mysql安裝路徑',
  `defaults_file` varchar(60) COLLATE utf8mb4_unicode_ci DEFAULT '/etc/my3306.cnf',
  `c_socket` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '/tmp/mysql3306.sock' COMMENT 'sock 名稱,帶路徑',
  `back_dbs` varchar(80) COLLATE utf8mb4_unicode_ci DEFAULT '--all-databases' COMMENT '備份的資料庫',
  `c_user` varchar(30) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'root' COMMENT '賬號',
  `c_passwd` varchar(30) CHARACTER SET latin1 NOT NULL DEFAULT '' COMMENT '密碼',
  `bin_log` tinyint(4) DEFAULT '0' COMMENT '0開bin-log,1,未開啟',
  `is_backup` tinyint(4) DEFAULT '0' COMMENT '0備份,1不備份',
  `is_ftp` smallint(6) NOT NULL DEFAULT '0' COMMENT '是否上傳到ftp,0上傳,1不上傳',
  `back_dir` varchar(30) COLLATE utf8mb4_unicode_ci DEFAULT '/home/backup' COMMENT '備份目錄',
  `expire_days` int(11) NOT NULL DEFAULT '15' COMMENT '保留天數',
  `c_comment` varchar(500) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '備註',
  `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '插入記錄時間',
  PRIMARY KEY (`c_id`),
  UNIQUE KEY `NewIndex1` (`c_ip`,`c_port`)

) ENGINE=InnoDB AUTO_INCREMENT=124 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci

CREATE TABLE `mysql_backup_log` (
  `c_id` int(11) NOT NULL AUTO_INCREMENT,
  `db_id` int(11) DEFAULT '0' COMMENT 'mysql_backup_list表的c_id',
  `c_date` datetime DEFAULT '0000-00-00 00:00:00' COMMENT '備份日期',
  `file_name` varchar(80) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '檔名',
  `file_md5` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT 'md5值',
  `file_size` bigint(20) NOT NULL DEFAULT '0' COMMENT '備份檔案大小',
  `step` enum('backup','ftp') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'backup' COMMENT '步驟,是ftp還是backup',
  `is_backok` tinyint(4) DEFAULT '0' COMMENT '備份情況,0 成功,1失敗',
  `is_ftpok` tinyint(4) DEFAULT '0' COMMENT 'FTP上傳情況,0 成功,1失敗',
  `message` varchar(512) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '備份時的錯誤資訊',
  PRIMARY KEY (`c_id`)

) ENGINE=InnoDB AUTO_INCREMENT=3303 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci

2#新增資料庫:create database dbinfo

CREATE TABLE `mysql_ssh_pass` (
  `id` int(32) NOT NULL AUTO_INCREMENT,
  `idc` int(16) DEFAULT NULL COMMENT '所述IDC編號',
  `ip` varchar(15) DEFAULT NULL COMMENT '資料庫ip',
  `os` varchar(30) DEFAULT NULL COMMENT '伺服器系統版本',
  `username` varchar(20) DEFAULT NULL COMMENT 'ssh使用者名稱',
  `password` varchar(128) DEFAULT NULL COMMENT 'ssh密碼',
  `comment` varchar(500) NOT NULL DEFAULT '' COMMENT '備註',
  PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=214 DEFAULT CHARSET=utf8

2、修改/home/db_back/mysql_back_ssh.py管理端管理地址


3、修改/home/db_back下mysql_back_status.py、send_err_mails.py為備份成功或者失敗郵件地址

##有需要修改地址的都設定相同即可,不重複截圖


5、配置apache服務

#apache根據提供的包,解壓到/usr/local目錄下,修改檔案配置:/usr/local/apache/conf/extra/httpd-vhosts.conf

#修改目錄的許可權:chown -R daemon.daemon /home/www


6、修改/home/www/dbreport/config.inc.php 配置dbconfig的資料庫地址資訊


7、給dbinfo.mysql_ssh_pass表新增登陸系統的使用者名稱和密碼並設定伺服器IDC編號(編號為備份設定定時任務使用)

#使用者名稱和密碼採用加密方式儲存:在LINUX 終端執行獲取加解資訊

    ##加密 echo -n "123456"|base64 

    ##解密 echo -n "MTIzNDU2"|base64 -d

如系統登入使用者為root 密碼為123456

加密:


解密:


INSERT INTO mysql_ssh_pass (idc,ip,os,username,PASSWORD,COMMENT)VALUES(120,'192.168.21.17','centos','加密後root密文','加密後密碼祕聞','測試backup');

##若伺服器為多例項,SSH列表設定一條資訊登陸伺服器資訊即可。

8、新增備份使用者資訊dbconfig.mysql_backup_list

INSERT INTO `dbconfig`.`mysql_backup_list`
 (idc,c_ip, db_version, c_port, c_user,defaults_file,c_socket,c_passwd,bin_log,mysql_dir,is_backup,back_type,back_dir,back_dbs,expire_days,is_ftp, app_name)
VALUES ('120','192.168.28.87', '5.5','3306', 'root', '/etc/my3306.cnf','/tmp/mysql3306.sock', ENCODE('資料庫登陸密碼','tm_dba'), '0', '/usr/local/mysql/bin','0','mysqldump','/home/backup','--all-databases','10','1','測試');

##具體欄位描述:


##備份資訊列表IP地址必須在ssh表存在,兩者idc值可以不一樣,最終啟動備份使用的idc值為此表(mysql_backup_list)idc

9、在管理伺服器設定定時任務,如:


##1\2\3\4\5\6值一定存在mysql_backup_list表裡的idc值

10、設定定時任務郵件和微信告警


11、配置微信指令碼



微信告警配置具體百度下,需要申請個微信企業號

12、需要把db_backup.sh分發到到備份伺服器上,若備份伺服器沒有xtra需要安裝,mysqldump mydumpe在全域性變數都可以訪問到/usr/bin目錄下

13、啟動apache服務

##啟動成功

檔案下載路徑:

https://download.csdn.net/download/weixin_36135773/10277785