玩mysql必须知道的10个tip

标签: mysql 知道 tip | 发表时间:2014-11-03 10:15 | 作者:porterzhang
出处:http://www.iteye.com

一:启动和关闭mysql

linux下
比如我的mysql是用源码方式安装在/usr/local/mysql
自动:将/usr/local/mysql/share/mysql/mysql.server拷贝到/etc/rc.d/init.d/下,然后
chkconfig --add mysql.server就可以开机就启动mysql服务了。
手动:以root身份执行/usr/local/mysql/bin/mysqld_safe --user=mysql

windows下
自动:
用cmd方式,到mysql安装路径的bin文件夹下,执行:mysqld-nt --install

手动:直接到到mysql安装路径的bin文件夹下执行net start mysql即可。
如果不想让mysql在计算机启动时候就启动服务,执行:mysqld-nt --remove
也可以在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services中删除对应服务并重启计算机。
关闭mysql:mysqladmin -uroot -p shutdown
启动mysql:
mysqld-nt --install
net start mysql

 

还可以在my.cnf 或者my.ini 配置文件里的[mysqld]段写入skip-grant-tables ,一样可以起到无权限审核的效果。
二:添加用户并设置权限 
更新密码

UPDATE user SET Password=PASSWORD('new_password')
WHERE user='root';

新建用户并赋予权限

GRANT ALL PRIVILEGES ON *.* TO  monty@localhost 
IDENTIFIED BY 'something' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO  monty@"% "
IDENTIFIED BY 'something' WITH GRANT OPTION;
GRANT RELOAD,PROCESS ON *.* TO  admin@localhost ;
GRANT USAGE ON *.* TO  dummy@localhost ;


FLUSH PRIVILEGES;

 

三:添加删除库

CREATE DATABASE db_name

DROP DATABASE [IF EXISTS] db_name

 

同时可以通过下面代码加默认字符集和默认排序方法。

DEFAULT CHARACTER SET gbk COLLATE gbk _chinese_ci;

 

四:备份和还原

常规备份命令是mysqldump,这里以tm数据库为例,做简单介绍,详细资料参考
http://info.mysql.cn/install/2006/0410/5521.html 
备份:
#mysqldump -u root -p tm > tm_20060101.sql
按提示输入密码,这就把tm数据库所有的表结构和数据备份到tm_20060101.sql了,因为要总进行备份工作,如果数据量大会占用很大空间,
这是可以利用gzip压缩数据,命令如下:
#mysqldump -u root -p tm | gzip > tm_20060101.sql.gz
还可以备份到远程机器,用-h制定,如
#mysqldump -u root -p tm > tm_20060101.sql -h xxx.xxx.xxx.xxx
可以直接备份到IP地址为xxx.xxx.xxx.xxx的远程计算机。
系统崩溃,重建系统,或恢复数据库时,可以这样恢复数据:
#mysql -u root -p tm < tm_20060101.sql
从压缩文件直接恢复:
#gunzip < tm_20060101.sql.gz | mysql -u root -p tm

五:维护和修复表

myisamchk /path/to/datadir/*/*.MYI

myisamchk -r /path/to/datadir/*/*.MYI

 

六:丢失密码

前提必须先kill掉mysqld的进程。
然后用一下命令启动mysqld

linux: .mysqld_safe --skip-grant-tables &
windows: mysqld-nt --skip-grant-tables

然后不用密码直接进入mysql,用前面的方法添加或修改用户密码。

 

七:改变数据库的字符集设置

如果MySQL数据库已经安装好,可以使用下列SQL命令查看MySQL当前的字符集设置: 
mysql> SHOW VARIABLES LIKE 'character_set_%'; 
+--------------------------+----------------------------+ 
| Variable_name | Value | 
+--------------------------+----------------------------+ 
| character_set_client | latin1 | 
| character_set_connection | latin1 | 
| character_set_database | latin1 | 
| character_set_results | latin1 | 
| character_set_server | latin1 | 
| character_set_system | utf8 | 
| character_sets_dir | /usr/share/mysql/charsets/ | 
+--------------------------+----------------------------+ 
7 rows in set (0.00 sec)

