技术改变世界 阅读塑造人生! - shaogx.com

This string was altered by TechBlog\Plugins\Example.; This is an example to show the potential of an offcanvas layout pattern in Bootstrap. Try some responsive-range viewport sizes to see it in action.

mysql优化思维引导二

      今天得重点是第二方面,如何从数据库得状态,发现数据库得瓶颈,或者可能出现瓶颈的地方。主要针对myisam存储引擎1、慢查询日志打开、并观察是否有慢查询日志,具体花费多少时间算慢查询,可以根据数据量,和并发量来综合衡量,如果要做sql语句优化的话,一般1s以上的都算慢查询,通过满查询日志找出1s以上的查询,使用explain和prifile分析,在这里提一点,mysql的优化工具没有oracle这种大型数据库好用,没有现成统计某条语句执行的次数的工具,所以只有我们自己开发脚本,通过bin-log或者查询日志来提取某条语句的执行频率,然后从执行频率最高的语句开始逐条分析,看看是否可以优化,比如一条语句,每天执行100W次,你优化后,就算每次提升0.1秒,但是对于总的性能提升效果还是很明显的。 2、最重要的状态参数key_read_requests和key_reads.key_read_requests表示从缓存读索引的请求数,key_reads表示没有在缓存中找到索引,从硬盘上读取索引的次数,这里就是为什么使用索引作为where子句的关键字,速度快的原因,如果key_reads过高,就需要调大Key_buffer_size。 3、关于索引使用的情况Handler_read_first \\索引中第一条被读的次数。如果较高,它建议服务器正执行大量全索引扫描;例如,SELECT col1 FROM foo,假定col1有索引。Handler_read_key   \\根据索引读第一行的请求数,该值高,说明索引设置正确Handler_read_rnd    \\根据固定位置读一行的请求数。如果你正执行大量查询并需要对结果进行排序该值较高。你可能使用了大量需要MySQL扫描整个表的查询或你的连接没有正确使用键Handler_read_rnd_next \\在数据文件中读下一行的请求数。如果你正进行大量的表扫描,该值较高。通常说明你的表索引不正确或写入的查询没有利用索引,这个值要注意一下,不是做一次全表扫描纪录一次,比如做一次全表扫描有多少行,这里就会增加多少数字,表连接和子查询有多条结果,也会累计,所以不一定是全表扫描,具体问题具体分析。 4、创建临时表和临时文件的次数Created_tmp_disk_tables  \\如果此值较大,证明tmp_table_size较少,需要调大。 Created_tmp_filesCreated_tmp_tables  5、opened table的数量open_table_definitions \\缓存的.frm文件的数量open_tables \\当前打开了多少表opened_tables \\一共打开了多少表opened_table_definitions \\总共缓存过多少.frm文件如果opened_tables和opened_table_definitions的数量过大,那么证明需要优化table_open_cachetable_open_cache \\该值设置缓存.frm表定义的数量 6、创建的连接线程数threads_cached \\已经缓存的连接线程数threads_connected \\当前正处于连接的线程数,和 show processlist数量相等threads_created  \\一共创建过多少个连接线程,如果远远大于threads_connected,并且threads_cached=thread_cache_size的值,那么需要调大thread_cache_size的值 7、表锁,确定是否有锁资源的争抢Table_locks_immediate \\立即获得表锁Table_locks_waited \\等待表锁,如果太高,就要考虑优化程序结构,语句,或者替换存储引擎 8、排序的状态Sort_merge_passes \\排序算法已经执行的合并的数量。如果这个变量值较大,应考虑增加sort_buffer_size系统变量的值。Sort_range \\在范围内执行的排序的数量。Sort_rows \\已经排序的行数。Sort_scan  \\通过扫描表完成的排序的数量 9、查询缓存这个值对性能影响很重要,但是比较费内存,所以放在最后query_cache_type是查询缓存的开关,此参数有三个值,分别的含义如下: 0也就是off //此值设定服务器不支持查询缓存,select不会从缓存中检索结果也不会把结果写到缓存中。 1也就是on //如果要启用,通常设置这个值,select语句默认会从缓存中检索结果页会把查询的结果放到缓存中,除非select语句包含select sql_no_cache 2 //该值告诉服务器只对使用了 select sql_cache的语句使用查询缓存功能。以下这些是查询缓存的相关设置值。mysql> show global variables like 'query%';         +------------------------------+-----------+| Variable_name                | Value     |+------------------------------+-----------+| query_alloc_block_size       | 8192      || query_cache_limit            | 1048576   |  \\查过这个值不缓存| query_cache_min_res_unit     | 4096      |   | query_cache_size             | 102400000 |  \\查询缓存可以使用的内存大小| query_cache_type             | ON        |  \\是否启用查询缓存| query_cache_wlock_invalidate | OFF       || query_prealloc_size          | 8192      |+------------------------------+-----------+以下这些是查询缓存的状态值。mysql> show global status like 'qcache%';         +-------------------------+-----------+| Variable_name           | Value     |+-------------------------+-----------+| Qcache_free_blocks      | 1153      |  \\空闲的query cache块| Qcache_free_memory      | 100094608 |  \\空闲的query cache内存| Qcache_hits             | 259503    |  \\查询缓存的命中数量--重要| Qcache_inserts          | 357422    |  \\从缓存查询结果没命中的次数| Qcache_lowmem_prunes    | 0         |  \\由于cache_size过小,结果从内存中被删                 除的次数| Qcache_not_cached       | 5187      | \\没有被缓存的次数| Qcache_queries_in_cache | 1474      | \\缓存中包含的结果数量,如果此值和Qcache_lowmem_prunes值较小,qcache_inserts很大,则可能是结果变坏太快,被cache的结果一旦变化就会从此值中删除| Qcache_total_blocks     | 4129      |+-------------------------+-----------+缓存的使用率=Qcache_hits/(Qcache_hits+com_select) 有新的想法的时候再继续更新 本文出自 “fenghao.cn's Soft..” 博客,请务必保留此出处http://linuxguest.blog.51cto.com/195664/455269... 全文

