Jean - 记录成长历程

  • 关于
  • Language
  • RSS Feed
  • 微博
  • 豆瓣
21
Jun

Mysql实战笔记(管理与维护)

By admin|Web服务器|1 Comment

linux下的安装

rpm 安装路径不灵活

二进制 灵活性好,直接使用即可

./scripts/mysql_install_db –user=okooo 注意log和tmp的目录设置

源码 最灵活,性能最好,根据需要定制编译。下面是一个比较稳妥和普遍的编译指令。

./configure –prefix=/usr/local/webserver/mysql/ –enable-assembler –with-extra-charsets=complex –enable-thread-safe-client –with-big-tables –with-readline –with-ssl –with-embedded-server –enable-local-infile –with-plugins=innobase

常用命令

因模板对特殊符号(–)支持的不好,所以当命令无法执行时请把单-换成双-

查看服务器参数值:show variables;

查看服务器运行状态:show status;

shell下直接查看数据库状态:mysqladmin -uroot variables

查看当前连接的用户:select current_user();

查看当前使用的数据库:select database();

查询用户:select user,host from user;

查询正在执行的语句:show processlist;

查询数据库和表的统计信息:mysqlshow -uroot –count

查询数据库中表的信息:mysqlshow -uroot test –count

查询具体表结构:desc 表名;

查询错误号:perror 30

启动mysql:bin/safe_mysqld –user=mysql &

帮助:mysqld –verbose –help

查看默认的存储引擎:mysql> show variables like ‘table_type’;

当前数据库支持的引擎:mysql> show ENGINES \G;

涉及到修改数据库的常用命令

将wp_posts表中post_content字段中文字”old”替换为”new” :update wp_posts set post_content=replace(post_content,’old’,’new’)

更改表名:rename table 原表名 to 新表名;

数据库导入导出

导出以voice库为例

[root@jeantoe ~]# mkdir DUMPDIR && cd DUMPDIR

[root@jeantoe ~]# mysqldump  -q –opt –default-character-set=latin1  –single-transaction –extended-insert=false –max_allowed_packet=64M voice    | gzip > voice.sql.gz

导入

[root@jeantoe ~]# mysqladmin create voice

[root@jeantoe ~]# zcat voice.sql.gz | mysql -uroot –database=voice

在进行大数据导入时使用renice 把进程优先级调高(范围是19到-20)

[root@jeantoe ~]#renice -20 888

Mysql Tips

免登录执行sql语句(shell)

mysql -u root -p 123 -e “…”

错误处理(批量sql语句)

-f 强制执行sql
-v显示出错语句
–show-warnings全部错误信息

myisam表压缩,压后无法DML
mysqladmin
mysqlbinlog 日志管理
mysqlcheck (myisam维护,优化,分析)
mysqldump
mysqlhotcopy (myisam表热备份)
mysqlimport (数据库导入)
mysqlshow (数据库对象查看)
perror (错误代码查看)
replace (文本替换)

日志

错误日志:普通,系统故障时查看
二进制日志:记录了DDL和DML语句,不包括数据库查询语句,此日志对于灾难恢复极有用。
查询日志:记录客户端所有语句,默认关闭,影响性能
慢查询日志:记录时间超过long_query_time的日志,通常开启,分析性能问题

备份与恢复

策略
1.确定引擎,不同引擎处理数据一致性方面是不太一样的。
2.确定全备份或增量备份
3.备份周期
4.开启log-bin (rpm安装时日志的默认位置比较诡异/var/lib/mysql/log_bin)
5.经常作恢复测试,确保备份是有效的。

逻辑备份和恢复(速度慢)
1.mysqldump 最常用
2.基于时间点mysqlbinlog –stop-date=”时间” /日志 | mysql -u root -p
3.基于位置mysqlbinlog –start-date=”时间” –stop-date=”时间” /日志 > /tmp/mysql_restore.sql

物理备份(兼容性问题)

1.冷备份cp
2.热备份
MYISAM引擎。本质上是将要备份的表加读锁,然后再cp数据文件到备份目录。通常使用mysqlhotcopy。在前者使用不正常时则手工加读锁(flush tables for read;)。
innoDB,通常使用ibbackup,缺点是收费因此普及率不高。

表的导入和导出

SELECT … INTO OUTFILE
LOAD DATA INFILE
跨平台操作时注意设置line-terminated-by

安全

1.不以root权限运行mysql
2.防止DNS欺骗
3.删除匿名帐号
4.只授予帐号必须的权限
5.除root外任何人不应该有mysql库和user表的存取权限
6.不把FILE,PROCESS或SUPER授予除管理员以外的帐号
7.DROP TABLE并不收回以前的相关访问授权
8.使用SSL
9.访问限制(HOST)
10.注意REVOKE漏洞

mysql常见问题总结

1.忘记mysql的root密码
–skip-grant-tables

