玩mysql必须知道的10个tip
一:启动和关闭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推荐