mysql mysql优化思维引导 数据库 休闲 职场

Mysql数据备份与mysqldump增量备份

       在数据库表丢失或损坏的情况下,备份你的数据库是很重要的。如果发生系统崩溃,你肯定想能够将你的表尽可能丢失最少的数据恢复到崩溃发生时的状态。本文主要对MyISAM表做备份恢复。 备份策略一:直接拷贝数据库文件 备份策略二:使用mysqldump备份数据库(一个星期全备一次,每天增量备份)一、 直接拷贝数据文件 直接拷贝数据文件最为直接、快速、方便,但缺点是基本上不能实现增量备份。为了保证数据的一致性,需要在备份文件前,执行以下 SQL 语句:FLUSH TABLES WITH READ LOCK;也就是把内存中的数据都刷新到磁盘中,同时锁定数据表,以保证拷贝过程中不会有新的数据写入。这种方法备份出来的数据恢复也很简单,直接拷贝回原来的数据库目录下即可。   为了方便的拷贝出数据文件,我写了一个脚本让其每天运行一次做备份。在/目录下建一个目录用来放置脚本文件,#mkdir /scripts 创建一个备份数据库的一个脚本文件#vi backup_mysql.sh  #!/bin/bash backup_dir=/backup/databak   #备份文件放置目录 backup_target_dir=/backup/db backup_logs_dir=/backup/logs   #备份日志目录 db=bcmedia DATE=$(date +%Y%m%d) #得到10天前的日期 ccDATE=$(date "-d 10 day ago" +%Y%m%d) echo "开始复制数据表"  >> $backup_logs_dir/$db$DATE echo "-----------`date +"%Y-%m-%d %H:%M:%S"`--------------------"  >> $backup_logs_dir/$db$DATE cp -R /data/$db $backup_target_dir/   #mysql数据库的数据目录为/data echo "开始压缩数据表"  >> $backup_logs_dir/$db$DATE echo "------------------------"  >> $backup_logs_dir/$db$DATE cd $backup_target_dir tar -zcvf  $backup_dir/db$DATE.tar.gz $db/ >> $backup_logs_dir/$db$DATE if [ $? -eq 0 ] then  echo "backup succeed" >> $backup_logs_dir/$db$DATE else  echo "backup fail" >> $backup_logs_dir/$db$DATE fi echo "开始删除原数据表"  >> $backup_logs_dir/$db$DATE echo "-----------------------"  >> $backup_logs_dir/$db$DATE rm -rf $backup_target_dir/* && echo “删除原数据表” >> $backup_logs_dir/$db$DATE echo  "删除10天前数据" >>$backup_logs_dir/$db$DATE if [ -e $backup_dir/db$ccDATE.tar.gz ] then  rm -rf $backup_dir/db$ccDATE.tar.gz  echo "Delete $backup_dir/db$ccDATE.tar.gz succeed" >>$backup_logs_dir/$db$DATE else  echo "Not found $backup_dir/db$ccDATE.tar.gz file" >>$backup_logs_dir/$db$DATE fi if [ -e $backup_logs_dir/$db$ccDATE ] then  rm -rf $backup_logs_dir/$db$ccDATE  echo "Delete $backup_logs_dir/$db$ccDATE succeed" >>$backup_logs_dir/$db$DATE else  echo "Not found $backup_logs_dir/$db$ccDATE file" >>$backup_logs_dir/$db$DATEfi  保存退出并添加可执行的权限#chmod 755 backup_mysql.sh 让脚本每天执行一次,每天备份一次数据库,在crontab 里面添加一行Crontab –e 10 4 * * * /scripts/ backup_mysql.sh  #每天4点10分运行脚本备份数据库       还原数据库的时候只要把备份出的文件拷贝到数据库放置数据的目录下,修改权限。重启下数据库就完成了恢复了。  二、 使用mysqldump备份数据库           mysqldump 是采用SQL级别的备份机制,它将数据表导成 SQL 脚本文件,在不同的 MySQL 版本之间升级时相对比较合适,这也是最常用的备份方法。关于mysqldump的更详细解释用/MysqlDir/bin/mysqldump –help 来查看详细的解释。       我们使用的数据库备份完成之后有10个G如果每天都做一次全备,不方便,就一个星期做一次全备,一天做一次增量备份。为了不影响线上业务,实现在线备份,并且能增量备份,最好的办法就是采用主从复制机制(replication),在 slave 机器上做备份。详细的mysqlreplication请参看mysql主主、主从复制详解    一个星期一次的全备的脚本,脚本文件放在/scripts目录下,备份时需要一些目录,注意需要手动创建。 #vi mysql_full_bak.sh #!/bin/bash # This is mysql mysqlfullbak scripts #2009-08-20 #badboy user=bak   passwd=123456 databak_dir=/backup/cacti   #备份的目录 eMailFile=$databak_dir/email.txteMail=leezhenhua17@163.com DATE=`date +%Y%m%d` logFile=$databak_dir/logs/mysql$DATE.log database=cacti echo "     " > $eMailFile echo "---------------------------------" >> $eMailFile echo $(date +"%y-%m-%d %H:%M:%S") >> $eMailFile cd /data dumpFile=$database$DATE.sql GZDumpFile=$database$DATE.tar.gz opti mysqldump $options > $dumpFile  #导出数据文件 if [[ $? == 0 ]]; then   tar cvzf $GZDumpFile $dumpFile >> $eMailFile 2>&1   echo "BackupFileName:$GZDumpFile" >> $eMailFile   echo "DataBase Backup Success" >> $eMailFile   scp $GZDumpFile user@”ip地址”:/Dir   #传送备份文件到另一台计算机,需要做好ssh信任   rm -f $dumpFile           #删除备份的文件   rm –rf $databak_dir/daily/*  #删除每天备份的文件 else   echo "DataBase Backup Fail!" >> $emailFile   mail -s " DataBase Backup Fail " $eMail < $eMailFile  #如果备份不成功发送邮件通知 fi echo "--------------------------------------------------------" >> $logFile cat $eMailFile >> $logFile更多mysqldump的选项请查看mysqldump –help 每天增量备份的脚本,定义为每天4点10分时运行此文件,备份上一天4点10分之后到今天4点之前的数据#vi mysqldailybak.sh #!/bin/bash # This is mysql mysqldailybak scripts # 2009-08-20 # badboy /usr/bin/mysqladmin flush-logs   # user=bak passwd=123456 database=cacti daily_databak_dir=$databak_dir/daily  #备份目录,需要创建 eMailFile=$daily_databak_dir/email.txteMail=leezhenhua17@163.comDATE=`date +%Y%m%d` logFile=$daily_databak_dir/mysql$DATE.log echo "     " > $eMailFile echo "---------------------------------" >> $eMailFile echo $(date +"%y-%m-%d %H:%M:%S") >> $eMailFile echo "---------------------------------" >> $eMailFile TIME=$(date "-d 10 day ago" +%Y%m%d%H%M%S) StartTime=$(date "-d 1 day ago" +"%Y-%m-%d %H:%M:%S") echo “Delete 10 days before the log ” >> $eMailFile mysql -u$user -p"$passwd" -e "purge master logs before ${TIME}" && echo "delete 10 days before log" |tee -a $eMailFile   #删除10天前的2进制文件 filename=/data/`cat /data/mysql-bin.index |awk -F "/" '{print $2}'`   # 2进制文件 for i in $filename do echo "$StartTime start backup binlog " >> $eMailFile mysqlbinlog -u$user -p$passwd -d $batabase --start-datetime="$StartTime" $i >> $daily_databak_dir/daily$DATE |tee -a $eMailFile done if [ $? = 0 ] then  cd $daily_databak_dir  tar -zcvf $daily_databak_dir/$database$DATE.tar.gz daily$DATE >>/dev/null 2>&1  #scp $daily_databak_dir/$database$DATE.tar.gz user@”ip地址”:/Dir  #传送备份文件到另一台计算机,需要做好ssh信任  echo "daily backup succeed" >> $eMailFile else  echo "daily backup fail" >> $eMailFile  mail -s "MySQL Backup" $eMail < $eMailFile  #备份失败之后发送邮件通知 fi cat $eMailFile > $logFile 添加可执行的权限                              #chmod 755 /scripts/mysql_full_bak.sh /scripts/mysqldailybak.sh 加到crontab里面让脚本自动执行,如果有专门用于备份的服务器,可以利用ssh认证、scp命令,自动发送到另一台服务器上,保证数据的安全。可以参看rsync参数详解、利用ssh、rsync 实现数据的定时同步  #su –bak #crontab –e10 4 * * 1-6 /scripts/mysqldailybak.sh   #礼拜一到礼拜六运行每天备份脚本 10 4 * * 0 /scripts/mysql_full_bak.sh   #礼拜天执行全备份的脚本如果想把备份之后的数据文件,传送到另一台服务器上,做好ssh信任之后把脚本中红色的哪行注释去掉就行。需要更多scp的资料请查看scp --help 本人对shell也不是很懂,如果里面有错误的地方,希望指正。谢谢... 全文

