首页> 搜索结果页
"access数据库定时备份" 检索
共 163 条结果
linux自动定时备份web程序和mysql数据库
  前些天受朋友说linux定时备份不知道怎么搞,叫帮忙处理一下。由于这段时间正闲着,所以也就欣然答应。由于朋友对linux不懂也希望我将操作的过程记录下来,也就是越详细越好。所以写得比较$%^&*。本以为半个小时或者一个小时可以搞好,谁不知整整搞了一天。原因在哪呢?这里也顺便吐槽一下,首先问web存放在什么地方?不知,给了个ftp。然后进去一看,各种压缩包,各种目录备份,混乱不堪,为了防止磁盘被撑爆,所以一个个目录确认,哪些目录是要的哪些是不要的,然后一个个删掉。还有mysql数据库,问用的哪个?不知,又是一通的等,一遍遍地确认。好吧,这也都算了。等我搞好了,然后说每天检查一下。谁不知,程序猿最怕发生的事情义无意外地发生了。目录搞错,这不等于万恶的改需求吗?脑子瞬间都是各种@!#$%^&*(!@#$%^^&*()。好吧,不接都已经接了认了吧。好了吐槽至此,不废话入正题。 需求:   1、每天定时备份web程序和mysql数据库   2、web程序、web日志和mysql数据库备份均保留7天 说明:   web目录:/chinasofti/www/bbswebdir   web日志目录:/chinasofti/www/bbswebdir/httplogs   日志文件名格式:myweb.com-access_log_YYYYMMDD,myweb.com-error_log_YYYYMMDD,如myweb.com-access_log_20150508,myweb.com-error_log_20150508   备份脚本存放目录:/chinasofti/wwwbakscript/   备份文件存放目录:/chinasofti/wwwbakdir/   web备份文件名格式:bbs.myweb.com_YYYYMMDD,如bbs.myweb.com_20150508.tar.gz   mysql备份文件格式:数据库名_$(date +%Y%m%d).sql.gz 写在前面:务必注意各个目录的说明,运用是注意修改。完全不改是用不了的。注意各个目录和文件的对应关系。 淡绿色底的为linux命令,淡黄色底的为shell脚本内容,其他的为备注说明。 操作步骤 root用户登陆后1、切换目录  cd /chinasofti/wwwbakscript2、创建备份脚本  vi mywebbak.sh 按i然后输入以下内容   #!/bin/bash  #backup /chinasofti/www/bbswebdir and database   ###################切换到web目录#################  cd /chinasofti/www/bbswebdir   ###################删除web日志#################  rm -f ./httplogs/myweb.com-access_log_$(date +%Y%m%d --date='7 days ago')  rm -f ./httplogs/myweb.com-error_log_$(date +%Y%m%d --date='7 days ago')   ###################删除备份文件#################  rm -f /chinasofti/wwwbakdir/bbs.myweb.com_$(date +%Y%m%d --date='7 days ago').tar.gz   ###################备份web程序#################  tar -zcf /chinasofti/wwwbakdir/bbs.myweb.com_$(date +%Y%m%d).tar.gz ./* ./.[!.]*   ###################删除备份数据库####################  rm -f /chinasofti/wwwbakdir/数据库名_$(date +%Y%m%d --date='7 days ago').sql.gz  ###################备份数据库####################  mysqldump -u数据库账号 -p"数据库密码" 数据库 | gzip >/chinasofti/wwwbakdir/数据库名_$(date +%Y%m%d).sql.gz   #################导出单个表数据和结构############   #mysqldump -u账号 -p 数据库名 表名 > /root/XXXX.sql 添加完成后,按键盘右上角的“esc”键,然后输入英文的冒号加x(:x),回车完成。 注意:红色字体部分为路径(注意修改),品红色部分为文件名(注意修改)。 4、添加可执行权限  chmod +x mywebbak.sh 5、定时执行  crontab -e按i编辑,添加运行的脚本和时间。如:  0 1 * * * /chinasofti/wwwbakscript/mywebbak.sh则为每天凌晨1点执行,/chinasofti/wwwbakscript/mywebbak.sh这个shell脚本。修改完成后,按键盘右上角的“esc”键,然后输入英文的冒号加x(:x),回车完成。 6、每天检查脚本是否正常运行。 其它相关文章: windows下如何对mysql进行整裤备份 mysql导入和导出数据