mysql> SHOW VARIABLES LIKE 'collation_%'; 
+----------------------+-------------------+ 
| Variable_name | Value | 
+----------------------+-------------------+ 
| collation_connection | latin1_swedish_ci | 
| collation_database | latin1_swedish_ci | 
| collation_server | latin1_swedish_ci | 
+----------------------+-------------------+ 
3 rows in set (0.00 sec)

然后依次执行以下语句,然后重启mysql server:

set  character_set_client  = gbk; 
set  character_set_connection  gbk; 
set  character_set_database  gbk; 
set  character_set_results  gbk; 
set  character_set_server  gbk;

set  character_set_system = gbk; 
--此处utf-8也可以
--然后执行:
SET collation_server = gbk_chinese_ci ;
SET collation_database = gbk_chinese_ci ;
SET collation_connection = gbk_chinese_ci ;

CREATE DATABASE  database-name CHARACTER SET utf8 COLLATE utf8_general_ci;

 

八:mysql 读写分离  
 
通过mysql-proxy实现读写分离

===数据库同步===
0.主服务器上配置打开
log-bin=mysql-bin
server-id      = 1
1.在主服务器建立复制用户,ip为从服务器的ip
grant replication slave on *.* to 'repl'@'127.0.0.1' identified by '1qazxsw2';
2.锁定主服务器, flush tables with read lock;
3.如果主服务器中有数据,就复制主服务数据覆盖从服务数据文件
4.获取偏移量 show master status;
5.打开从服务器配置文件
server-id       = 2
master-host     =   192.168.1.5
master-user     =   repl
master-password =   xxxx
master-port     =  3306
log-bin=mysql-bin

6.重启从服务器,/etc/init.d/mysql start --skip-slave-start
7.配置偏移量(文件名必须一致,特别是后面的数字)
change master to 
master_log_file='mysql-bin.000002',
master_log_pos=98;

change master to master_log_file='mysql-bin.000003',master_log_pos=98;
6.启动复制 start slave;

 

配置读写分离时需要的几个查看服务器状态的命令
show master status \G;
show slave status \G;
show processlist \G;

 

 

九:mysql proxy

 

下载mysql proxy脚本,修改并保存下面的启动文件,放入/etc/init.d目录里,用chkconfig放入系统运行中。

 

#!/bin/sh
# chkconfig: 345 74 30
# description: Mysql Proxy
#
#
export LUA_PATH=/opt/proxy/share/mysql-proxy/?.lua

cd /opt/proxy/sbin
mode=$1
if [ -z "$mode" ] ; then
  mode="start"
fi

case $mode in
  'start')
    ./mysql-proxy --daemon \
--proxy-address=:3307 \
--proxy-backend-addresses=192.168.1.5:3306 \
--proxy-read-only-backend-addresses=:3306 \
--proxy-lua-script=/opt/proxy/share/mysql-proxy/rw-splitting.lua
    ;;

  'stop')
    killall mysql-proxy
    ;;

  'restart')
    if $0 stop ; then
      $0 start
    else
      echo  "retart failed!!!"
      exit 1
    fi
    ;;
esac
exit 0

 

 

十,终于完成这篇文章,mysql调优脚本

tuning-primer 脚本是分析mysql运行参数和日志的工具,他可以通过分析结果,给你提示一些优化方向,使用它比你慢慢去分析参数和在线数据方便很多。但是也鉴于他分析的是在线数据,所以需要分析前你的Mysql服务器已经在运行一段时间才行,最好运行时多于两周。

 

具体使用:

下载tuning-primer

wget  http://www.day32.com/MySQL/tuning-primer.sh

 

设置权限
chmod +x tuning-primer.sh

 

在用户的home目录建立.my.cnf文件,脚本需要从这里读取mysql服务器的登录信息(用户名密码)

 

[client]
user = USERNAME
password = PASSWORD
socket = /tmp/mysql.sock

 

最后运行
./tuning-primer.sh

 

这时脚本会输出一些信息,其中重要的信息会用彩色文字显示。如果你使用的是SecureCRT,你需要在终端选项中,把仿真终端改成ANSI颜色。

 

其他的就看你自己的了。

 

http://www.chedong.com/blog/archives/001451.html

 

断断续续终于完成了这篇文章,希望它能成为最实用的MYSQL技巧指导



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [mysql 知道 tip] 推荐:

玩mysql必须知道的10个tip

- - SQL - 编程语言 - ITeye博客
比如我的mysql是用源码方式安装在/usr/local/mysql. 自动:将/usr/local/mysql/share/mysql/mysql.server拷贝到/etc/rc.d/init.d/下,然后. chkconfig --add mysql.server就可以开机就启动mysql服务了.

你可能不知道的mysql | LinkinStar's Blog

- -
以下是针对mysql的知识点整理,用于复习,主要以罗列为主,详细具体讲解可以参考书《高性能mysql》,你可以过一遍看看有无知识点遗漏. 客户端 -> 连接器 -> 分析器 -> 优化器 -> 执行器 -> 存储引擎. 分析器:分析语法(包含解析器和预处理器,解析器生成解析树,预处理器判断字段存在歧义).

Tip中小三角的实现

- 溪梦 - WEB前端开发
前段时间专门研究了一下腾讯微博的Tip,很有意思. tip中的小箭头是用“◆”(encode为:◆)字符模拟的. 以前也写过类似的实现方案《用css的border属性实现三角》. 用“◆”字符模拟小三角有一个有点就是:比如tip有border时,也可以用两个绝对定位的“◆”字符模拟. 如图: 注意:最好根据您的实际情况设置“◆”的字体,我这里用了宋体,有棱有角真好.

HBase的一些应用设计tip

- - BlogJava_首页
1,对于HBase的存储设计,要考虑它的存储结构是:rowkey+columnFamily:columnQualifier+timestamp(version)+value = KeyValue in HBase,一个KeyValue依次按照rowkey,columnkey和timestamp有序.

weka特征预处理的一些tip

- - BlogJava-首页技术区
首先,提供两个地址,这里包含了全部的内容原文:. weka可以以目录形式读入数据. 然后再简单说一下weka在做文本特征内容处理时候需要注意的东西:. 声明一点,在weka的gui下是没法使用这个功能的:以目录形式读入数据. 首先,把要处理的数据写入到这样的目录结构下:. 然后在源码包下,命令行执行 java weka.core.converters.TextDirectoryLoader -dir text_example > text_example.arff.

小tip:巧用CSS3属性作为CSS hack

- 逸川 - 张鑫旭-鑫空间-鑫生活
本文地址:http://www.zhangxinxu.com/wordpress/?p=1867. 题目:实现类似下图的宽度自适应效果,IE9+,FireFox,Chrome,Opera等使用CSS3实现,IE6~8浏览器使用图片实现. ————- 假设这是大家全神贯注思考的18分钟 ————————.

小tip: 使用CSS将图片转换成黑白的

- - 张鑫旭-鑫空间-鑫生活
本文地址: http://www.zhangxinxu.com/wordpress/?p=2547. //zxx: 最近很积极地折腾手机页面的些东西,加上其他一些人生重要的事,所以木有更新. 可能早就知道,像汶川这种糟糕的日子网站全灰在IE下是可以轻松实现的( filter: gray;),不过,当时,其他浏览器是无解的.

小tip: CSS后代选择器可能的错误认识

- - 张鑫旭-鑫空间-鑫生活
本文地址: http://www.zhangxinxu.com/wordpress/?p=2286. 一、关于类选择器的一个问题. 假设有下面一个面试题,CSS代码如下:. 问:第一行和第二行文字颜色分别是. 这个例子很简单,我估计基本上都能回答正确:DOM越深的类名权重越高,因此,第一行文字红色,第二行文字绿色第一行文字绿色,第二行文字红色.

一个简单的鉴别密码强度的jquery tip

- - jackyrong
已有 0 人发表留言,猛击->> 这里<<-参与讨论. —软件人才免语言低担保 赴美带薪读研.

小tip: SVG和Canvas分别实现图片圆角效果

- - 张鑫旭-鑫空间-鑫生活
本文地址: http://www.zhangxinxu.com/wordpress/?p=4242. 一、图片覆盖和CSS3 border-radius实现圆角. 找个中间镂空的图片覆盖在原始图片上,需要跟网页底色一致. 上面两个方法demo有,截图有~. 可是demo上的图片素材一不小心放了个大,我不想换图片,地址就不放了,大家可以YY下.