mysql备份 mysql 数据库 mysqldump 休闲

mysql+heartbeat+DRBD+LVS实现mysql高可用<二>

   上一节,讲述了DRBD的安装,因为要利用heartbeat+DRBD+mysql实现mysql的高可用,所以这一节讲述安装mysql和heartbeat的安装    分别在各个节点安装mysql,文本使用的是二进制的安装包mysql-5.5.33-linux2.6-x86_64.tar.gz... 全文

mysql的高可用

mysql优化思维引导一

         一般数据库优化分sql语句优化和数据库服务器参数优化,数据库服务器参数优化是DBA可以独立完成的,但是sql语句优化就必须和开发人员协同完成。现在我们先不谈优化的实施,我们先研究下如何优化,优化哪里,我们要找准数据库性能的瓶颈,有的放矢,这样才能让优化立竿见影。如何找到mysql数据库得瓶颈呢?如何提前发现mysql数据库可能出现的瓶颈呢?这里又分两大方面。        一方面是架构的设计和业务的类型,另一方面是通过观察mysql数据库的状态,好似中医的望闻问切。         关于第一个大的方面,需要注意的是。在业务前期,一定要确定业务的类型,是OLAP系统还是OLTP系统,数据量到底有多大,并发量到底有多大,查询居多,还是修改插入居多,需不需要支持事务和外键约束等信息。         因为这些信息可以帮助我们在设计数据库架构,选取数据库引擎的时候有很大帮助。还有就是硬件层面的需求,到底多大业务,需要多少的硬件资源,硬件支援才压力承受范围内,可以得到很好的性能,如果超过了压力承受范围,那么性能会下降的很厉害,并且硬件的各个组成部分要匹配,不要出现某个部分太差,原因大家都应该知道的。 下面举两个简单的案例案例一、一个公司的数据库出现这样一个问题,一个myisam引擎的表,只有几百行的数据,但是table.myd文件却占了数十个G的空间,每次操作这个表的时候,速度就奇慢。通过explain查看,又是正常的,这个问题在很多数据库上都存在,用oracle的话来说,就是高水位和块回收的问题。如果找到原因 optimize table tablename,优化一下表就可以了。由于那个表操作很频繁,需要经常优化,这样就增加了DBA或者运维的工作量,这种问题其实在当初设计的时候,选用memcache引擎就比较合适,但是web应用的话还是比较适合memcached。 案例二、一个考试系统,当考试完成的时候,大家一交卷,服务器垮掉了,这是为什么呢?因为大家都想要同时往一个表里写数据,但是等待表锁很严重,最后服务器挂掉了,所有数据未保存,这种情况在业务设计之初,就应该考虑到,使用innodb引擎,就可以解决这个问题。应为innodb引擎室行锁对这种大并发的写入操作承受力很强。现在的考试系统已经比较完善,大部分是边做题,边提交数据库,就算这样,innodb引擎在这种应用还是很有优势的。          这些情况都还好,能够修复,不会对业务造成的影响一般,如果一个架构前期没有设计好,等到开发完成,投入使用了,发现有问题,再返回修改,修改量和测试的工作量是相当庞大的,结果就是浪费资金,浪费时间。  本文出自 “fenghao.cn's Soft..” 博客,请务必保留此出处http://linuxguest.blog.51cto.com/195664/455251... 全文

