欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入
5.3.2. 数据恢复
MySQL Client
┌───┤ MySQL Adminstrator ├───┐
│ Menu │
│ │
│ 1 MySQL Manager │
│ 2 MySQL Backup │
│ 2 MySQL Restore │
│ │
│ │
│ <Ok> <Cancel> │
│ │
└────────────────────────────┘
┌────────┤ MySQL Adminstrator ├────────┐
│ Database Host │
│ │
│ 127.0.0.1 localhost │
│ 172.16.0.1 mysql master │
│ 172.16.0.2 mysql slave │
│ │
│ <Ok> <Cancel> │
│ │
└──────────────────────────────────────┘
┌────────┤ MySQL Adminstrator ├────────┐
│ Backup History │
│ │
│ 1 2010-12-03 03:00:00 │
│ 2 2012-01-01 02:00:00 │
│ 3 2012-02-01 02:00:00 │
│ │
│ <Ok> <Cancel> │
│ │
└──────────────────────────────────────┘
┌────────┤ MySQL Adminstrator ├────────┐
│ User │
│ │
│ root________________________________ │
│ │
│ <Ok> <Cancel> │
│ │
└──────────────────────────────────────┘
┌────────┤ MySQL Adminstrator ├────────┐
│ Password │
│ │
│ ****________________________________ │
│ │
│ <Ok> <Cancel> │
│ │
└──────────────────────────────────────┘
┌────────┤ MySQL Adminstrator ├────────┐
│ │
│ Restore? │
│ │
│ │
│ <Yes> <No> │
│ │
└──────────────────────────────────────┘
5.4. crontab 定时备份脚本于安全
网上备份脚本很多,但考虑都不周全。
这里增加了 umask 0077 保证创建备份文件只能是创建者跟root可以访问,其他用户没有权限,保证了备份档案的安全。
find $BACKUP_DIR -type f -mtime +$COPIES -delete 是负责备份的份数管理, 过期数据定时删除
创建专用的备份帐号
grant select, lock tables on *.* to ‘backup’@’192.168.1.200’ identified by “123456”;
crontab 备份脚本
# cat /srv/bin/backup
#!/bin/bash
###################################
# $Id: security.xml 500 2012-12-04 09:01:55Z netkiller $
###################################
BACKUP_HOST=”localhost”
BACKUP_USER=”backup”
BACKUP_PASS=””
BACKUP_DIR=/opt/backup
BACKUP_DBNAME=”test neo”
#Number of copies
COPIES=7
MYSQLDUMP=”mysqldump”
#TIMEPOINT=$(date -u +%Y-%m-%d)
TIMEPOINT=$(date -u +%Y-%m-%d.%H:%M:%S)
MYSQLDUMP_OPTS=”-h $BACKUP_HOST -u$BACKUP_USER -p$BACKUP_PASS”
umask 0077
test ! -d “$BACKUP_DIR” && mkdir -p “$BACKUP_DIR”
test ! -w $BACKUP_DIR && echo “Error: $BACKUP_DIR is un-writeable.” && exit 0
for dbname in $BACKUP_DBNAME
do
test ! -d “$BACKUP_DIR/$dbname” && mkdir -p “$BACKUP_DIR/$dbname”
$MYSQLDUMP $MYSQLDUMP_OPTS $dbname | gzip > $BACKUP_DIR/$dbname/$dbname.$TIMEPOINT.sql.gz
done
find $BACKUP_DIR -type f -mtime +$COPIES -delete
/srv/bin/backup 安全也至关重要,否则会泄漏备份用户的密码
# chown mysql:mysql /srv/bin/backup
# chmod 500 /srv/bin/backup
mysqldump 的安全
# chown 700 /usr/bin/mysqldump
5.5. 数据库归档文件
一般数据库服务器上可以保留一周的备份数据,历史数据需要保存到服务器以外的带库或者阵列柜中,怎么样保证这些数据的安全呢? 我们采用下面方式制作PGP/GPG密钥,密钥放置在数据库服务器上,证书做好备份,否则一旦丢失,将无法在将备份文件恢复数据库备份后,首先进行压缩处理然后使用公钥证书进行GPG/PGP数据加密这时可以放心的将备份数据库搬出数据库服务器到带库或磁盘阵列柜中恢复数据,将数据库备份文件复制到该数据库服务器,然后用私钥解密备份文件,再恢复到数据库到中
5.6. 开发与测试环境的数据库安全问题
有时候需要将生产环境的数据复制到开发环境上,例如,测试的时候,重现bug需要真实数据,开发环境的模拟数据无法满足要求,这时需要将生产环境的数据拉到测试或开发环境。如果保证数据的安全非常重要。
最有效的手段是数据混淆,将重要的数据进行混淆扰乱顺序等等
扰乱手段有
颠倒顺序
曾加干扰词
重置或替换数据,例如密码可以全部改为test (update user set passwd=’test’)
拼装数据 如 (131,137,135,133,139,138,168)后面加8位随机数
5.7. 与数据库有关的服务器安全问题
其他服务器不能安装mysql客户端与mysqldump备份工具
例如:web服务器只能通过php/jdbc/odbc等链接mysql数据库, web服务器卸载 mysql,mysqldump工具,防止用户登录查询以及将数据库远程备份,然后通过web下载数据库
# adduser www
# passwd www
# chmod 500 -R /usr/local/webserver/mysql/bin/*
# chown root:root -R /usr/local/webserver/mysql/bin/*
[1][2][3][4]
每一件事与每一个美丽景色,都有可能成为一生中的难忘。