2.myISAM表损坏
myisamchk -r tablename活myisamchk -o tablename

3.myISAM表超过4G无法访问
alter table tbl_name MAX_ROWS=……

4.DNS反向解析引起的宕机
–skip-name-resolve

5.mysql.sock丢失
mysql –protocol=TCP -uroot -p3306 -hlocalhost

优化(未实践)

1.去掉不需要的模块
2.只选择需要使用的字符集
3.静态编译,然而,如果希望装入用户自定义的函数,则不能使用静态二进制系统,因为 UDF 机制依赖于动态连接

升级p325

方法一:通过网络

1.在新mysql中创建和老版本相同的数据库
mysqladmin -h hostname -P port -u user -p passwd create db_name
老版mysql中执行
mysqldump –opt db_name | mysql -h hostname -P port -u user -p passwd db_name
2.cp原mysql数据库目录覆盖新版mysql目录
以rpm包的位置为例,cp -R /var/lib/old_mysql/ /var/lib/new_mysql
3.mysql_fix_privilege_tables升级权限表

无觅相关文章插件,快速提升流量

Tagged as: mysql, 数据库
Add your comment →

1 Comment

  1. 测试bin-log记录是否成功的方法

    语句
    CREATE TABLE customer
    (First_Name char(50),
    Last_Name char(50),
    Address char(50),
    City char(50),
    Country char(25),
    Birth_Date date)

    CREATE TABLE customer
    (First_Name char(50),
    Last_Name char(50),
    Address char(50) default ‘Unknown’,
    City char(50) default ‘Mumbai’,
    Country char(25),
    Birth_Date date)

    bin-log状态检查
    以下内容来自 http://mckobe23.itpub.net/post/29123/482205

    1.刷新日志

    mysql > flush logs;

    2.查看当然数据库binlog信息

    mysql > show binary logs;

    +——————+———–+
    | Log_name | File_size |
    +——————+———–+
    | mysql-bin.000023 | 149 |
    | mysql-bin.000024 | 149 |
    | mysql-bin.000025 | 149 |
    | mysql-bin.000026 | 149 |
    | mysql-bin.000027 | 149 |
    | mysql-bin.000028 | 106 |
    +——————+———–+

    3.清除历史log,保留最近的

    mysql > purge binary logs to ‘mysql-bin.000028′;

    4.查看binlog事件

    mysql > show binlog events;

    +——————+—–+————-+———–+————-+—————————————+
    | Log_name | Pos | Event_type | Server_id | End_log_pos | Info |
    +——————+—–+————-+———–+————-+—————————————+
    | mysql-bin.000023 | 4 | Format_desc | 1 | 106 | Server ver: 5.1.31-log, Binlog ver: 4 |
    | mysql-bin.000023 | 106 | Rotate | 1 | 149 | mysql-bin.000024;pos=4 |
    +——————+—–+————-+———–+————-+—————————————+

    5.查看本地binlog文件

    # ls -l /data/dbfile

    mysql-bin.000028
    mysql-bin.index

    查看当前使用的Binary log名称

    # more mysql-bin.index
    ./mysql-bin.000023
    ./mysql-bin.000024
    ./mysql-bin.000025
    ./mysql-bin.000026
    ./mysql-bin.000027
    ./mysql-bin.000028

    备份中清除日志

    # mysqldump –flush-logs –delete-master-logs

    [回复]

    By: admin Author
    2009-10-10 at 17:47

Leave your comment below! Cancel Reply

点击取消回复

View More Posts:
  • ←
  • →

分类

  • Linux系统 (61)
  • Linux集群 (4)
  • Web服务器 (26)
  • 创业相关 (6)
  • 工作笔记 (34)
  • 我爱折腾 (16)
  • 日记 (46)
  • 网络 (3)
  • 脚本编程 (49)

最新日志

  • 使用w3 total cache给wordpress提速
  • 从零开始,我的创业感悟
  • 为大众创造更美好的日常生活
  • 我的站立式工作平台
  • 阿里云计算使用简评

最新评论

  • admin on 从零开始,我的创业感悟
  • Kovlala on 从零开始,我的创业感悟
  • jean on 从零开始,我的创业感悟
  • Kovlala on 从零开始,我的创业感悟
  • ElmaByrd35 on 解决Fedora 11中文字体难看问题

博客互联

  • HackLog
  • leapsoul
  • Myredhat
  • Ninth element
  • Ti’blog
  • William Hua
  • young001
  • 懒人运维
  • 曙光博客
  • 月夜
  • 月影
  • 杂货店一号铺
  • 王先进’s blog
  • 疯中舞步
  • 菜鸟的技术站
  • 运维进行时

技术

  • DBA BLOG
  • 回忆未来[张宴]
  • 扶凯
  • 王炜's Blog
  • 百变贝贝

Powered by the inLine Minimal WordPress Theme