mysql mysql优化思维引导 数据库 休闲 职场

关于mysql的备份方案2 A

关于mysql的备份方案2 A-B复制   建立A B复制之前要做好以下几步1. 把主重的mysql 的user, group 的id 都设成272. 时间同步     ntpdate3. 两边的数据要一样,能够正常启动    将主的/data (数据存放目录)里的内容拷贝到从机子去或者两边都初始化一次数据; 4. 两台机能ping 通 主:10.1.1.4   从:10.1.1.2 配置主服务器my.cnf 10.1.1.4 必须有log-bin=XXXX server-id=XXX... 全文

mysql mysql备份 数据库 休闲 职场

mysql.sock 导致无法打开mysql数据库问题

服务器重启发现mysql无法启动,提示错误:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)解决办法找到mysql安装目录,已我得为例:/usr/local/mysql然后进入这里:/usr/local/mysql/share/mysql/ls 看看,是不是有个mysql.server的绿色文件?然后:#./mysql.server start  就会看到mysqlstart....的字样再看下/tmp下是不是已经出现了那个mysql.sock的文件了启动mysql试试吧,已经没有问题了。本文出自 “我不会编程” 博客,请务必保留此出处http://gforce.blog.51cto.com/171824/212576... 全文

Mysql 数据库 休闲 职场

mysql数据库命令大全,mysql数据基础入门

1、连接Mysql格式: mysql -h主机地址 -u用户名 -p用户密码1、连接到本机上的MYSQL。首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u root -p,回车后提示你输密码.注意用户名前可以有空格也可以没有空格,但是密码前必须没有空格,否则让你重新输入密码。如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是: mysql>2、连接到远程主机上的MYSQL。假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。则键入以下命令:... 全文

mysql 数据库 备份 恢复

MySQL创始人宣布将创建MySQL分支

【51CTO综合报道】在4月20日,Oracle宣布以74亿美元收购Sun公司之后业界普遍担忧收购后MySQL的未来走向。近日,去年离开Sun的MySQL创始人和开发者Michael Widenius在博客上表示,他有意创建一个MySQL分支。他说,甲骨文公司收购Sun的理由是:Sun制造硬件,虚拟机VirtualBox,存储系统Sun tape Storage,OpenSolaris,Java和MySQL。对于MySQL,Oracle可能会杀死它,卖掉它,通过开源社区强化它。... 全文

