之乎者也2011

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

1. mysql 的一些参数

# -e   这个参数是告诉mysql执行"-e" 后面的某个命令,而不连接到server
#	  此参数在写一些基本的mysql检查和监控的脚本中非常有用
mysql  -uroot -proot -e'show databases'
# --tee  将mysql输入和输出内容记录到文件里。便于大数据量的查询
mysql  -uroot -proot  --tee = /tmp/query.log
# --prompt  在mysql提示符中显示登录的主机,用户名,当前的数据库,很有用
mysql  -uroot -proot  --prompt = "\u@\h:\d >"

另外,也可以配置my.cnf,将prompt写入[mysql]分组里,这样就不用每次手动了

[mysql] 
prompt="\u@\h:\d >"

2. mysqladmin 的一些参数

-status #检测mysql基本状态
mysqladmin -uroot -proot -hlocalhost  status
    Uptime: 240  Threads: 1  Questions: 90  Slow queries: 5  Opens: 23  Flush tables: 1  Open tables: 17  Queries per second avg: 0.375
-ping #检测mysql是否正常
mysqladmin -uroot -proot -hlocalhost  ping
    mysqld is alive
-processlist #当前mysql的连接线程信息
mysqladmin -uroot -proot -hlocalhost  processlist
    --------------------------------------------------------------------------
    | Id | User | Host      | db | Command | Time | State | Info             |
    --------------------------------------------------------------------------
    | 8  | root | localhost |    | Query   | 0    |       | show processlist |
    --------------------------------------------------------------------------

3. mysqldump 常用参数

#-d (--no-data) 仅生成结构创建的语句,没有数据
mysqldump -uroot -proot  test  -d > /tmp/log.log 
#-l (--lock-all-tables) dump的时候锁表,保持数据一致性
mysqldump -uroot -proot  test  --lock-all-tables > /tmp/log.log 
#指定字符集。这点比较重要,防止生成不可用内容。
mysqldump -uroot -proot  test  --default-character-set=utf8 > /tmp/log.log

4. MySQL主从架构tips

  • 强烈建议ntpdate二台服务器的时间,不然来个未来(future)时间就麻烦了
  • 由于MySQL数据库走的都是内网,所以二台机器的iptables可以关闭,在配置过程中由于没关iptables发生了错误,直接导致admin在slave数据库上连不上主数据库
  • 主MySQL的binlog功能一定要打开,我们的线上服务器有次由于PHP程序误操作,发生了改单错误,幸亏用binlog恢复过来了;但开启此功能要注意binlog的大小,有次Nagios狂报警,binlog日志都快1T了
  • 平时多检查MySQL的备份文件,尤其要关注其真实大小及时间;如果有条件,建议多用备份的数据库文件在其余机器做下恢复实验,跟真实的运行的数据库比对,看有无区别
  • 数据库的主从切换是比较危险的操作,尤其是电子商务的跑单业务,很容易丢失数据,这种操作不到万不得已不推荐执行

5. shell脚本分析mysql
使用shell脚本做日志分析,然后将分析结果直接存储到mysql中,除了用perl连接Mysql外,还可以:
将每一步需要执行的语句保存到 tmp.sql 中,最后在使用

mysql -u uname -p pwd < tmp.sql

6. mysql备份数据脚本

#! /bin/bash
 
MysqlPATH="/data/app/mysql"
BackupPATH="/data/mysql_bak"
 
nowYear=`date +%Y`
nowMonth=`date +%m`
nowDay=`date +%d`
nowHour=`date +%H`
 
for DatabaseName in `$MysqlPATH/bin/mysqlshow | sed '1,3d; $d' | awk '{print $2}'`; 
    do
        echo "start backup database: "$DatabaseName;
        $MysqlPATH/bin/mysqldump --single-transaction --skip-opt $DatabaseName | gzip &gt; $BackupPATH/$DatabaseName"_"$nowYear$nowMonth$nowDay.gz
    done
posted on 2011-09-05 05:18  之乎者也2011  阅读(284)  评论(0编辑  收藏  举报