热门关键字:  ubuntu  分区  函数  Fedora  linux系统进程

MySQL笔记(一)

来源: 作者: 时间:2008-06-26 Tag: 点击:

mysqldump
以SQL语句或定位符分隔的文本文件将一个MySQL数据库倾倒一个文件中。这是最早由Igor Romanenko编写的自由软件的增强版本。见12.3 从MySQL数据库和表倾倒结构和数据。
mysqlimport
使用LOAD DATA INFILE将文本文件倒入其各自的表中。
mysqlshow
显示数据库,表,列和索引的信息。
mysql_install_db
以缺省权限创建MySQL授权表。这通常仅被执行一次。就是在系统上第一次安装MySQL时。
replace
一个实用程序,由msql2mysql使用,但是有更一般的适用性。replace改变文件中或标准输入上的字符串。使用一台有限状态机首先匹配更长的字符串,能被用来交换字符串。例如,这个命令在给定的文件中交换a和b:
shell> replace a b b a -- file1 file2 ...
safe_mysqld
一个脚本,用某些更安全的特征启动mysqld守护进程,例如当一个错误发生时,重启服务器并且记载运行时刻信息到一个日志文件中。

##########################################
###### 修复MySQL表 ######
##########################################
检查所有表:
myisamchk *.MYI
修复
myisamchk -r -q *.MYI
myisamchk -r *.MYI
myisamchk -o *.MYI
可对所有的表进行修复
1、检查是否有坏表
运行myisamchk *.MYI或(myisamchk -e *.MYI,如果你有更多的时间)。使用-s(沉默)选项禁止不必要的信息。
2、简单安全修复
myisamchk -r -q tbl_name.MYI(-r -q意味着“快速恢复模式”)。这将试图不接触数据文件来修复索引文件。如果数据文件包含它应有的一切和在数据文件指向正确地点的删除连接,这应该管用并且表可被修复
3、如果上面的简单修复不成功
使用myisamchk -r tbl_name(-r意味着“恢复模式”)。这将从数据文件中删除不正确的记录和已被删除的记录并重建索引文件。
如果前面的步骤失败,使用myisamchk --safe-recover tbl_name。安全恢复模式使用一个老的恢复方法,处理常规恢复模式不行的少数情况(但是更慢)。

检查表:
FLUSH TABLES;
mysql>check table table_name; //只能检查MYISAM,INNODB
修复表:
mysql>repair table table_name;//只能修复MYISAM

##########################################
###### MySQL 全文检索 ######
##########################################
首先给表创建索引:
ALTER TABLE reviews ADD FULLTEXT INDEX (data);
SHOW INDEXES FROM reviews;
全文检索语法
#查找含有单词“single”的记录
SELECT id FROM reviews WHERE MATCH (data) AGAINST ('single');
#当MySQL收到了一个全文搜索的请求,它就在内部对每个记录进行评分,不匹配的记录得分为零,而“更相关”的记录会得到比“不太相关”的记录相对更高的分数。
SELECT id, MATCH (data) AGAINST ('rock') FROM reviews;
#查找含有单词“single”但是没有“Madonna”的记录
SELECT id FROM reviews WHERE MATCH (data) AGAINST ('+single -madonna' IN BOOLEAN MODE);
#查找单词中含有“hot”的记录
SELECT id FROM reviews WHERE MATCH (data) AGAINST ('hot*' IN BOOLEAN MODE);

##########################################
###### 解决MySQL客户端被阻塞 ######
##########################################
缺省地,mysqld在10个连接错误后阻塞一台主机。你可以通过象这样启动服务器很容易地调整它:
max_connections = 1000
max_connect_errors = 100
Host '...' is blocked错误
Host 'hostname' is blocked because of many connection errors.
Unblock with 'mysqladmin flush-hosts'
  这意味着,mysqld已经得到了大量(max_connect_errors)的主机'hostname'的在中途被中断了的连接请求。在max_connect_errors次失败请求后,mysqld认定出错了(象来字一个黑客的攻击),并且阻止该站点进一步的连接,
直到某人
执行命令:mysqladmin flush-hosts。

##########################################
###### 多主一从 MySQL 同步表 ######
##########################################
1、同步不同库的表
replicate-do-table=db_name.tbl_name
2、多个不同机子上的不同库的表同步到同一个机子的同一个库中,再加上下面这句.
replicate-rewrite-db=from_name->to_name
cat my.cnf
[mysqld_multi]
mysqld = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
[mysqld1]
port = 3306
socket = /tmp/mysql.sock1
pid-file = /usr/local/mysql/data/test-db1a.pid
log = /usr/local/mysql/data/test-db1.log
log-slow-queries =/usr/local/mysql/data/slowquery1.log
server-id = 2
master-host = 192.168.0.1
master-user = 'replcate'
master-password = '1234567890'
master-port = 3306
report-host = test-db3
master-connect-retry = 30
log-slave-updates
replicate-rewrite-db = from_name->to_name
replicate-do-table = db_name.tbl_name
最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册