MySQL 创始人 收购 Oracle 开源

基于Xtrabackup备份mysql(MairaDB)

一、Xtrabackup1、Xtrabackup介绍    Percona XtraBackup是开源免费的MySQL数据库热备份软件,它能对InnoDB和XtraDB存储引擎的数据库非阻塞地备份,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具2、Xtrabackup的特点(1)在线热备整个库的InnoDB、XtraDB表(2)备份过程不会打断正在执行的事务;(3)在xtrabackup的上一次整库备份基础上做增量备份(innodb only)(4)自动实现备份检验;(5)以流的形式产生备份,可以直接保存到远程主机上3、Xtrabackup有两个主要的工具(1)xtrabackup... 全文

xtrabackup innobackupex mysql增量备份 mysql完全备份

apache+mysql+简单设置1

使用apache+mysql+php进行动态网页的制作。实验环境:主机A是一台DNS服务器,IP地址为192.168.0.130,主机名为mail.station.com.主机B的windows机器,IP地址为192.168.0.139.下面我们将演示phpwind,phpbb,discuz的安装和配置。实验步骤:1,  配置DNS服务,关于详细的步骤这里就不再说了,可以参考我的另外的文章。DNS的主配置文件的内容如下:# vim /etc/named.confoptions {        listen-on port 53 { 127.0.0.1; 192.168.0.130;  };        directory       "/var/named";};zone "." IN {         type hint;         file "named.ca";};zone "loaclhost" IN {         type master;         file "localhost.zone";};zone "0.0.127.in-addr.arpa" IN {         type master;         file "named.local";};zone "station.com" IN {          type master;          file "station.com.zone";};zone "0.168.192.in-addr.arpa" IN {          type master;          file "192.168.0.zone";};station.com.zone 文件的内容如下:# vim /var/named/station.com.zone$TTL    86400$ORIGIN station.com.@       IN      SOA     ns.station.com. root.station.com.  (                                      1997022700 ; Serial                                      28800      ; Refresh                                      14400      ; Retry                                      3600000    ; Expire                                      86400 )    ; Minimum        IN      NS                    ns.station.com.        IN      MX        10          mail.station.com.ns      IN      A                     192.168.0.130mail    IN      A                     192.168.0.130phpbb   IN      CNAME                     nsphpwind IN      CNAME                     nsdiscuz  IN      CNAME                     nswordpress IN    CNAME                   ns在进行试验之前要确保能够解析成功。# ping phpbb.station.comPING ns.station.com (192.168.0.130) 56(84) bytes of data.64 bytes from mail.station.com (192.168.0.130): icmp_seq=1 ttl=64 time=0.086 ms64 bytes from mail.station.com (192.168.0.130): icmp_seq=2 ttl=64 time=0.076 ms# ping phpwind.station.comPING ns.station.com (192.168.0.130) 56(84) bytes of data.64 bytes from mail.station.com (192.168.0.130): icmp_seq=1 ttl=64 time=0.117 ms64 bytes from mail.station.com (192.168.0.130): icmp_seq=2 ttl=64 time=0.058 ms# ping discuz.station.comPING ns.station.com (192.168.0.130) 56(84) bytes of data.64 bytes from mail.station.com (192.168.0.130): icmp_seq=1 ttl=64 time=0.058 ms64 bytes from mail.station.com (192.168.0.130): icmp_seq=2 ttl=64 time=0.068 ms为了方便你也可以不配置DNS服务器,直接编辑/etc/hosts在里面输入以下内容:192.168.0.130      mail.station.com192.168.0.130      phpbb.station.com192.168.0.130      phpwind.station.com192.168.0.130      wordpress.station.com192.168.0.130      discuz.station.com2,为了使Windows主机能够访问l主机A,主机A的网卡应该选择桥接,在主机B上还要做以下设置:本地磁盘CàWindowsàSystem32àdrivesàhosts,在hosts文件中加上以下内容192.168.0.130      mail.station.com192.168.0.130      phpbb.station.com192.168.0.130      phpwind.station.com192.168.0.130      wordpress.station.com192.168.0.130      discuz.station.com这样主机B就能访问到主机A了。>ping phpbb.station.com正在 Ping phpbb.station.com [192.168.0.130] 具有 32 字节的数据:来自 192.168.0.130 的回复: 字节=32 时间=1ms TTL=64来自 192.168.0.130 的回复: 字节=32 时间<1ms TTL=64当然最简单的方法就是让两台虚拟机在一个通道内,然后再简单设置一下就好了 ... 全文

apache mysql mysql 数据库 休闲 职场

利用phpmyadmin修改mysql的root密码

利用phpmyadmin修改mysql的root密码 时间:2010-08-09 整理:阅微草堂 点击:1384次 收藏本页  我要评论   很多人利用phpmyadmin或者命令行来修改了mysql的root密码,重启后发现mysql登录错误,这是为什么呢?修改mysql的root的密码要在mysql软件中mysql数据库里修改root的密码,还要在配置文件中修改。而且在数据库中的修改不止修改一行数据,所以千万不要手动修改,要用命令来修改。本文帮助读者解决用phpmyadmin修改root密码问题和用phpmyadmin更改root密码后无法登陆问题... 全文