文章
关系型数据库  ·  Linux  ·  数据库  ·  MySQL  ·  Shell  ·  数据安全/隐私保护  ·  Windows  ·  程序员
2015-05-08
linux自动定时备份web程序和mysql数据库
前些天受朋友说linux定时备份不知道怎么搞,叫帮忙处理一下。由于这段时间正闲着,所以也就欣然答应。由于朋友对linux不懂也希望我将操作的过程记录下来,也就是越详细越好。所以写得比较$%^&*。本以为半个小时或者一个小时可以搞好,谁不知整整搞了一天。原因在哪呢?这里也顺便吐槽一下,首先问web存放在什么地方?不知,给了个ftp。然后进去一看,各种压缩包,各种目录备份,混乱不堪,为了防止磁盘被撑爆,所以一个个目录确认,哪些目录是要的哪些是不要的,然后一个个删掉。还有mysql数据库,问用的哪个?不知,又是一通的等,一遍遍地确认。好吧,这也都算了。等我搞好了,然后说每天检查一下。谁不知,程序猿最怕发生的事情义无意外地发生了。目录搞错,这不等于万恶的改需求吗?脑子瞬间都是各种@!#$%^&*(!@#$%^^&*()。好吧,不接都已经接了认了吧。好了吐槽至此,不废话入正题。 需求:   1、每天定时备份web程序和mysql数据库   2、web程序、web日志和mysql数据库备份均保留7天 说明:   web目录:/chinasofti/www/bbswebdir   web日志目录:/chinasofti/www/bbswebdir/httplogs   日志文件名格式:myweb.com-access_log_YYYYMMDD,myweb.com-error_log_YYYYMMDD,如myweb.com-access_log_20150508,myweb.com-error_log_20150508   备份脚本存放目录:/chinasofti/wwwbakscript/   备份文件存放目录:/chinasofti/wwwbakdir/   web备份文件名格式:bbs.myweb.com_YYYYMMDD,如bbs.myweb.com_20150508.tar.gz   mysql备份文件格式:数据库名_$(date +%Y%m%d).sql.gz 写在前面:务必注意各个目录的说明,运用是注意修改。完全不改是用不了的。注意各个目录和文件的对应关系。 淡绿色底的为linux命令,淡黄色底的为shell脚本内容,其他的为备注说明。 操作步骤 root用户登陆后 1、切换目录cd /chinasofti/wwwbakscript 2、创建备份脚本vi mywebbak.sh 按i然后输入以下内容   #!/bin/bash  #backup /chinasofti/www/bbswebdir and database   ###################切换到web目录#################  cd /chinasofti/www/bbswebdir   ###################删除web日志#################  rm -f ./httplogs/myweb.com-access_log_$(date +%Y%m%d --date='7 days ago')  rm -f ./httplogs/myweb.com-error_log_$(date +%Y%m%d --date='7 days ago')   ###################删除备份文件#################  rm -f /chinasofti/wwwbakdir/bbs.myweb.com_$(date +%Y%m%d --date='7 days ago').tar.gz   ###################备份web程序#################  tar -zcf /chinasofti/wwwbakdir/bbs.myweb.com_$(date +%Y%m%d).tar.gz ./* ./.[!.]*   ###################删除备份数据库####################  rm -f /chinasofti/wwwbakdir/数据库名_$(date +%Y%m%d --date='7 days ago').sql.gz  ###################备份数据库####################  mysqldump -u数据库账号 -p"数据库密码" 数据库 | gzip >/chinasofti/wwwbakdir/数据库名_$(date +%Y%m%d).sql.gz   #################导出单个表数据和结构############   #mysqldump -u账号 -p 数据库名 表名 > /root/XXXX.sql 添加完成后,按键盘右上角的“esc”键,然后输入英文的冒号加x(:x),回车完成。 注意:红色字体部分为路径(注意修改),品红色部分为文件名(注意修改)。 4、添加可执行权限chmod +x mywebbak.sh 5、定时执行crontab -e 按i编辑,添加运行的脚本和时间。如:0 1 * * * /chinasofti/wwwbakscript/mywebbak.sh 则为每天凌晨1点执行,/chinasofti/wwwbakscript/mywebbak.sh这个shell脚本。 修改完成后,按键盘右上角的“esc”键,然后输入英文的冒号加x(:x),回车完成。 6、每天检查脚本是否正常运行。 其它相关文章: windows下如何对mysql进行整裤备份 mysql导入和导出数据 本文转自秋楓博客园博客,原文链接:http://www.cnblogs.com/rwxwsblog/p/4488610.html,如需转载请自行联系原作者
文章
关系型数据库  ·  Linux  ·  数据库  ·  MySQL  ·  Shell  ·  数据安全/隐私保护  ·  Windows  ·  程序员
2017-11-08
手动备份
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 PHP定时完成数据库的备份    1.手动备份数据库(表的)方法 cmd控制台(windows指令): mysqldump –u root –proot 数据库 [表名1 表名2..]  > 文件路径 比如: 把temp数据库备份到 d:\temp.bak mysqldump –u root –proot test2 > C:\Users\Administrator\Desktop\MongoDB\backup\temp.bak(不要分号和用户名密码) 如果你希望备份是,数据库的某几张表( d:\temp.dept.bak名字和后缀任意 ) mysqldump –u root –prot temp dept > d:\temp.dept.bak   如何使用备份文件恢复我们的数据. mysql控制台(进到mysql里面去) source d:\temp.dept.bak cmd控制台(windows指令): mysql backup1 < C:\Users\Administrator\Desktop\MongoDB\backup\ku_test2.bak(不报错就是执行了) 1 2 3 4 5 6 7 8 9 10 2.使用定时器来自定完成 把备份数据库的指令,写入到 bat文件, 然后通过任务管理器去定时调用 bat文件. mytask.bat 内容是: D:\MYSQL\mysql-5.7.20-winx64\mysql-5.7.20-winx64\bin\mysqldump backup1 > C:\Users\Administrator\Desktop\MongoDB\backup\backup1.sql 如果你的mysqldump.exe文件路径有空格,则一定要使用 “” 包括. “D:\MYSQL\mysql   winx64\mysql  winx64\bin\mysqldump” backup1 > C:\Users\Administrator\Desktop\MongoDB\backup\backup1.sql 手动双击看能不能运行bat文件,可以看这个文件有没有问题。 把mytask.bat 做成一个任务,并定时调用在 2:00 调用一次。 步骤 开始搜索:任务计划->创建基本任务,选中你的mytask.bat文件 ,最后配置: 现在问题是,每次都是覆盖原来的备份文件,不利用我们分时间段进行备份, 我们可以这样处理; 示意图: 1 2 3 4 5 6 7 8 9 10 3.使用PHP完成定时发送邮件的功能。 可以自己搭建邮件服务器,也可以通过账号密码让搜狐转发。     1.上面的代码是模拟发送邮件,看看如何真正发送邮件. 在PHP中,有一个函数 mail , 是用于发送邮件,我们实际上可以使用 PHPMailer 类,我们使用他完成.   要正确的使用PHPMailer 发送邮件,需要满足如下条件 1.本身机器是可以联网的 2.需要搭建自己的smtp邮件服务器->示意图 1 2 3 4 5 6 1.搭建自己的邮件服务器.(自己搭建的邮件服务器,首先写的代码把邮件发送给了自己搭建的服务器,) 卸载. 安装时傻瓜式的,一步一步的走ok 配置 : 3.1选择access数据库(邮件要存起来,access是小型数据库,office自带的) 3.2,SMTP是发送协议25端口,POP3是接收协议110端口。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 3.3配置邮件服务器 点击设置->邮箱域名设置 点击设置->服务器设置 设置一个账号(试用版本只能设置5个账号)     如何在linux下完成定时任务: linux如何备份. 1. 直接执行PHP脚本, 需要在同一个服务器上执行.linux上不是像windows用任务计划,而是用crontab 搞的。 # crontab -e 00 * * * * /usr/local/bin/php /home/htdocs/phptimer.php 2.通过HTTP请求来触发脚本, PHP文件允许不在同一服务器上 # crontab -e 00 * * * * /usr/bin/wget -q -O temp.txt http://www.phptimer.com/phptimer.php 上面是通过wget来请求PHP文件, PHP输出会保存在临时文件temp.txt中 # crontab -e 00 * * * * /usr/bin/curl -o temp.txt http://www.phptimer.com/phptimer.php 上面是通过curl -o来请求PHP文件, PHP输出会保存在临时文件temp.txt中 # crontab -e 00 * * * * lynx -dump http://www.phptimer.com/phptimer.php 上面是通过Lynx文本浏览器来请求PHP文件    本文转自农夫山泉别墅博客园博客,原文链接:http://www.cnblogs.com/yaowen/p/8250671.html,如需转载请自行联系原作者
文章
关系型数据库  ·  Linux  ·  PHP  ·  数据库  ·  Windows  ·  MySQL  ·  NoSQL  ·  MongoDB  ·  数据安全/隐私保护
2017-11-14
Linux下备份到腾讯云cos、阿里云oss、七牛云存储脚本工具
Linux下备份到腾讯云cos、阿里云oss、七牛云存储脚本工具 简要说明: 这是一个定时将网站备份的脚本。支持腾讯云、阿里云、七牛云存储。这个脚本的运行环境:CentOS 6-7(64位)、RedHat 6-7(64位)。腾讯云、阿里云环境下均使用官方推荐工具,从而获得急速上传速率。但是,由于七牛云存储上传速度受多方面限制,故不推荐使用。 本脚本每次执行都会自动检测是否有更新版本,故如有BUG问题,请及时提交以方便修复。 更新日志: 20171017:代码重构,支持将网站上传到腾讯云COS、阿里云OSS、七牛云存储(0.1) 20171018:修复cos.conf判断错误(0.1.1) 20171023:增加阿里云多站点备份(0.1.2) 20171025:增加腾讯云多站点备份,修复多站点压缩备份BUG(0.1.3) 20171029:修复阿里云下crontab不能正常上传bug(v0.1.4) 20171030:修复阿里云/腾讯云修改key后,备份报错问题。移动pip判断到相应位置(v0.1.5) 安装步骤: 1,配置crontab。 crontab -e 50 23 * * * /bin/sh /tmp/itxg.sh 备注:每天23点50分,执行/tmp/itxg.sh。 2,配置itxg.conf,首次执行itxg.sh将在本目录下生成itxg.conf配置文件。配置文件信息如下: ####----公共----#### #当前配置文件版本 conf_version=$version #(必填)enable=tengxun为开启备份到腾讯,qiniu为备份到七牛,aliyun为备份到阿里云,baiduyun为>备份到百度云 enable= #备份周期0天为不删除备份文件 rmdate=0 #开启数据库备份yes,no db_enable=no #(必填)需要备份的网站目录,绝对路径末尾不需要加/ backup_file= ####----多站点----#### #是否支持多站点,默认为关闭 multistation=no #数字从0开始,因此2个站点该数字写1 multisitenumber=1 #上传到一个bucket下的不同目录,例如:shengbao itxueguan multlist=(shengbao itxueguan) #多站点备份路径,2个站点路径中间以空格分割。绝对路径末尾不需要加/ backup_filelist=(/data1 /data2) ####----数据库----#### #数据库用户名 DB_USER= #数据库密码 DB_PASS= #数据库连接地址 DB_HOST=localhost #数据库名称 DB_NAME=#多站点数据库名称列表multdblist=(shdb itxgdb) ####----腾讯----#### #你的bucket名称 txbucketname= #腾讯access_id txaccess_id= #腾讯secret_key txsecret_key= #腾讯txappid txappid= #腾讯访问api区域,北京一区华北(ap-beijing-1),北京(ap-beijing),华东(ap-shanghai),华南(ap-guangzhou),西南(ap-chengdu),新加坡(ap-singapore),香港(ap-hongkong),多伦多(na-toronto),法兰克福(eu-frankfurt) txregion= ####----阿里云----#### #你的bucket名称 albucketname= #阿里云access_id alaccess_key_id= #阿里云secreret_key alaccess_key_secret= #阿里云endpoint alendpoint= ####----七牛----#### #你的证书ID qnak= #你的证书key qnsk= #你的bucket名称 qiniubucket= ####----结束----#### 备注:标注(必须)的为必须设置,当设置enable=tengxun时,腾讯配置所有项变为必填项。其他配置类似。 常见问题: 1,数据库开启备份后:"Warning: Using a password on the command line interface can be insecure."为正常现象。 下载地址: wget update.itxueguan.com/itxg.sh 注明:本文章为转载. 本文转自  一招拜师  51CTO博客,原文链接:http://blog.51cto.com/sadoc/1980431
文章
存储  ·  Linux  ·  数据库  ·  对象存储
2017-11-22
只有MYSQL数据目录如何挂载恢复
前提条件1、系统盘已经初始化,且已经重新搭建好mysql环境。2、原有mysql数据目录在系统盘的情况下,已经通过快照创建磁盘的方法临时创建数据盘挂载到了主机上。3、原有mysql数据目录在数据盘的情况下,系统内此块数据盘已经手动mount挂载。操作步骤1、挂载数据库目录如前提条件都已经操作正确,那么系统内挂载的数据盘分区内,已经可以看到原有mysql的数据目录,如下图下图样例是共享库,也就是有多个库文件,找一个库进入可以看到都是frm表文件,这部分文件肯定是无法直接看到数据的,所以就需要接下来的操作。2、修改mysql数据目录根路径挂载数据目录确认好后那么就需要修改我们重新安装好的mysql数据根路径。如下图,数据盘目录实际我挂载到了mnt目录下,那么结合mysql数据库的路径,那么就填写为了/mnt/mysql/(根据实际情况数据库路径来填写即可)修改数据库用户属组权限为mysql.mysql(一些情况下数据库权限并非默认mysql.mysql,所以手动确认修改下)chown 加 R参数,mysql目录下所有库都统一修改为mysql.mysql(因为案例是多个库,并非是单独一个库,所以加R参数全部修改)3、启动调试mysql至此数据目录都已经挂载完成,但是需要进一步启动调试。手动启动mysql会发现mysql启动报错,但是可以看到监听。这个错误的原因是案例使用的库较为特殊,库结构存在不同,缺少performance_schema库等,所以出现了这个类似报错。这个时候可以给mysql配置下免密登录,再mysql配置文件中添加skip-grant-tables然后再启动mysql就不会报错了。如果是使用的话,此时免密直接登录mysql,也可以看到虚拟主机数据库内的库文件了。4、mysqldump导出数据上述第三步结束后,其实已经是可以使用了,但是比如原有的库是在系统盘,现在的库文件是临时创建数据盘中的,数据盘并非长期使用的,那么就需要把这个数据从数据盘中导出来。现在退出mysql登录,然后使用mysqldump导出数据。mysqldump -uroot --databases 数据库名 > /test.sql如上命令,就是把单独指定的库导出数据导出到test.sql中。此时可能还会存在问题,如下图,如手动安装数据库版本与虚拟主机库版本不对,可能会有如下问题。解法可以尝试执行下mysql_upgrade -u root --force 命令。此命令的意思是重新生成了sys、performance_schema数据库,但这个命令会重新检查每个库,多个库的情况下检查会需要一些时间。检测完毕后再次执行mysqldump会提示access denied权限拒绝,是因为刚刚重新执行了mysql_upgrade重新生成,所以需要密码。但是之前上述再配置文件中已经配置过免密登录,所以只需要重启下mysql服务,然后再mysqldump导出即可,如下图,重启mysqld服务后,再次执行mysqldump无其他报错了。现在直接查看导出的test.sql文件就可以看到导出这个库的sql了,至此数据库数据也导出完毕后序 本文虽然讲述了如何导出mysql数据,如何进行恢复,但是前提其实是系统存在问题,服务无法启动等极端场景,只能是通过初始化系统恢复,方法不限于本文提到的方式,但是导致采用此种方式的原因还是因为平时的运维习惯,并没有做手动备份或者是快照备份等,出现问题后只能是通过初始化系统这种方式来解决。 所以更应该的操作应该是后续养成良好的运维习惯,无论是哪种备份方式,自己做定时备份手动备份,备份到本地,或者是云上提供的“快照备份”等功能,已有备份的场景,就可以直接通过备份来进行恢复数据,而不是这种费时费力的方式通过其他手段再单独导出。
文章
SQL  ·  运维  ·  关系型数据库  ·  MySQL  ·  Linux  ·  数据库  ·  数据安全/隐私保护
2022-11-15
PostgreSQL centrol PITR backup with kvm and zfs and nfs or zvol
在实际的生产环境中, 当数据库越来越多, 越来越大. 备份可能会成为比较大的问题, 传统的逻辑备份对于大的数据库不适用(因为备份和还原可能是比较耗时的, 而且也不能回到任意时间点,还会造成数据库膨胀(长时间repeatable read iso), 好处是可以跨平台恢复, 可选恢复表等). 但是基于XLOG的增量备份, 又需要结构一致, 如果要做集中的备份, 可能导致不同数据库集群占用同一个文件夹带来冲突(当然解决办法是重定向一个文件夹就好了) 那么如果环境中已有虚拟机的话, 可以使用虚拟机来解决文件夹冲突的问题. (不过个人还是推荐使用重定向, 可以省掉一层虚拟机的管理成本) zfs在这里主要用到它的压缩, 去重和snapshot功能. 减少存储空间, 加快恢复速度等. 可以放在crontab定时执行, 例如2小时1次. 以下是使用虚拟机和zfs来管理存储的一种集中式XLOG增量备份的场景举例 ;  环境 :  DELL R720xd 32G mem 8 核 Intel(R) Xeon(R) CPU E5-2609 v2 @ 2.50GHz CentOS 6.5 x64 虚拟化, KVM 存储管理, ZFS, 开启压缩, dedup. (也可以考虑开源的分布式文件系统) 虚拟机数据分区, nfs或zvol. 方案图 :  这里的虚拟机数据分区用法, 分为两种, 一种是NFS, (VM中挂载NFS来实现PGDATA的存储) zvol则是直接使用zfs卷来管理的, 效率比nfs更高一点. 使用nfs的好处, 虚拟机和ZFS设备不需要在同一台主机. 使用zvol的话, 虚拟机和ZVOL必须是同一主机的. 整体的架构. 归档wal存储可以考虑zfs或分布式存储. 归档方法很多, 可以使用rsync, cp, nfs等. 使用ZFS snapshot加速PITR. 使用本地用户的话, 架构图如下 :  每个用户配置独立的zfs存储对应的$PGDATA, 每个用户建议编译独立的$PGHOME. 使用ZFS snapshot加速PITR. [参考]1. http://blog.163.com/digoal@126/blog/static/16387704020144183320807/ 2. http://blog.163.com/digoal@126/blog/static/163877040201322462042878/ 3. http://blog.163.com/digoal@126/blog/static/163877040201451332042136/ 4. https://access.redhat.com/site/documentation/en-US
文章
存储  ·  KVM  ·  数据库  ·  虚拟化
2016-04-05
Mysql 常用(学习笔记二十二)
开启:./mysqld_safe --default-file=/etc/my.cnf --user=mysql 检查端口: netstat -tnlup|grep 3306  lsof -i:3306 为MySQL设置密码或者修改密码:mysqladmin -u root password “newpass”  如果root已经设置过密码,采用如下方法    mysqladmin -u root password oldpass “newpass” mysqladmin -u root password "xx" 登陆MySQL数据库:mysql -h -P -u -p xx show variables like '%character_set%'  select version(); select user(); create database oldboy character set gbk; grant all on *.* to oldboy@'%' identified by '12356'; flush privileges; show grants for oldboy@'localhost'; select user,host from mysql.user; use oldboy select database(); create table test(id int(4) not nullname varchar(64) not null); desc test show columns from test show fule columns from test; insert into test value(xx,'xx') insert into test(id,name) values(2,'老男孩'),(3,'oldboyedu'); select * from test where name='oldboy'; update test set name='oldgirl' where id=1; alter table test add age tinyin(2) after id; mysqldump -uroot -pxxx -B oldboy>xx.sql truncate test drop table test; source /opt/oldboy1.sql alter table test add shouji char(11) after name; insert into test(id,name,shouji) values(1,'aige','13555555'),(2,'oldboy','1388888888'); drop index xxx on xxx select * from test  where shouji like '135%' and name like 'oldboy'; revoke select on oldbody.* from oldboy@'%' mysql -uroot -poldboy123 -e "show grants for root@'localhost'" | grep -i select select user,host from mysql.user; drop user oldboy@'localhost'; mysqladmin -uroot -poldboy123 shutdown 使用mysqldump以特定编码导出数据(其中utf8为所需编码,可按需修改),如:       mysqldump --default-character-set=utf8 -t -u root -p 数据库名 >/root/data.sql default_character_set=utf8 alter database test default character set utf8; alter table category default character set utf8; 请解释关系型数据库概念及主要特点? 关系型数据库 1、概念 所谓的关系型数据库指的是:采用了关系模型来组织数据的数据库。简单讲,关系模型就是二维表格模型。二维表格中的行在数据库中我们称之为记录,列在数据库中我们成为字段。 2、常见的数据库 关系数据库我们接触的比较多些,经常见到的有access、sqlserver、mysql和orcal、DB2等。 3、关系型数据库的优点 能够保持数据的一致性 4、关系型数据库的不足 大量数据的操作 字段的不固定 对表的索引以及表机构的更新 关系型数据库模型是把复杂的数据结构归结为简单的二元关系,对数据的操作都是建立一个或多个关系表格上,最大的特点就是二维的表格,通过SQL结构查询语句存取数据,保持数据一致性方面很强大 非关系型数据库也被称为NoSQL数据库,数据存储不需有特有固定的表结构 特点:高性能、高并发、简单易安装 1、memcaced 纯内存 2、redis 持久化缓存 3、mongodb 面向文档 如果需要短时间响应的查询操作,没有良好模式定义的数据存储,或者模式更改频繁的数据存储还是用NoSQL sql语句分类如下 DDL 数据定义语言,用来定义数据库对象:库、表、列 代表性关键字:create alter drop DML 数据操作语言,用来定义数据库记录 代表性关键字:insert delete update DCL 数据控制语言,用来定义访问权限和安全级别 代表性关键字:grant deny revoke DQL 数据查询语言,用来查询记录数据 代表性关键字:select DDL DML DCL DQL char长度是固定不可变的,varchar长度是可变的(在设定内)比如同样写入cn字符,char类型对应的长度是4(cn+两个空格),但varchar类型对应长度是2 create database mingongge default charset utf8 collate utf8_general_ci; grant all on *.* to mingongge@'172.16.1.0/24' identified by '123456'; mysql多实例就是在同一台服务器上启用多个mysql服务,它们监听不同的端口,运行多个服务进程,它们相互独立,互不影响的对外提供服务,便于节约服务器资源与后期架构扩展 多实例的配置方法有两种: 1、一个实例一个配置文件,不同端口 2、同一配置文件(my.cnf)下配置不同实例,基于mysqld_multi工具 如何加强MySQL安全,请给出可行的具体措施? 1、删除数据库不使用的默认用户 2、配置相应的权限(包括远程连接) 3、不可在命令行界面下输入数据库的密码 4、定期修改密码与加强密码的复杂度 delete和truncate删除数据的区别? 前者删除数据可以恢复,它是逐条删除速度慢 后者是物理删除,不可恢复,它是整体删除速度快 sort_buffer_size参数作用?如何在线修改生效? 在每个connection(session)第一次连接时需要使用到,来提访问性能 set global sort_buffer_size = 2M 如何在线正确清理MySQL binlog? 首先查看主从库正在使用的binlog文件名称 show master(slave) status\G 删除之前一定要备份 purge master logs before'2017-09-01 00:00:00'; purge master logs before '' :Binlog工作模式有哪些?各什么特点,企业如何选择? 1.Row(行模式); 日志中会记录成每一行数据被修改的形式,然后在slave端再对相同的数据进行修改 2.Statement(语句模式) 每一条修改的数据都会完整的记录到主库master的binlog里面,在slave上完整执行在master执行的sql语句 3.mixed(混合模式) 结合前面的两种模式,如果在工作中有使用函数 或者触发器等特殊功能需求的时候,使用混合模式 数据量达到比较高时候,它就会选择 statement模式,而不会选择Row Level行模式 误操作执行了一个drop库SQL语句,如何完整恢复? 将0点时的binlog文件与全备到故障期间的binlog文件合并导出成sql语句 mysqlbinlog --no-defaults mysql-bin.000011 mysql-bin.000012 >bin.sql 将导出的sql语句中drop语句删除,恢复到数据库中 mysql -uroot -pmysql123 < bin.sql mysqldump备份使用了-A -B参数,如何实现恢复单表? -A 此参数作用是备份所有数据库(相当于--all-databases) -B databasename 备份指定数据(单库备份使用) 详述MySQL主从复制原理及配置主从的完整步骤     主从复制的原理如下:主库开启binlog功能并授权从库连接主库,从库通过change master得到主库的相关同步信息,然后连接主库进行验证,主库IO线程根据从库slave线程的请求,从master.info开始记录的位置点向下开始取信息, 同时把取到的位置点和最新的位置与binlog信息一同发给从库IO线程,从库将相关的sql语句存放在relay-log里面,最终从库的sql线程将relay-log里的sql语句应用到从库上,至此整个同步过程完成,之后将是无限重复上述过程完整步骤如下:1、主库开启binlog功能,并进行全备,将全备文件推送到从库服务器上2、show master status\G 记录下当前的位置信息及二进制文件名3、登陆从库恢复全备文件4、执行change master to 语句5、执行start slave and show slave status\G 如何开启从库的binlog功能? 修改配置文件加上下面的配置 log_bin=slave-bin log_bin_index=slave-bin.index 需要重启服务生效 MySQL如何实现双向互为主从复制,并说明应用场景? auto_increment_increment=2 auto_increment_offset=1 log-slave-updates [mysqld] auto_increment_increment  = 2  #起始ID auto_increment_offset    = 1  #ID自增间隔 log-slave-updates  从库配置 [mysqld] auto_increment_increment  = 2  #起始ID auto_increment_offset    = 2  #ID自增间隔 log-slave-updates 主从库服务器都需要重启mysql服务 MySQL如何实现级联同步,并说明应用场景? 级联同步主要应用在从库需要做为其它数据库的主库 在需要做级联同步的数据库配置文件增加下面的配置即可 log_bin=slave-bin log_bin_index=slave-bin.index 如何监控主从复制是否故障? mysql -uroot -ppassowrd -e "show slave status\G" |grep -E "Slave_IO_Running|Slave_SQL_Running"|awk '{print $2}'|grep -c Yes 通过判断Yes的个数来监控主从复制状态,正常情况等于2 mysql -uroot -pxxx -e "show slave status\G"|grep -E "Slave_IO_Running|Slave_SQL_Running"|awk '{print $2}'|grep -c Yes MySQL数据库如何实现读写分离? atlas 生产一主多从从库宕机,如何手工恢复? 1、执行stop slave 或者停止服务 2、修复好从库数据库 3、然后重新操作主库同步 生产一主多从主库宕机,如何手工恢复? 1、登陆各个从库停止同步,并查看谁的数据最新,将它设置为新主库让其它从库同步其数据2、修复好主库之后,生新操作主从同步的步骤就可以了 #需要注意的新的主库如果之前是只读,需要关闭此功能让其可写#需要在新从库创建与之前主库相同的同步的用户与权限#其它从库执行change master to master_port=新主库的端口,start slave MySQL出现复制延迟有哪些原因?如何解决? 1、需要同步的从库数据太多 2、从库的硬件资源较差,需要提升 3、网络问题,需要提升网络带宽 4、主库的数据写入量较大,需要优配置和硬件资源 5、sql语句执行过长导致,需要优化 给出企业生产大型MySQL集群架构可行备份方案? 1、双主多从,主从同步的架构,然后实行某个从库专业做为备份服务器 2、编写脚本实行分库分表进行备份,并加入定时任务 3、最终将备份服务推送至内网专业服务器,数据库服务器本地保留一周 4、备份服务器根据实际情况来保留备份数据(一般30天) 什么是数据库事务,事务有哪些特性?企业如何选择? 数据库事务是指逻辑上的一组sql语句,组成这组操作的各个语句,执行时要么成功,要么失败 特点:具有原子性、隔离性、持久性、一致性 请解释全备、增备、冷备、热备概念及企业实践经验? 全备:数据库所有数据的一次完整备份,也就是备份当前数据库的所有数据 增备:就在上次备份的基础上备份到现在所有新增的数据 冷备:停止服务的基础上进行备份操作 热备:实行在线进行备份操作,不影响数据库的正常运行 全备在企业中基本上是每周或天一次,其它时间是进行增量备份 热备使用的情况是有两台数据库在同时提供服务的情况,针对归档模式的数据库 冷备使用情况有企业初期,数据量不大且服务器数量不多,可能会执行某些库、表结构等重大操作时 MySQL的SQL语句如何优化? 建立主键与增加索引 企业生产MySQL集群架构如何设计备份方案? 1、集群架构可采用双主多从的模式,但实际双主只有一主在线提供服务,两台主之间做互备 2、另外的从可做读的负载均衡,然后将其中一台抽出专业做备份 企业生产MySQL如何优化(请多角度描述)? 1、提升服务器硬件资源与网络带宽 2、优化mysql服务配置文件 3、开启慢查询日志然后分析问题所在 MySQL高可用方案有哪些,各自特点,企业如何选择? 高可用方案有 1、主从架构 2、MySQL+MMM  3、MySQL+MHA  4、mysql+haproxy+drbd  5、mysql+proxy+amoeba 如何批量更改数据库表的引擎? 通过mysqldump命令备份出一个sql文件,再使用sed命令替换 或者执行下面的脚本进行修改 #!/bin/sh user=root passwd=123456 cmd="mysql -u$user -p$passwd " dump="mysqldump -u$user -p$passwd" for database in `$cmd -e "show databases;"|sed '1,2d'|egrep -v "mysql|performance_schema"` do for tables in `dump -e "show tables from $databses;"|sed '1d'` do $cmd "alter table $database.$tables engine = MyISAm;" done done 如何批量更改数据库字符集? 通过mysqldump命令备份出一个sql文件,再使用sed命令替换sed -i 's/GBK/UTF8/g' 网站打开慢,请给出排查方法,如是数据库慢导致,如何排查并解决,请分析并举例? 1、可以使用top free 等命令分析系统性能等方面的问题 2、如是因为数据库的原因造成的,就需要查看慢查询日志去查找并分析问题所在
文章
SQL  ·  关系型数据库  ·  MySQL  ·  数据库  ·  Perl
2018-05-22
Oracle数据库安全面面观
专家简介   张文宇:10年以上IT服务相关工作经验,长期从事系统、网络及数据库方面的规划设计、工程实施与运维管理工作,具备丰富的运营商、医疗等行业项目经验。目前专注项目管理、解决方案、售前及咨询类工作。持有Oracle 8i OCP,10g OCM,及思科、微软等厂商产品认证。    1概述   数据库中保存的数据涉及各类账号、密码、个人隐私、安全信息等敏感信息,核心数据是企业的命脉。通过建立完善的信息安全系统,保护企业核心数据尤其是企业商业机密,防止从内、外部泄密,已经成为当前众多企业的共识。   随着信息化建设的不断发展,IT安全建设的重点,已经从传统的网络安全、桌面安全、系统安全、应用安全和身份认证管理安全等领域,转向了如何加强IT系统核心的数据库安全防范。   数据库成为企业信息资产的同时, 也被越来越多的不良之徒所觊觎。数据被违规访问、删、改、复制和缺乏审计的安全问题, 已经成为IT系统最大的威胁。根据IOUG 和Verizon Business的最新市场调查,2010 年全球造成严重后果的IT安全事件中92%是针对数据库的侵入,89%的黑客采用了SQL注入技术,84%的外部攻击利用了管理不善的数据库用户权限。   那么,如何才能更有效地保护数据库不受侵害?如何解决非法访问的监控与审计?如何达到《信息安全等级保护条例》的信息安全合规要求?怎样才能满足中国SOX《企业内部控制基本规范》的规定?   本文从数据安全角度简述数据库安全的管理,从逻辑安全与物理安全两个方面进行论述。   2安全状况分析   调查结果显示92%的记录源自被侵入的数据库服务器,也就是说数据库安全是确保数据安全的关键。     -- Databases and file servers, both repositories of so much valuable information, are also targeted regularly.   近年一些著名的泄密门: 省级电信公司的增值服务客户信息被竞争对手掌握 某移动公司的充值卡数据被篡改、作案者卖卡获利380万 某地社保核心参数被修改,导致当月所有缴费金额错误 某地社保受益账户修改,诈领养老金事件   数据泄漏的途径离不开以下三个层面: 存储层:直接盗走数据文件或备份文件,异地还原后得到数据; 数据访问:通过人为获取DBA等高权限用户的口令,或通过权限提升等漏洞得到一个高权限用户身份,进行数据窃取; 应用层:破解或通过工作便利获取应用中的数据库用户口令,绕开业务系统直接访问所有数据(因业务系统中往往对操作范围进行限定,只可获得局部数据)。   数据库的安全漏洞与威胁类别繁多,入侵数据库的常见手段不下几十种,攻击者最常使用的有: 通过暴力破解数据库用户口令,操纵数据库 利用缺省口令的漏洞访问数据库 利用权限提升的漏洞得到高权限用户身份,控制数据库 利用PL/SQL注入等,获取访问权限提升,操纵数据库 利用管理漏洞,获知DBA等合法用户名的口令,操纵数据库 入侵到数据库服务器主机,拷贝数据文件、或备份文件     3数据逻辑安全防御措施   如前所述,真正行之有效的数据库防护的技术手段应该是从根源上,进行核心数据的增强访问控制。包括存储层上利用加密技术保护核心数据项、访问控制上采用独立的权限控制增强技术防止DBA等高权限用户,应用层保证数据库用户与业务系统的绑定无法绕开。   本文后续重点介绍数据库层面的数据安全防御措施。     3.1 用户管理   首先应针对数据库账号,将其按照功能进行分类,例如:数据库默认账号、程序账号、维护账号等。     数据库用户/用户组应配置相应的安全规则,如下:     使用用户profile进行属性控制,针对不同类型的用户,使用不同的profile属性:     3.2 权限管理   根据最佳实践,针对权限管理建议从用户权限、账号角色管理、数据字典保护、DBA组权限限制方面做到如下几点: 根据用户的业务需要,配置其所需的最小权限 使用数据库角色(ROLE)来管理对象的权限 启用数据字典保护,只有SYSDBA用户才能访问数据字典基础表 限制在DBA组中的操作系统用户数量,通常DBA组中只有Oracle安装用户     遵循权限最小化原则,使用角色对用户进行授权。     3.3 日志安全管理   日志安全方面,可从登录日志、操作日志、系统安全事件、数据库审计策略四个方面考虑: 记录登录日志:数据库应配置日志功能,对用户登录进行记录,记录内容包括用户登录使用的账号、登录是否成功、登录时间以及远程登录时用户使用的IP地址。 记录操作日志:数据库应记录用户对数据库的操作,包括但不限于以下内容:账号创建、删除,权限、口令修改,读取与修改数据库配置,读取与修改业务用户的敏感数据。记录需要包含用户账号、操作时间、操作内容以及操作结果几个方面。 记录系统安全事件:配置在系统层面记录安全事件,方便管理人员分析。 数据库审计策略:根据业务要求制定数据库审计策略。   3.4 数据库审计   需要特别强调一下数据库审计方面的内容,Audit审计的种类可大致分为如下几种: 强制审计:为每一次实例启动写出审计记录到OS文件,shutdown以及权限登录的记录存放在$ORACLE_HOME/rdbms/audit 目录下。其中对SYS用户的审计记录SYSDBA/SYSOPER等权限用户的操作,审计记录存放在OS 文件,SYSLOG中。 标准审计:记录用户针对数据库对象、语句、权限级别的行为。审计记录可以存放在OS文件、XML文件或数据库中(AUD$基表),分为如下级别: ◎对象级别审计 ◎权限级别审计 ◎语句级别审计 细粒度控制:基于用户访问的数据记录用户行为。 审计记录存放在数据库内(FGA_LOG$)或者XML文件中。   标准审计包括:SQL语句审计、系统权限审计与对象权限审计三类,流程及说明如下:       SQL 语句审计:幻灯片中显示的语句可审计影响表的任何数据定义语言 (DDL) 语句,包括 CREATE TABLE、DROP TABLE 和 TRUNCATE TABLE 等。可按用户名或者按成功或失败来设置 SQL 语句审计的重点:     SQL> AUDIT TABLE BY hr WHENEVER NOT SUCCESSFUL;   系统权限审计:可用来审计行使的任何系统权限(如 DROP ANY TABLE)。可按用户名或者成功或失败设置审计的重点。默认情况下,审计设置为 BY ACCESS。每次行使经审计的系统权限时,都会生成一条审计记录。可选择使用 BY SESSION 子句将这些记录组成一组,以便每个会话只生成一条记录。(这样,如果一个用户针对另一个用户的表发出了多条更新语句,则只收集一条审计记录。)请考虑使用 BY SESSION 子句来限制由于审计系统权限而对性能和存储产生的影响。   对象权限审计:可用来审计关于表、视图、过程、序列、目录和用户定义数据类型的操作。这种审计类型可按成功或失败设置审计的重点,而且可以按会话或访问权限分组。与系统权限审计不同,默认情况下,对象权限审计按会话分组。如果要为每个操作分别生成一条审计线索记录,必须显式指定 BY ACCESS。   细粒度审计Fine Grained Auditing (FGA)   FGA 策略通过DBMS_FGA包与表/视图/同义词关联起来,例如:     除脚本外,推荐使用Oracle Audit Vault 实时审计数据库活动。     Oracle Audit Vault 实时审计数据库活动实例:       3.5 敏感数据管理   数据安全主要针对数据库敏感数据进行安全保护,例如:姓名、电话、身份证号码、银行账号、用户密码等,包括:敏感数据的屏蔽、数据脱敏、数据加密三个方面,如下图:     工具方面推荐使用Oracle Database Vault 在数据库内部实施安全策略。     使用Oracle Data Masking 对生产数据进行不可逆的数据脱敏再用于非生产环境。     3.6 数据库漏洞管理   需要关注Oracle官方定期发布的补丁集,其中会包含最新的安全补丁,例如:     做到以上,我们的数据库就安全了吗?不!我们还忘记了,数据库物理安全!   4数据库物理安全   4.1 概述   数据库的物理安全,主要指数据库的应急/容灾措施,安保层面暂不涉及。那么,数据库的容灾有多重要呢? 只有6%的公司可以在数据丢失后生存下来,43%的公司会彻底关门,51%的公司会在两年之内消失。 在灾难之后,如果无法在14天内恢复信息作业,有75%的公司业务会完全停顿,43%的公司再也无法重新开业,20%的企业在两年之内被迫宣告破产。     数据大集中的同时也带来风险的高度集中,系统集中的程度越高,系统故障影响业务的范围越大,系统集中的程度越高,数据损坏将导致大量的业务数据丢失。   数据高可用能够保证业务的连续性,包括:保障关键业务应用、消除和减少宕机时间;也必须做到保证数据的安全,因为数据是企业最重要的资产,要保证24x7的数据可访问。   常见影响业务连续性的因素包括计划内与计划外两部分: 计划内 软件升级 备份、恢复、归档 数据中心迁移、整合 测试、容灾演习等   计划外 系统处理能力下降 人为操作故障:错误/恶意删除数据;错误/恶意执行程序或命令等 系统故障: UPS故障、硬盘故障、CPU故障、数据库软件故障等 安全体系被攻破 供电系统瘫痪  空调故障 机房结构性破坏:水灾、火灾、地震等 社会性恐慌:瘟疫等 环境紧急事件:污染等 城市事件:动乱、罢工等 气候灾难:台风等 战争、恐怖主义事件   4.2 容灾系统建设考虑的因素   1.风险分析 各种风险发生的概率及风险发生后对业务的影响程度   2.业务关键等级划分 关键业务/非关键业务 各项业务的容灾指标(RPO/RTO)   3.容灾策略 同城异址容灾/异地容灾 容灾层次:系统级、数据级、应用级和业务级 容灾范围:关键业务应急,全业务容灾 运营方式:主备中心, 双中心 容灾规模:同级容灾,降级容灾   4.灾难类型   需要考虑哪些灾难?怎样的灾难?会使业务中断多久?   5.恢复速度   灾难发生后需要多久来启动及运行系统?能否承受数天或数分钟的等待?   6.恢复程度   需要恢复每条记录和交易吗?可以使用上星期或昨天的数据吗?需要恢复一切吗?有不相关的文件吗?什么是合法隐含的要求?有少数的一组人输入交易吗?他们可以重新输入灾难期间丢失的交易吗?这些交易十分重要而不容许丢失吗?   7.可用的技术   必须结合考虑所选技术在本地区的适用性、实现条件以及在实施时是否受某些现有条件的制约?   8.方案总体成本   如果要做到RTO和RPO越小,则投入的建设成本越大,从下面的曲线可以清楚地看到其相关性。   除实现灾难备份需要多少投资外,还要考虑不实现灾难备份会损失多少钱?     4.3 容灾备份技术规范简介   企业运营系统的容灾备份系统规划和建设目标一般包括: 实现关键业务系统及其关联系统的数据安全 减少计划停机次数、时间,消除对核心数据的争用 将异地中心接管业务的时间控制在可以接受的范围内 实现异地中心的软硬件设备和数据的复用   灾难恢复的衡量指标主要有RTO与RPO两个: 恢复时间目标(RTO,Recovery Time Object),指最大计划停机时间/意外停机时间,商业机构可容忍的最长停机时间是多少。 恢复点目标(RPO,Recovery Point Object),指数据丢失限度,商业机构可承受的最大数据损失量是多少。   灾备解决方案的七个级别(7 Tiers for Disaster Recovery Solution 国际标准SHARE 78): 等级零:无异地备份 等级一:备份介质异地存放 等级二:备份介质异地存放及备用场地 等级三:备份介质异地存放及备份中心 等级四:定时数据备份及备份中心 等级五:实时数据备份及备份中心 等级六:零数据丢失   业务恢复要求指标级别分类: RTO从低到高分为5个级别,其中1级为最高级别:     RPO从低到高分为5个级别,其中1级为最高级别:     4.4 常见的数据保护技术   常见的数据保护/灾难备份策略主要分为四个大类: 传统的磁带备份,本地或异地存放 智能存储的远程磁盘镜像技术 ◎存储厂商的磁盘镜像 ◎虚拟存储 卷组复制技术(主机) 基于数据库日志的数据复制技术 ◎数据库自身的容灾和复制技术 (Oracle Data Guard) ◎开放的数据库同步技术 (如Oracle GoldenGate) 基于应用软件   此处我们主要介绍基于数据库日志的数据复制技术,包括Dataguard/Active Dataguard与GoldenGate两种Oracle公司的产品。   区别于传统的数据库高可用性技术与远程磁盘镜像技术,基于数据库日志的数据复制技术通过在生产与容灾端的网络上传输数据变更的部分,达到两端数据库的数据同步与一致性。     数据库级别复制:Oracle DG/ADG   Oracle Dataguard/Active Dataguard通过网络传输并应用数据库归档/在线日志。   可以分为同步复制与异步复制两种方式,使用同步复制可以实现数据的完全同步,即做到RPO=0,但也带来对网络状况要求高、远距离传输时容易影响应用等不利因素。采用异步复制,可以提供良好的性能,对生产端的影响非常小,相应的,无法做到RPO=0,灾难发生时会有一定的数据损失,两种方式的选择要从容灾系统建设的整体进行考虑。     Data Guard日志的网络传输:     以Active Data Guard为例,主要优势体现在: 热中心模式,容灾数据库可以处于热中心模式,可以分担业务查询等业务压力 实现方式、实施简单 应用透明,支持数据库所有特性 网络传输效率高 故障隔离,防止数据块损坏   Active Dataguard 效益分析:故障容错性     Active Dataguard 效益分析:附加意义—超越容灾     数据日志复制技术2:GoldenGate表级复制   不同于DG/ADG技术,GoldenGate最大的特点是可以进行基于表级别的复制,如此便可以实现只同步数据库中的部分关键表,非常适合应用于轻量级的应急系统中。       5总结   小结一下以上介绍的内容,怎样做到数据保护的深度防御和精确阻断?如何做到: 敏感数据“看不见” 核心数据“拿不走” 运维操作“能审计”     需要在数据安全管理的三个阶段进行防范:     需要针对数据库安全性进行纵深防御: 监视威胁并且在其到达数据库之前阻止它们 跟踪更改并审计数据库活动 控制对数据库中数据的访问 防止非数据库用户访问数据库 从非生产数据库中删除敏感数据     从数据库的角度出发,除了自带的软件安全功能,还可以结合人工管理的方式保障数据库安全。   1.账号管理 主机高权限账号 数据库高权限账号   2.变更管理 制定变更流程,严格按照流程执行 编写变更方案 进行方案评审 保留变更日志   3. 风险控制 定期梳理安全风险   最后,引用一篇文章“数据库管理员们的七个安全好习惯”(www.darkreading.com/database/7-habits-of-highly-secure-database-admin/240164634) 他们了解敏感数据身在何处; 他们频繁组织审计工作; 他们监控数据库活动与系统变更; 他们通过加密防止数据库内容泄露; 他们通过控制措施防止应用程序旁支攻击(来源单纯性,即只允许利用相关接入应用访问保存在数据库中的信息); 他们管理高权限用户的访问流程; 他们只在生产数据库内处理生产数据。 本文来自云栖社区合作伙伴"DBAplus",原文发布时间:2015-12-08
文章
存储  ·  监控  ·  安全  ·  关系型数据库  ·  数据库
2017-05-02
如何自动备份网站数据和数据
背景 网站的数据就是网站的灵魂,可是数据总是会因为各种原因,如服务器损坏,人员误操作而丢失 ,站长们最需要的就是能及时备份自己的数据。对于win服务器下的自动数据备份,网站文件,自然是比较好备份的,那么如果数据库也可以自动备份,那就基本实现完美自动备份。 阿里云对象存储(Object Storage Service,简称OSS),是阿里云对外提供的海量,安全,低成本,高可靠的云存储服务。用户可以通过调用API,在任何应用、任何时间、任何地点上传和下载数据,也可以通过用户Web控制台对数据进行简单的管理。OSS适合存放任意文件类型,适合各种网站、开发企业及开发者使用。 本文共享了一个由开发者自行撰写,将网站数据、服务器数据备份到OSS的教程 。 工具 阿里云对象存储OSS 自动备份脚本:OSS官方的FTP脚本或LNMP自动备份脚本  具体操作步骤 第一步:先创建一个OSS的Bucket,将读写权限设置成私有的(具体创建流程见:https://help.aliyun.com/document_detail/31885.html)  第二步:在bucket创建一个目录来存放备份文件  第三步:下载自动备份脚本,该脚本脚本基于OSS官方的FTP脚本和LNMP自动备份脚本。其中OSS FTP工具是一个特殊FTP server, 它接收普通FTP请求后,将对文件、文件夹的操作映射为对OSS的操作,从而使得您可以基于FTP协议来管理存储在OSS上的文件。(脚本下载地址:http://bbs.aliyun.com/job.php?action=download&aid=38817) 1、修改里面的AutoBackUpToOSS.sh 文件配置 #----------------------------------------------------------------------- #MySql数据库的信息 MYSQL_USER=root                                                #mysql用户名 MYSQL_PASS=123456                                        #mysql密码 MYSQL_PATH=/usr/local/mysql                        #mysql的安装目录,注意格式,反斜杠 #希望设置的FTP的账号、密码 FTP_USER=myusername                                        #ftp用户名 FTP_PASS=mypassword                                        #ftp密码 FTP_IP=127.0.0.1                                        #ftp地址 FTP_PORT=2121                                                #ftp 的端口号码,如果端口上已经有FTP存在,请更改成别的           FTP_backup=backup                                        #Bucket目录,这个要在OSS上面创建 #网站的根目录 WEB_DATA=/home/wwwroot                                #要备份的网站数据,注意格式,反斜杠 #OSS 信息 OSS_BUCKET=bucketname                                #OSS上的bucket名称 OSS_ACCESS_KEY_ID=key_id                        #OSS上的ACCESS_KEY_ID OSS_ACCESS_KEY_SECRET=key_secret        #OSS上的ACCESS_KEY_SECRET #本地备份文件存放目录 BACKUP_PATH=/home/backup #你要修改的地方从这里结束 #-----------------------------------------------------------------------  第四步:先安装软件的支持包   yum install -y tar ftp unzip 第五步:将代码下载的附件,上传到服务器,使用以下命令解压缩和运行 unzip AutoBackupToOSS.zip  chmod  x AutoBackupToOSS.sh  ./AutoBackupToOSS.sh  yum install -y tar ftp unzip  第六步:如果想要每天定时运行,请执行以下代码  crontab -e   第七步:按下键盘上的a,进入插入模式,复制一下内容到里面,自行修改文件的目录  00 00 * * * /root/AutoBackupToOSS.sh #00 00 代表的是 24:00分开始执行,如果要设置成 24:30 则输入 30 00  第八步:输入完成后按下ESC键,输入wq,按下回车保存  补充资料: OSS FTP使用教程:https://help.aliyun.com/document_detail/32190.html 本文详细教程:https://bbs.aliyun.com/read/153133.html?page=e OSS产品的具体介绍:https://help.aliyun.com/document_detail/31817.html  
文章
MySQL  ·  关系型数据库  ·  对象存储  ·  数据安全/隐私保护  ·  存储  ·  开发者  ·  数据库  ·  安全  ·  API
2016-07-23
[Shell 脚本] 备份数据库文件至OSS服务(纯shell脚本无sdk)
背景: 凡事使用服务器搭建的网站就需要定时备份网站数据,常见的方法是打包网站目录,然后备份到FTP服务器上等。也有通过OSS SDK把备份的网站文件上传到OSS服务器上,但是通过SDK来实现,需要一定的技术能力,而且相对比较复杂,需要使用更多的文件,而这篇文章是通过shell脚本,并不是通过OSS SDK来上传文件,简单方便。 步骤: 1、首先需要在阿里云注册账号,开通OSS服务,创建bucket,Bucket设置为私有读写。 2、将下面的脚本文件复制下来,保存为 .sh 脚本文件(例如:backupsqls,放置在/usr/local/sbin/backupsites),其中需要把oss地址、bucket名字、Access ID、Access Key、网站目录,已经通知邮件的地址修改成自己的。 3、使用命令: chmod +x /usr/local/sbin/backupsqls 对文件设置执行权限。 4、使用命令: echo “0 0 * * * /usr/local/sbin/backupsqls” >>/var/spool/cron/root 设置每天零点进行备份网站数据。 脚本: #!/bin/bash PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH Date=`date +%Y-%m-%d_%H:%M:%S` BucketTime=`date +%Y%m` OldDate=$(date -d "-7 days" "+%Y-%m-%d") Host="oss-cn-hangzhou-internal.aliyuncs.com" ###oss的地址### Bucket="bucketname" ###bucket名字### Id="xxxxxxxx" ###Access ID### Key="xxxxxxxxxx" ###Access Key### OssHost=$Bucket.$Host MYUSER="xxxxx" MYPASS="xxxxxx" ###备份数据库账号信息### DBS=`mysql -u$MYUSER -p$MYPASS -P3306 -Bse "show databases" | grep -v "information_schema" | grep -v "test"` ###罗列数据库信息### #========================BackUp SQL======================== for DateName in $DBS; do mysqldump --single-transaction -u$MYUSER -p$MYPASS -P3306 $DateName > /tmp/$DateName.$Date.sql zip -P 密码 /tmp/$DateName.$Date.sql.zip /tmp/$DateName.$Date.sql ###zip压缩设置的密码### if [ -s /tmp/$DateName.$Date.sql.zip ] ; then source="/tmp/$DateName.$Date.sql.zip" dest="$BucketTime/$DateName.$Date.sql.zip" resource="/${Bucket}/${dest}" contentType=`file -ib ${source} |awk -F ";" '{print $1}'` dateValue="`TZ=GMT env LANG=en_US.UTF-8 date +'%a, %d %b %Y %H:%M:%S GMT'`" stringToSign="PUT\n\n${contentType}\n${dateValue}\n${resource}" signature=`echo -en $stringToSign | openssl sha1 -hmac ${Key} -binary | base64` url=http://${OssHost}/${dest} echo "upload ${source} to ${url}" curl -i -q -X PUT -T "${source}" \ -H "Host: ${OssHost}" \ -H "Date: ${dateValue}" \ -H "Content-Type: ${contentType}" \ -H "Authorization: OSS ${Id}:${signature}" \ ${url} if [ $? -ne 0 ];then echo -e ""[$HOSTNAME] DateName $DateName $Date Fail Upload"" | mutt -s "'[$HOSTNAME] DateName $DateName $Date Fail Upload'" daobidao@daobidao.com else echo -e ""[$HOSTNAME] DateName $DateName $Date Success"" | mutt -s "'[$HOSTNAME] DateName $DateName $Date Success'" daobidao@daobidao.com rm -rf /tmp/$DateName.$OldDate* fi else echo -e ""[$HOSTNAME] DateName $DateName $Date Fail Backup "" | mutt -s "'[$HOSTNAME] DateName $DateName $Date Fail Backup'" daobidao@daobidao.com fi done #========================BackUp SQL======================== 执行效果可以查看: http://blog.daobidao.com/shell-backup-sqls-to-oss.html
文章
SQL  ·  Shell  ·  数据库  ·  开发工具  ·  对象存储
2019-04-18
...
跳转至:
阿里云支持与服务
2041 人关注 | 4890 讨论 | 805 内容
+ 订阅
  • windows出现错误0x800401E5:没有供标记使用的对象
  • Nginx 配置HTTPS证书提示报错
  • Alibaba Cloud Linux 3安装Wordpress以及更换wordpress版本
查看更多 >
数据库
252583 人关注 | 50737 讨论 | 94862 内容
+ 订阅
  • 阿里云国际版账号注册常见问题汇总
  • 阿里云国际站一级分销商,只需一个邮箱即可注册国际账号,可代充值
  • 记CentOS7.6 zabix5.0-0 —agent2监控Mysql数据库
查看更多 >
开发与运维
5622 人关注 | 131425 讨论 | 301869 内容
+ 订阅
  • 记CentOS7.6 zabix5.0-0 —agent2监控Mysql数据库
  • 【算法日记】快速幂:关于我知道答案却做不出来这档事
  • 【Java实用技术】java中关于整数的几个冷知识,总有一个你不知道
查看更多 >
安全
1191 人关注 | 23954 讨论 | 81266 内容
+ 订阅
  • 阿里云国际版账号注册常见问题汇总
  • 阿里云国际站注册下单流程
  • 阿里云国际站版账号购买云服务器:国际阿里云分销商,注册USDT充值教程
查看更多 >
云计算
21783 人关注 | 59350 讨论 | 55788 内容
+ 订阅
  • 阿里云国际版注册教程
  • 阿里云国际站一级分销商,只需一个邮箱即可注册国际账号,可代充值
  • 淘宝小游戏背后的质量保障方案
查看更多 >