分类目录归档:数据库

自动备份服务器数据的脚本

折腾了一个脚本,要点把服务器目录下的文件同步到SVN 目录下,然后提交給SVN进行备份 好处,SVN 是增量备份,网站传了图片,只增加这部分图片的备份。 之前一直用压缩包,发现,1G压缩包的网站文件,随便改了个图,又要备份1G的压缩包 backsite.sh TIME=`date "+%Y-%m-%d %H:%M:%S"` echo "site:"$TIME >> /backup/backupwebsite/time.log export LANG=zh_CN.UTF-8 str=b2b2017,b2b2017admin,watch,watch_admin var=${str//,/ } #这里是将var中的,替换为空格 for v in $var do WEB_NAME=$v echo $v BCK_DIR="/backup/backupwebsite/website/$WEB_NAME" DATE=`date +%F` mkdir -p $BCK_DIR rsync -av /www/$WEB_NAME/ $BCK_DIR done   svn … 继续阅读

发表在 Linux, Windows, 技术管理, 数据库 | 一条评论

mysql Lost connection to MySQL server at ‘reading initial communication packet

mysql 爆出,本地连接正常,远程链接无法链接,爆出错误 Lost connection to MySQL server at ‘reading initial communication packet 大量无法远程链接的问题 1.iptables 导致 看看iptables -L 2.mysqld 下增加 skip-name-resolve 我加了发现不行 看下面 3.bind-adress 我发现mysqld 还有一句 bind-address = ::ffff:127.0.0.1 [mysqld] #bind-address = ::ffff:127.0.0.1 local-infile=0 datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock # Disabling symbolic-links is recommended … 继续阅读

发表在 数据库 | 标签为 | 一条评论

Centos 7 mysql 如何重启动MariaDB篇

MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。[3] MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,10.0.9版起使用XtraDB(名称代号为Aria)来代替MySQL的InnoDB # yum install mysql -y # mysql ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (111) 试着去启动mysql服务,仍然不行   # systemctl start mysql Failed to issue method call: Unit mysql.service failed to load: No such … 继续阅读

发表在 Linux, 数据库 | 标签为 , , | 留下评论

mysql 调用,新手常犯的10个错误

经常收到安全部门的警告邮件,SQL注入,XSS攻击漏洞,等等。偶尔还被黑客挂了小马,郁闷不。 数据库执行太慢(月小升博客的经验,基本是没有正确使用索引导致) 看看MYSQL常犯的11个错误 1、使用MyISAM而不是InnoDB MySQL有很多的数据库引擎,单一般也就用MyISAM和InnoDB。 MyISAM是默认使用的。但是除非你是建立一个非常简单的数据库或者只是实验性的,那么到大多数时候这个选择是错误的。MyISAM不支持外键的 约束,这是保证数据完整性的精华所在啊。另外,MyISAM会在添加或者更新数据的时候将整个表锁住,这在以后的扩展性能上会有很大的问题。 解决办法很简单:使用InnoDB。 2、使用PHP的mysql方法 PHP从一开始就提供了MySQL的函数库。很多程序都依赖于mysql_connect、mysql_query、mysql_fetch_assoc等等,但是PHP手册中建议: 如果你使用的MySQL版本在4.1.3之后,那么强烈建议使用mysqli扩展。 mysqli,或者说MySQL的高级扩展,有一些优点: 有面向对象的接口 prepared statements(预处理语句,可以有效防止SQL-注入攻击,还能提高性能) 支持多种语句和事务 另外,如果你想支持多数据库那么应该考虑一下PDO。 3、不过滤用户输入 应该是:永远别相信用户的输入。用后端的PHP来校验过滤每一条输入的信息,不要相信JAVAscript。像下面这样的SQL语句很容易就会被攻击: $username = $_POST["name"]; $password = $_POST["password"]; $sql = "SELECT userid FROM usertable WHERE username=’$username’AND password=’$password’;"; // run query… 这样的代码,如果用户输入”admin’;”那么,就相当于下面这条了: SELECT userid … 继续阅读

发表在 PHP, 数据库 | 标签为 , , | 留下评论

php九大缓存技术,你知道几个?

月小升经常的缓存算法是生成固定静态文件,让Nginx访问这个静态文件。如果会发生更新,那么后台更新文章,删除这个文件,程序访问这个静态文件不存在的时候,自动生成即可。 其实除了文件缓存,还有很多办法。据我所知道的Ecshop和Discuz用了很多SQL语句的缓存。比如首页推荐的产品,可以生成数据序列化存入数据库,避免下次加载发生多次sql查询 下面看到的9个技术,以前也听说过,不过这篇比较全面的php缓存文章,还是不错的。 1、全页面静态化缓存 也就是将页面全部生成html静态页面,用户访问时直接访问的静态页面,而不会去走php服务器解析的流程。此种方式,在CMS系统中比较常见,比如dedecms; 一种比较常用的实现方式是用输出缓存: Ob_start() ******要运行的代码******* $content = Ob_get_contents(); ****将缓存内容写入html文件***** Ob_end_clean(); 2、页面部分缓存 该种方式,是将一个页面中不经常变的部分进行静态缓存,而经常变化的块不缓存,最后组装在一起显示;可以使用类似于ob_get_contents的方式实现,也可以利用类似ESI之类的页面片段缓存策略,使其用来做动态页面中相对静态的片段部分的缓存(ESI技术,请baidu,此处不详讲)。 该种方式可以用于如商城中的商品页; 3、数据缓存 顾名思义,就是缓存数据的一种方式;比如,商城中的某个商品信息,当用商品id去请求时,就会得出包括店铺信息、商品信息等数据,此时就可以将这些数据缓存到一个php文件中,文件名包含商品id来建一个唯一标示;下一次有人想查看这个商品时,首先就直接调这个文件里面的信息,而不用再去数据库查询;其实缓存文件中缓存的就是一个php数组之类; Ecmall商城系统里面就用了这种方式; 4、查询缓存 其实这跟数据缓存是一个思路,就是根据查询语句来缓存;将查询得到的数据缓存在一个文件中,下次遇到相同的查询时,就直接先从这个文件里面调数据,不会再去查数据库;但此处的缓存文件名可能就需要以查询语句为基点来建立唯一标示; 按时间变更进行缓存 其实,这一条不是真正的缓存方式;上面的2、3、4的缓存技术一般都用到了时间变更判断;就是对于缓存文件您需要设一个有效时间,在这个有效时间内,相同的访问才会先取缓存文件的内容,但是超过设定的缓存时间,就需要重新从数据库中获取数据,并生产最新的缓存文件;比如,我将我们商城的首页就是设置2个小时更新一次; 5、按内容变更进行缓存 这个也并非独立的缓存技术,需结合着用;就是当数据库内容被修改时,即刻更新缓存文件; 比如,一个人流量很大的商城,商品很多,商品表必然比较大,这表的压力也比较重;我们就可以对商品显示页进行页面缓存; 当商家在后台修改这个商品的信息时,点击保存,我们同时就更新缓存文件;那么,买家访问这个商品信息时,实际上访问的是一个静态页面,而不需要再去访问数据库; 试想,如果对商品页不缓存,那么每次访问一个商品就要去数据库查一次,如果有10万人在线浏览商品,那服务器压力就大了; 6、内存式缓存 提到这个,可能大家想到的首先就是Memcached;memcached是高性能的分布式内存缓存服务器。 一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、 提高可扩展性。 它就是将需要缓存的信息,缓存到系统内存中,需要获取信息时,直接到内存中取;比较常用的方式就是 key–>value方式; <?php $memcachehost = ’192.168.6.191′; $memcacheport = … 继续阅读

发表在 PHP, 数据库 | 标签为 | 留下评论

读取mysql一个库下面的所有的表table

<?php require ‘class/db.php’;   $sql = "select * from information_schema.tables where table_schema=’ecshop’ and table_type=’base table’ order by TABLE_ROWS desc ";   $arr = $db->queryArray($sql);   //var_dump($arr); foreach ($arr as $k => $v) { $tbname = $v->TABLE_NAME; $rows = $v->TABLE_ROWS; echo … 继续阅读

发表在 PHP, 数据库 | 标签为 | 留下评论

redis操作命令大全

一、key pattern 查询相应的key   (1)redis允许模糊查询key  有3个通配符 *、?、[]   (2)randomkey:返回随机key     (3)type key:返回key存储的类型   (4)exists key:判断某个key是否存在   (5)del key:删除key   (6)rename key newkey:改名   (7)renamenx key newkey:如果newkey不存在则修改成功   (8)move key 1:将key移动到1数据库   (9)ttl key:查询key的生命周期(秒)   (10)expire key 整数值:设置key的生命周期以秒为单位   (11)pexpire key 整数值:设置key的生命周期以毫秒为单位   (12)pttl key:查询key 的生命周期(毫秒)   (13)perisist key:把指定key设置为永久有效 二、字符串类型的操作   (1)set key value [ex 秒数] … 继续阅读

发表在 数据库 | 标签为 , , | 留下评论

redis使用场景

不要放冷数据 首先,对于冷数据,无论大小,都不建议放在 Redis 中。Redis 数据要全部放在内存中,资源宝贵,把冷数据放在其中实在是一种浪费,冷数据放在普通的存储比如关系数据库中就好了。 冷数据的例子 1.网站的文章 2.几万年不变的数据 放热数据 尤其是写频繁的热数据,如果量比较小,是最适合放到 Redis 中的。 热数据的例子 1.用户注册数 2.文章阅读量 3.热度排行榜 4.用户订阅量 一个游戏,用户分数存储结构     ZADD leaderboard <score> <username> 例子:一个在线游戏你会需要 1.前100名高手榜 ZREVRANGE leaderboard 0 99 2.某一个用户在游戏的实时排名 ZRANK leaderboard <username> 3.强大的计数功能 这要感谢INCRBY和其他相似命令。 INCR user: EXPIRE     user: … 继续阅读

发表在 JAVA, 数据库 | 标签为 , | 留下评论

mac 下安装redis

本来以为mac下安装redis要折腾一会,完全出乎意外。和linux下基本一样 curl -O http://download.redis.io/releases/redis-3.2.4.tar.gz tar xzf redis-3.2.4.tar.gz $ cd redis-3.2.4 $ make test $ make install 搞定 启动redis $ src/redis-server 客户端 mac启动另外一个控制台 $ src/redis-cli redis> set foo bar OK redis> get foo "bar" 有点惊喜。上几天mac下安装PHP的图形处理,折腾了 好几天 redis的密码配置

发表在 JAVA, 数据库 | 标签为 , | 留下评论

mysql 的 MyISAM和 InnoDB的区别

  一、文件存储     MyISAM   每个MyISAM在磁盘上存储成三个文件。第一个文件的名字以表的名字开始,扩展名指出文件类型。   .frm文件存储表定义。   数据文件的扩展名为.MYD (MYData)。   索引文件的扩展名是.MYI (MYIndex)。   InnoDB   基于磁盘的资源是InnoDB表空间数据文件和它的日志文件,InnoDB 表的大小只受限于操作系统文件的大小,一般为 2GB   二、事务支持   MyISAM   MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持   InnoDB   InnoDB提供事务支持事务,外部键等高级数据库功能   三、mysql执行方式   MyISAM   如果执行大量的SELECT,MyISAM是更好的选择   InnoDB   1.如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表   2.DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除。   3.LOAD TABLE FROM MASTER操作对InnoDB是不起作用的,解决方法是首先把InnoDB表改成MyISAM表,导入数据后再改成InnoDB表,但是对于使用的额外的InnoDB特性(例如外键)的表不适用   四、AUTO_INCREMENT   每表一个AUTO_INCREMEN列的内部处理。   MyISAM为INSERT和UPDATE操作自动更新这一列。这使得AUTO_INCREMENT列更快(至少10%)。在序列顶的值被删除之后就不能再利用。(当AUTO_INCREMENT列被定义为多列索引的最后一列,可以出现重使用从序列顶部删除的值的情况)。   AUTO_INCREMENT值可用ALTER TABLE或myisamch来重置   对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引   更好和更快的auto_increment处理   INNODB   如果你为一个表指定AUTO_INCREMENT列,在数据词典里的InnoDB表句柄包含一个名为自动增长计数器的计数器,它被用在为该列赋新值。   自动增长计数器仅被存储在主内存中,而不是存在磁盘上   关于该计算器的算法实现,参考AUTO_INCREMENT列在InnoDB里如何工作 … 继续阅读

发表在 数据库 | 标签为 , , | 留下评论