mysql mysql 数据库 数据库 休闲 职场

Java连接SqlServer2005与MySQL5

1.需要jar包sqljdbc.jar(附件提供),下载地址[url]http://www.microsoft.com/downloads/details.aspx?FamilyID=e22bc83b-32ff-4474-a[/url]44a-22b6ae2c4e17 2.SqlServer的tcp/ip端口查询SQL Server Configuration Manager-SQL Server 2005 网络配置-SQLEXPRESS-右键单击ICP/IP-属性-IP地址 ... 全文

Java mysql SqlServer2005 数据库 MySQL5

中小型企业可参考的类MySQL双主架构方案

在企业中,一般系统架构的瓶颈会出现在数据库这一部分,mysql主从架构在很大程度上解决了这部分瓶颈,但是在mysql主从同步的架构也存在很多问题;比如:1. 关于数据写入部分(也就是主库)往往很难做到扩展,虽然很多大公司在逻辑业务方面就进行对数据的拆分,比如商品库存按照区域去拆分(一个区域走一个库存也就是一个主库,然后定时同步总的库存),按照商品类型去划分(一个类型的商品走一套数据库),但是这对于很多中小型公司来说实现起来还是比较困难的; 2. 主从同步一般都是一个主库,一旦主库出现问题,就有可能直接导致整个主从同步架构崩盘,虽然发现后也是可以慢慢恢复的,但是这个恢复时间对于很多公司来说是难以接受的,今天的这篇博文就是主要给解决主库单点故障这个问题提供一个思路:主要思路是:... 全文

MySQL高可用 MySQL双主

MySQL查看与修改编码方式(mysql、数据库、表)

mysql默认的编码方式是latin1,通过以下命令查看show variables like 'char%';或者:show variables like 'character%';... 全文

mysql 编码 database

深入MySQL数据库的索引(1)

索引是加速表内容访问的主要手段,特别对涉及多个表的连接的查询更是如此。这是数据库优化中的一个重要内容,我们要了解为什么需要索引,索引如何工作以及怎样利用它们来优化查询。本节中,我们将介绍索引的特点,以及创建和删除索引的语法。索引的特点所有的MySQL列类型能被索引。在相关的列上的使用索引是改进SELECT操作性能的最好方法。一个表最多可有16个索引。最大索引长度是256个字节,尽管这可以在编译MySQL时被改变。... 全文

MySQL索引 数据库索引 MySQL ALTER

【MySQL运维】MySQL 5.6.15 安装配置实战

安装环境:CentOS 5.8/6.4 x84_64MySQL-5.6.15一.MySQL5.6版本新特性介绍MySQL 在 5.6 版本中显著提高了它的性能和可用性、集成度、查询性能,可支持下一代 Web、嵌入式和云计算应用程序。它具备有以下特性:具备以下特性: · 新增! 在线 DDL /更改数据架构支持动态应用程序和开发人员灵活性; · 新增! 复制全局事务标识可支持自我修复式集群; · 新增! 复制无崩溃从机可提高可用性; · 新增! 复制多线程从机可提高性能; · 新增! 对 InnoDB 进行 NoSQL 访问,可快速完成键值操作以及快速提取数据来完成大数据部署; · 改进! 在 Linux 上的性能提升多达 230%; · 改进! 在当今、多核、多 CPU 硬件上具备更高的扩展力; · 改进! InnoDB 性能改进,可更加高效地处理事务和只读负载; · 改进! 更快速地执行查询,增强的诊断功能; · 改进! Performance Schema 可监视各个用户/应用程序的资源占用情况; · 改进! 通过基于策略的密码管理和实施来确保安全性; · 高度可靠,几乎无需干预即可确保系统持续不间断运行; · 简便易用,只需 3 分钟即可完成从下载到开发环境的安装和配置过程; · 管理需求低,数据库维护工作非常少; · 复制功能支持灵活的拓扑架构,可实现向外扩展和高可用性; · 分区 有助于提高性能和管理超大型数据库环境; · ACID 事务支持构建安全可靠的关键业务应用程序; · 存储过程可提高开发人员效率; · 触发器可在数据库层面实施复杂的业务规则; · View 可确保敏感信息不受攻击; · Information Schema 有助于方便地访问元数据; · 插入式存储引擎架构可最大限度发挥灵活性; PS:以上内容部分来自于网络... 全文

新特性 innodb mysql5.6

