如何解决mysql的Table is read only错误
mysql的Table xxxx is read only错误往往是发生在Linux主机上,在网上查了很多资料后终于发现它本质上是个权限问题。
要解决它首先要给mysql的数据库目录加上可写权限,即777
然后到mysql的Bin目录执行刷新
mysqladmin -u <username> -p flush-tables
并且保证mysql安装目录的/var/lib/mysql的目录权限设置为700
其间所有文件的权限设置为660
基本可以解决
另:当我们更改了mysql权限表,我们可以重起服务器,但更简单的办法是执行
mysqladmin -u <username> -p reload
如何实现大数据量MySQL导入导出
导出成文本
方法: SELECT * INTO OUTFILE ‘/backup/user.txt’ FROM user;
导出成 .sql 文件(用 mysqludmp 导出数据是相对较快的方法.)
方法: mysqldump -t -n –default-character-set=latin1 test?user?> /backup/user.sql
导入 txt 文件
方法: mysql test < /backup/user.txt
导入 sql 文件
方法: mysql test < /backup/user.sql
用load data是较快的方法
大数据量情况下, 最好是创建好表之后, 同时也要创建好相关的索引. 虽然说没有索引时导入更快, 但是数据导入完成之后再创建索引总共的耗时比事先创建好了再导入要来的多多了.
另外,如果是myisam表,则最好是导入之前先禁用表的索引,导完之后再启用;或者是一开始不创建索引,导完之后再创建,都会比导入的同时更新索引来的快很多.
随机选取MySQL数据
MySQ随机查询数据
以前在群里讨论过这个问题,比较的有意思.mysql的语法真好玩.他们原来都想用PHP的实现随机,但取出多条好像要进行两次以上查询.翻了手册,找到了下面这个语句,可以完成任务了。
SELECT * FROM table_name ORDER BY rand() LIMIT 5;
MySQL的rand()函数在手册里是这么说的:
RAND()?
RAND(N)?
返回在范围0到1.0内的随机浮点值。如果一个整数参数N被指定,它被用作种子值。
实际效果
mysql> select RAND();
-> 0.5925
mysql> select RAND(20);
-> 0.1811
mysql> select RAND(20);
-> 0.1811
mysql> select RAND();
-> 0.2079
mysql> select RAND();
-> 0.7888
MySQ随机更新数据
如何写一个语句能一下更新几百条MYSQL数据!
需要测试MYSQL数据库,里面有一个上万条数据的数据库,如何写一个PHP文件一下每次更新几百条信息,我都是写一个循环一次更新一条信息,这样我知道用WHILE写就可以了,要是一次更新好比100条数据改如何写呢??
正确答案是:UPDATE cdb_posts ?SET ?views = rand();?
气死在insert 命令中,value()里面用rand(),注意字段宽度是否够一直以为mysql随机查询几条数据,就用 ?
SELECT * FROM `table` ORDER BY RAND() LIMIT 5
同步mysql5数据库
因为Mysql服务使用Cache和缓冲区来提供对存储在磁盘上的数据库文件更新的效率,所以文件的内容和当前数据库的内容可能并不完全一致。而标准的备份程序仅仅包括对系统和数据文件的拷贝,这种对Mysql数据文件的备份并不能完全满足我们的需要,因为它不能保证拷贝的文件在系统崩溃时能够正常地使用。Mysql中的工具可以对数据进行实时的备份,而且不会影响服务的效率。
Mysql数据库版本:5.0
主机:
1) 打开mysql的更新日志记录
# cp my-huge.cnf /var/db/mysql/my.cnf
# vi /var/db/mysql/my.cnf
修改/var/db/mysql/my.cnf文件,把
log-bin=mysql-bin改为log-bin=/usr/backups/mysql/mysql-bin
建立拜访更新日志的路径:
# mkdir /usr/backups
# mkdir /usr/backups/mysql
# chown mysql:mysql /usr/backups/mysql
重新启动mysql服务,使到其记录更新日志生效:
# /usr/local/etc/rc.d/mysql-server.sh restart
这样数据库的更新日志就会放在/usr/backups/mysql目录中,我们下面就会使用它们。
为了方便更新,我们在/usr/local/rsyncd.conf中建立第二个同步节点:
[mysql]
path = /usr/backups/mysql/
comment = my blog mysql data
uid = mysql
gid = mysql
ignore errors
read only = yes
list = yes
auth users = linuxing
secrets file = /usr/local/etc/rsyncd.secrets
2)备份mysql数据库
# mysqldump -uroot -ppassword test > /usr/backups/mysql/test.sql
其中password是linuxing登陆mysql的密码,test是需要备份的数据库;
备机:
1)建立备份服务器的主数据库
# mkdir /root/mysql
# mysqladmin -uroot -ppassword create test
# rsync -azv rsync://linuxing@www.linuxfly.org/mysql [...]
配置Mysql5主从同步
一.安装包选择:
mysql-5.0.19.tar.gz
二.安装环境:
主服务器:192.168.0.201
从服务器:192.168.0.00
三.主服务器配置:
建立用户
grant replication slave on *.* to user001@192.168.0.200 identified by ‘111111′
编辑配置文件/etc/my.cnf
server-id = 1
log-bin=mysql-bin
binlog-do-db=test
binlog-ignore-db=mysql
注:
# grant replication slave on *.* to ‘用户名’@’主机’ identified by ‘密码’;
# binlog-do-db=需要备份的数据库名,可写多行
# binlog-ignore-db=不需要备份的数据库名,可写多行
#可在B Slave上做连接测试: mysql -h 192.168.0.200 -u test -p
四.从服务器配置:
编辑/etc/my.cnf
server-id=2
server-id=2
log-bin=mysql-bin
master-host=192.168.0.201
master-user=user001
master-password=111111
master-port=3306
replicate-do-db=test
replicate-do-db=test1
# replicate-do-db=test需要备份的数据库名
# replicate-ignore-db=mysql?忽略的数据库
# master-connect-retry=60?如果从服务器发现主服务器断掉,重新连接的时间差(秒)
先手动同步一下主从服务器中要备份的数据库,再重启主,从服务器。
五.验证是否配置正确:
# mysql>slave start;
#?mysql>show slave status\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.0.201
Master_User: repluser1
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000045
Read_Master_Log_Pos: 212
Relay_Log_File: sky-relay-bin.000054
Relay_Log_Pos: 235
Relay_Master_Log_File: [...]
configure: error: No curses/termcap library found
在编译Mysql时
./configure –prefix=DIR
如果出现了以下错误:
……
checking for tgetent in -ltermcap… no
checking for termcap functions library… configure: error: No curses/termcap library found
说明 curses/termcap 库没有安装
apt-cache search curses | grep lib
如果没有安装 libncurses5-dev ,然后重新运行配置
apt-get install libncurses5-dev
如果已经安装把安装路径设置到那个PATH中,也可以在编译时候加入路径
./configure –with-named-curses-libs=/usr/lib/libncursesw.so.5
x is not allowed to connect to this MySQL server
1.root用户登录mysql.
#mysql -u root -p mysql
2.进入mysql,格式:grant 权限 on 数据库名.表名 用户@登录主机 identified by “用户密码”;
grant select,update,insert,delete on *.* to ‘taohx’ identified by ‘taohx’;@’10.187.82.130‘
grant all privileges on *.* to ‘root’@’%’ identified by ‘mysqlroot’ with grant option;\g (Root可从任意主机登录)
查看结果,执行:
use mysql;
select host,user,password from user;
可以看到在user表中已有刚才创建的floydlee用户。host字段表示登录的主机,其值可以用IP,也可用主机名,
将host字段的值改为%就表示在任何客户端机器上能以floydlee用户登录到mysql服务器,建议在开发时设为%。该可以登录了。
update user set host = ‘%’ where user = ‘taohx’;
2、退出 mysql.
[root@rainfish [...]
高性能网站架构-LLMP
在网站架构设计中,大家一定对 LAMP (LinuxApacheMysqlPhp) 不陌生。
LAMP确实是一个非常优秀的架构,秉承着自由,开放,高效,易用的设计理念。
但是,本文不打算探讨LAMP,网上有很多介绍LAMP的资料。
这里,想给大家介绍另一个在LAMP上衍生出来的,以提升性能为主要目的的开源网站架构。
1, 选择高性能 OS
首先,不难理解,任何一个server最底层的支撑还是OS,而OS的选择,主要包括 Unix, Windows server, Linux, BSD等等。
其中,开源的OS,有Linux, BSD及部分unix。从目前使用情况来看,linux还是网站首选OS之一。
但是,Linux由于其自由的特点,也给选择产生了一些不便 - 发行版太多。
现有的主流版本包括 red hat(RHEL), ubuntu, 红旗, opensuse, debian等。
其中,每一个发行版都有自己的特色,比如RHEL的稳定,ubuntu的易用,红旗的中文支持很棒等。
但要以性能为主,又兼顾稳定,易用性,以上都不是最佳选择。
这里推荐一个发行版,它是一个极限性能,加高度可定制,优化的 Linux - gentoo。
gentoo的性能优化是从kernel源码编译就开始入手了,通过选择不同的源码包,可以适应于不同的应用场景。
(不同内核介绍:?http://imkenwu.javaeye.com/blog/168906?)
举个经典的例子:国内,douban.com 在定制优化过的 gentoo 上跑的web服务器最高一天支撑了 2500 万pv。
http://www.dbanotes.net/arch/douban_web_server.html
这种流量,哪怕是提供纯静态的内容,也是很恐怖的。
而支持这种大流量的,除了server本身,最关键的就是高度精简的OS了。
所以,综上所述,高性能网站推荐使用可优化,定制的?gentoo?作为载体。
2, 选择高性能 web server
Apache是 LAMP 架构最核心的 web server, 开源,模块丰富,功能强大,稳定是它的绝对优势。
在美国前100个网站中,有49%的使用apache。可见其影响力。
但是,有利有弊,apache的致命缺陷,就是多于臃肿,强大的功能,一定会带来性能上的损耗。
面对这种情形,在市场上,有一支异军突起,那就是更轻量级的 web server - lighty(lighttpd)。
官方为它定义的口号是 fly light。
它具有非常低的内存开销,cpu占用率低,效能好,以及丰富的模块支持等特点。
这让他在短时间内占据了14%以上的市场份额。并且有越来越多的人开始选择使用lighty作为前端 web server。
到这里为之,其实高性能 web server 非?lighty?莫属。但更棒的是,依靠 gentoo 的高度定制化,我们还可以
进一步提升 lighty 的性能潜力-那就是定制 lighty。
3,选择高性能 database
数据库是任何网站走动态化内容展现及业务数据存储的保障。
市面上的开源数据库主要有 mysql , [...]