[备忘][mysql]用户权限设置(grant用法)

  你可以允许一个用户从特定的或一系列主机进行连接。有一个极端,如果你想要只从一个主机连接,你可以将权限局限于单个主机:GRANT ALL ON samp_db.* TO boris@localhost IDENTIFIED BY "ruby"GRANT ALL ON samp_db.* TO fred@res.mars.comIDENTIFIED BY "quartz" (samp_db.*意思是 “samp_db数据库的所有表)另一个极端是,你可能有一个经常旅行并需要能从世界各地的主机连接的用户max。在这种情况下,你可以允许他无论从那里连接:GRANT ALL ON samp_db.* TO max@% IDENTIFIED BY "diamond" “%”字符起通配符作用,与LIKE模式匹配的含义相同。在上述语句中,它意味着“任何主机”。所以 max和max@%等价。这是建立用户最简单的方法,但也是最不安全的。取其中,你可以允许一个用户从一个受限的主机集合访问。例如,要允许mary从snake.net域的任何主机连接,用一个%.snake.net主机指定符:GRANT ALL ON samp_db.* TO mary@.snake.net IDENTIFIED BY "quartz";如果你喜欢,用户标识符的主机部分可以用IP地址而不是一个主机名来给定。你可以指定一个IP地址或者一个包含模式字符的地址,而且,从 MySQL 3.23,你还可以指定具有指出用于网络号的位数的网络掩码的IP号:GRANT ALL ON samp_db.* TO boris@192.168.128.3 IDENTIFIED BY "ruby"   GRANT ALL ON samp_db.* TO fred@192.168.128.% IDENTIFIED BY "quartz" GRANT ALL ON samp_db.* TO rex@192.168.128.0/17 IDENTIFIED BY "ruby" 第一个例子指出用户能从其连接的特定主机,第二个指定对于C类子网192.168.128的IP模式,第三条语句中,192.168.128.0/17指定一个17位网络号并匹配具有 192.168.128头17位的IP地址。如果MySQL抱怨你指定的用户值,你可能需要使用引号(只将用户名和主机名部分分开加引号)。GRANT ALL ON samp_db.president TO "my friend"@"boa.snake.net"用户应该有什么级别的权限和它们应该适用于什么?你可以授权不同级别的权限,全局权限是最强大的,因为它们适用于任何数据库。要使ethel成为可做任何事情的超级用户,包括能授权给其它用户,发出下列语句:GRANT ALL ON *.* TO ethel@localhost IDENTIFIED BY "coffee" WITH GRANT OPTION ON子句中的*.*意味着“所有数据库、所有表”。从安全考虑,我们指定ethel只能从本地连接。限制一个超级用户可以连接的主机通常是明智的,因为它限制了试图破解口令的主机。有些权限(FILE、PROCESS、RELOAD和SHUTDOWN)是管理权限并且只能用"ON *.*"全局权限指定符授权。如果你愿意,你可以授权这些权限,而不授权数据库权限。例如,下列语句设置一个flush用户,他只能发出flush语句。这可能在你需要执行诸如清空日志等的管理脚本中会有用:GRANT RELOAD ON *.* TO flushl@localhost IDENTIFIED BY "flushpass"一般地,你想授权管理权限,临界点,因为拥有它们的用户可以影响你的服务器的操作。数据库级权限适用于一个特定数据库中的所有表,它们可通过使用ON db_name.*子句授予:GRANT ALL ON samp_db TO bill@racer.snake.net INDETIFIED BY "rock"  GRANT SELECT ON samp_db TO ro_user@% INDETIFIED BY "rock" 第一条语句向bill授权samp_db数据库中所有表的权限,第二条创建一个严格限制访问的用户ro_user(只读用户),只能访问samp_db数据库中的所有表,但只有读取,即用户只能发出SELECT语句。你可以列出一系列同时授予的各个权限。例如,如果你想让用户能读取并能修改现有数据库的内容,但不能创建新表或删除表,如下授予这些权限:GRANT SELECT,INSERT,DELETE,UPDATE ON samp_db TO bill@snake.net INDETIFIED BY "rock"对于更精致的访问控制,你可以在各个表上授权,或甚至在表的每个列上。当你想向用户隐藏一个表的部分时,或你想让一个用户只能修改特定的列时,列特定权限非常有用。如:GRANT SELECT ON samp_db.member TO bill@localhost INDETIFIED BY "rock"GRANT UPDATE (expiration) ON samp_db. member TO bill@localhost 第一条语句授予对整个member表的读权限并设置了一个口令,第二条语句增加了 UPDATE权限,当只对expiration列。没必要再指定口令,因为第一条语句已经指定了。如果你想对多个列授予权限,指定一个用逗号分开的列表。例如,对assistant用户增加member表的地址字段的UPDATE权限,使用如下语句,新权限将加到用户已有的权限中:GRANT UPDATE (street,city,state,zip) ON samp_db TO assistant@localhost通常,你不想授予任何比用户确实需要的权限宽的权限。然而,当你想让用户能创建一个临时表以保存中间结果,但你又不想让他们在一个包含他们不应修改内容的数据库中这样做时,发生了要授予在一个数据库上的相对宽松的权限。你可以通过建立一个分开的数据库(如tmp)并授予开数据库上的所有权限来进行。例如,如果你想让来自mars.net域中主机的任何用户使用tmp数据库,你可以发出这样的GRANT语句:GRANT ALL ON tmp.* TO ""@mars.net。在你做完之后,用户可以创建并用tmp.tbl_name形式引用tmp中的表(在用户指定符中的""创建一个匿名用户,任何用户均匹配空白用户名)。用户应该被允许管理权限吗?第一步:你可以允许一个数据库的拥有者通过授予数据库上的所有拥有者权限来控制数据库的访问,在授权时,指定WITH GRANT OPTION。例如:如果你想让alicia能从big.corp.com域的任何主机连接并具有sales数据库中所有表的管理员权限,你可以用如下 GRANT语句:GRANT ALL ON sales.* TO alicia@%.big.corp.com INDETIFIED BY "applejuice" WITH GRANT OPTION在效果上WITH GRANT OPTION子句允许你把访问授权的权利授予另一个用户。要注意,拥有GRANT权限的两个用户可以彼此授权。如果你只给予了第一个用户SELECT权限,而另一个用户有GRANT加上SELECT权限,那么第二个用户可以是第一个用户更“强大”。第二步:撤权并删除用户,要取消一个用户的权限,使用REVOKE语句。REVOKE的语法非常类似于GRANT语句,除了TO用FROM取代并且没有 INDETIFED BY和WITH GRANT OPTION子句:REVOKE privileges (columns) ON what FROM useruser部分必须匹配原来GRANT语句的你想撤权的用户的user部分。privileges部分不需匹配,你可以用GRANT语句授权,然后用REVOKE语句只撤销部分权限。REVOKE语句只删除权限,而不删除用户。即使你撤销了所有权限,在user表中的用户记录依然保留,这意味着用户仍然可以连接服务器。要完全删除一个用户,你必须用一条DELETE语句明确从user表中删除用户记录:%mysql -u root mysqlmysql>DELETE FROM user ->WHERE User="user_name" and Host="host_name"; mysql>FLUSH PRIVILEGES;DELETE语句删除用户记录,而FLUSH语句告诉服务器重载授权表。(当你使用GRANT和REVOKE语句时,表自动重载,而你直接修改授权表时不是。)------------------------------------mysql 去掉外网3306端口:#vi /etc/init.d/mysqld /usr/bin/mysqld_safe  --defaults-file=/etc/my.cnf --pid-file="$mypidfile" --bind-address=127.0.0.1 >/dev/null 2>&1 &即添加:--bind-address=127.0.0.1这段。测试:在外网扫描测试。修改前后都测试。---------------------------------------[tr][/tr]mysql连接超时问题: ---------------------------------- 查看max_connections : 进入MySQL,用命令:show variables  查看数据库最大可连接数的变量值:max_connections  查看threads_connected : 进入MySQL,用命令:show status  查看当前活动的连接线程变量值:threads_connected  设置max_connections  设置办法是在my.cnf文件最添加一行:  [mysqld] ;;;; set-variable = max_connections=2000  ;;; 修改完毕后,重启MySQL即可。当然,为了确保设置正确,应该查看一下max_connections。--------------------1.Q:[root@mail ~]# mysql -h 192.168.1.122 -u szt -p Enter password:  ERROR 1130 (00000): Host '192.168.1.223' is not allowed to connect to this MySQL server解释:就是别的机器(192.168.1.223 )不让从他(192.168.1.223)连接到MYSQL服务器(192.168.1.122 )上.A:在MYSQL服务器上操作:mysql> grant all on *.* to szt@'192.168.1.223' identified by '1234'; 添加权限mysql> flush privileges; 刷新权限mysql> select host,user from user;查看权限在别的机器上,TRY AGAIN.2.Q:mysql -h 192.168.1.122 -u root -p Enter password: ******** ERROR 1130 (00000): Host '192.168.1.122' is not allowed to connect to this MySQL server解释: 就是MYSQL服务器不让别的机器连接.A:在 192.168.1.122机器上执行mysql>grant all on *.* to szt@'%' identified by '1234';添加权限mysql>flush privileges; 刷新权限mysql> select host,user from user;查看权限在别的机器上,TRY AGAIN.--------------------------------[tr][/tr]... 全文

mysql grant mysql权限

hibernate与mysql映射类型对应表与mysql导入导出

转自:期待十足http://blog.sina.com.cn/s/blog_5f240fc40100etlt.html一、记录下hibernate mysql映射类型对应表:1.常规Hibernate 映射 integer 或者 intint 或者 java.lang.IntegerINTEGER4 字节longlong  LongBIGINT8 字节shortshort  ShortSMALLINT2 字节bytebyte  ByteTINYINT1 字节floatfloat  FloatFLOAT4 字节... 全文

hibernate 数据映射 mysql jee

MySQL数据库的启动与终止(1)

由于MySQL服务器具有多种安装分发,而且能够运行在多种操作平台之上,因此它的启动与停止的方法也多种多样。你可以根据实际情况使用其中的一种。在你安装、升级或者维护系统时,你可能需要多次启动和终止服务器,你需要了解启动和终止服务器的方方面面。直接运行守护程序1、你可以采用的方法一般的,你可以有以下几种选择启动MySQL服务器,它们的功能和用法几乎是相同的,所以一起在这里介绍:... 全文

MySQL 数据库 MySQL启动与终止

重置MySQL数据库root用户密码

重置MySQL数据库root用户密码一、Linux系统安装的MYSQL数据库密码重置:1.首先停止正在运行的MySQL进程运行 killall -TERM mysqld 2、以安全模式启动MySQL (数据库安装路径自行修改)运行 /usr/local/mysql/bin/mysqld_safe --skip-grant-tables & 3、完成以后就可以不用密码进入MySQL了运行 /usr/local/mysql/bin/mysql -u root -p 进入 4、更改密码>use mysql... 全文

数据库 MYSQL 重置MYSQL密码 Linux 休闲