存档

文章标签 ‘Mysql’

mysql怎样rename database

2012年5月14日 没有评论

官方文档上讲:从5.1.7到5.1.23之间的版本可以直接用命令:

rename database db_name to db_new_name;

这样来搞。
如果非innodb存储引擎的话,可以停掉mysql,直接把目录名mv成新的数据库名即可

分类: tips 标签: , ,

mysql分支percona的XtraDB Cluster的安装流水账

2012年4月6日 没有评论

3台机器,环境都是Centos6.2 for x86_64,先分别装软件:

rpm -Uhv http://www.percona.com/downloads/percona-release/percona-release-0.0-1.x86_64.rpm
yum install sendmail
rpm -e mysql-libs postfix
yum install Percona-XtraDB-Cluster-server Percona-XtraDB-Cluster-client xtrabackup

这里为嘛要装sendmail呢,那是因为mysql-libs被postfix依赖,然后一堆东西都依赖于/usr/bin/sendmail,而如果直接干掉postfix的话,/usr/bin/sendmail也就跟着没了,所以要先装一个sendmail,再干掉postfix,这样的话/usr/bin/sendmail还有,至于为什么要干掉mysql-libs,那是因为跟要装的percona的某个包冲突,其实建议干掉所有的跟mysql相关的包。
接下来,要定制mysql配置文件my.cnf:

cp /usr/share/mysql/my-huge.cnf /etc/my.cnf
vim /etc/my.cnf

在/etc/my.cnf的[mysqld]的段里添加:

# for percona xtradb cluster
wsrep_provider=/usr/lib64/libgalera_smm.so
#wsrep_cluster_address=gcomm://10.0.0.1
wsrep_slave_threads=8
wsrep_sst_method=rsync
#wsrep_sst_method=xtrabackup
wsrep_cluster_name=percona_test_cluster
#wsrep_node_name=node3
binlog_format=ROW
innodb_autoinc_lock_mode=2
innodb_locks_unsafe_for_binlog=1

第一台机器(node1,ip地址是10.0.0.1)的不同部分:

wsrep_cluster_address=gcomm://
wsrep_node_name=node1

第二台机器(node2)的不同部分:

wsrep_cluster_address=gcomm://10.0.0.1
wsrep_node_name=node2

第三台机器(node3)的不同部分:

wsrep_cluster_address=gcomm://10.0.0.1
wsrep_node_name=node3

最后分别在三台机器上启动mysql(percona with xtradb)

/etc/rc.d/init.d/mysql start

最后做下简单的测试,分别登上三台机器,执行命令:

mysql

,再用mysql命令:

show databases;

,再在node1上执行mysql命令:

create database testsync;

创建数据库testsync,然后再在其他两台机器上用mysql命令

show databases;

看,会发现多了一个数据库testsync;然后再在第二台机器(node2)上用mysql命令

drop database testsync;

删掉数据库testsync,这下再在第一、三台机器上用mysql命令

show databases;

看,会发现testsync这个库已经被删掉了。

分类: Open Source 标签: , , ,

mysql包未装导致sendmail不能发信的问题

2011年4月15日 没有评论

这是as4的机器上发现的问题
maillog里老报:

Apr 15 12:48:25 admin sendmail[15179]: p3F4mPdv015179: Losing ./qfp3F4mPdv015179: savemail panic
Apr 15 12:48:25 admin sendmail[15179]: p3F4mPdv015179: SYSERR(root): savemail: cannot save rejected email anywhere

再看/var/log/message,发现报:

unable to dlopen /usr/lib/sasl2/libsql.so.2: libmysqlclient.so.14: cannot open shared object file: No such file

系统里/usr/lib/sasl2/libsql.so.2是指向/usr/lib/sasl2/libsql.so.2.0.19的

ldd /usr/lib/sasl2/libsql.so.2.0.19

发现libmysqlclient.so.14找不到,原来以为这应该是在包mysqlclient里的
结果不是,libmysqlclient.so.10是在包mysqlclient里的,libmysqlclient.so.14是在包mysql里的,于是上centos上抓了个版本4下的mysql包装上,就好了。

mysql中MyISAM类型的库的表数据文件最大4G?!

2010年12月20日 没有评论

一台服务器
32位的系统
2.6+的kernel
mysql为5.0.x版本
从别处拷过来一个库的数据文件
其中有好些都是4个G左右的文件
然后重启mysql的时候起不来
发现挂在myisamchk那里
k掉myisamchk进程
手工去掉–silent参数执行
发现报警告:

myisamchk: warning: Datafile is almost full, 4294967284 of 4294967294 used

用下面命令查了下这个index文件:
# myisamchk -dv deadlink.MYI
发现输出:

MyISAM file: deadlink.MYI
Record format: Packed
Character set: latin1_swedish_ci (8)
File-version: 1
Creation time: 2005-10-14 1:59:45
Recover time: 2005-11-21 8:22:40
Status: open,changed
Data records: 22090591 Deleted blocks: 0
Datafile parts: 52483933 Deleted data: 0
Datafile pointer (bytes): 4 Keyfile pointer (bytes): 4
Datafile length: 4294967284 Keyfile length: 2733665280
Max datafile length: 4294967294 Max keyfile length: 4398046510079
Recordlength: 53

table description:
Key Start Len Index Type Rec/key Root Blocksize
1 2 32 unique char packed stripped 1 390373376 1024
2 48 1 multip. binary NULL 2817245 61083648 1024
3 49 4 multip. unsigned long 1 1840502784 1024
4 49 4 multip. unsigned long 1 572611584 1024
44 4 long 1
5 44 4 multip. long 41430 633276416 1024
49 4 unsigned long 1

然后又翻了翻mysql文档
发现这个Max datafile length是可以改的
可以通过alter table tablename MAX_ROWS=1000000000 AVG_ROW_LENGTH=nnn;来修改

cacti+thold环境下查某台机器的thold的联系人信息的sql语句

2010年10月10日 没有评论

有需求要更改某一台服务器的thresholds的(报警)联系人信息

当然,如果是新机器

这里所提到的直接在库里添加就好

如果是老服务器

最好需要看一下原来的(报警)联系人是谁

于是就有了以下的sql语句

首先敲入mysql命令连上mysql

然后use cacti来使用cacti数据库

最后再用sql语句:

select plugin_thold_threshold_contact.thold_id as thold_id, plugin_thold_threshold_contact.contact_id as contact_id, user_auth.username as username, user_auth.full_name as full_name from user_auth, plugin_thold_contacts, plugin_thold_threshold_contact where plugin_thold_threshold_contact.contact_id = plugin_thold_contacts.id and plugin_thold_contacts.user_id = user_auth.id and thold_id in (select thold_data.id as thold_id from thold_data, host where thold_data.host_id = host.id and host.hostname = ‘10.10.10.10’);

来查ip地址是10.10.10.10的thresholds的报警联系人信息。

数据库从oracle迁到mysql

2010年10月3日 没有评论

如今都讲节省成本

所以oralce->mysql的事情估计很多 dba都干过

同样,有这个需求的可能还真不少

首先

oracle的那些存储过程、触发器那些

存储过程mysql5开始就支持

但触发器还不支持

然后数据类型的转换

oracle的varchar2类型可以用mysql中的varchar代替

oracle中的date类型可以用mysql中的timestamp代替

clob可以用test或者是longtext来代替

……

还有oracle中的sequence,需要用mysql中的字段属性auto_increment来实现,当然,这需要对代码做一定的改动

还有,oracle用”||”来连接字符串,而mysql只能用concat函数实现

分类: tips 标签: , ,

写在myapp/META-INF/context.xml里的jdbc连接池设置貌似不管用

2010年9月28日 没有评论

系统debian5.06+tomcat5.5

按照一些网上资料

貌似可以把数据库连接池配置写到自己app(myapp)的META-INF/context.xml里的

但实际上我侧了下,不行

还是非要写到/etc/tomcat5.5/Catalina/localhost/myapp.xml文件里才行

具体原因:未知

在debian5下整合apache2+tomcat5.5+mysql5.0.x

2010年9月26日 没有评论

首先,安装软件

apt-get install tomcat5.5 apache2 sun-java6-jdk tomcat5.5-admin libapache2-mod-jk tomcat5.5-webapps libmysql-java mysql-server

在/etc/apache2/mods-available目录下新建一文件:jk.conf

内容如下:

<IfModule mod_jk.c>

JkWorkersFile /etc/libapache2-mod-jk/workers.properties

JkLogFile /var/log/apache2/mod_jk.log

JkLogLevel error

</IfModule>

重要的是第二句

然后在/etc/apache2/sites-available目录下新建一文件或者是直接编辑default文件

加一个虚机(VirtualHost)

在虚机的配置里加上

JKMount /*.jsp ajp13_worker

最后再

a2enmod jk

启用mod_jk

如果前面在/etc/apache2/sites-available目录下是新建的文件而不是直接编辑的default文件

那么假设新建的文件叫test

那么还要

a2ensite test

最后,再重启apache

/etc/init.d/apache2 restart

tomcat装完后也需要做肩带的设置改动

vim /etc/tomcat5.5/tomcat-users.xml

保证里面有这四行

<role rolename=”manager”/>
<role rolename=”tomcat”/>
<role rolename=”admin”/>
<user username=”admin_account” password=”password_of_admin_account” roles=”tomcat,admin,manager”/>

这里其实也就是要有三个role:manager、admin和tomcat

然后还要有一个用户,有这三个role的权限

这里这个用户是admin_account(密码是password_of_admin_account)

再重启tomcat

/etc/init.d/tomcat5.5 restart

这就做完了

但为了稍稍完美一点

我们多做点工作

1,修改一下tomcat缺省管理端口8180到别的端口;

2,绑定应用端口8009到localhost

这两个工作都只需要改动一个文件搞定

vim /etc/tomcat5.5/server.xml

把port=”8180″改成别的端口号,例如port=”8888″

在port=”8009″后面添加 address=”127.0.0.1″

就像这样:

<Connector port=”8009″ address=”127.0.0.1″

然后再重启下tomcat

/etc/init.d/tomcat5.5 restart

基本就这些了

建议将tomcat的安全性设置搞掉,否则可能会出n多的问题

方法简单

echo “TOMCAT5_SECURITY=no” >> /etc/default/tomcat5.5

http://ip:8888可以访问tomcat的web页面来管理tomcat

http://ip/*.jsp都会丢给tomcat处理

注意: jsp程序要放到appbase下的ROOT目录下。

分类: tips 标签: , , ,

cacti中新加几台机器,定制其联系人的sql语句

2010年5月5日 没有评论

因为这几台机器的联系人是个新人(cacti的库里没有)
按照在个性化定制cacti中thold插件的报警邮件的收件人里讲到的蠢办法
将其先加到cacti系统的用户组里,设置其不能登录
mysql
输入命令”mysql”进入交互式模式
系统出现提示符“mysql>”

mysql>use cacti

使用cacti所用的数据库”cacti”

mysql>SELECT plugin_thold_contacts.id AS contact_id, plugin_thold_contacts.data AS contact_email, user_auth.username, user_auth.full_name FROM plugin_thold_contacts, user_auth WHERE plugin_thold_contacts.user_id = user_auth.id;

从以上查出来的结果里确认下这几台机器的联系人的contact_id

mysql>SELECT id AS host_id FROM host WHERE host.hostname = ‘10.10.10.10’;

查出新加机器的host_id,这里假设新加机器的hostname是”10.10.10.10″

mysql>UPDATE thold_data SET template_enabled = ‘off’ WHERE host_id = ’10’;

将这台新加机器”10.10.10.10″的template_enabled设置成’off’,这里假设”10.10.10.10″的host_id是10

mysql>SELECT concat(“INSERT INTO plugin_thold_threshold_contact (thold_id, contact_id) VALUES (“, thold_data.id, “, 5);”) FROM thold_data, host WHERE thold_data.host_id = host.id and host.hostname = ‘10.10.10.10’;

上面生成插入到表plugin_thold_threshold_contact的SQL语句
上面的数字”5″是指前面查出来的联系人的contact_id,这里假设是5
最后再把上面输出的SQL语句执行一下
OK了

infobright学习

2010年2月18日 没有评论

infobright是开源的基于mysql的数据仓库(data warehouse)
商业版叫IEE(InfoBright Enterprise Edition)
还有个免费的社区版,叫ICE(InfoBright Community Edition)
infobright的特点:

  1. 是列存储的(一般数据库都是行存储的)
  2. 拥有非常高的压缩率
  3. 大量数据的检索非常快

同时
社区版的infobright不支持更新数据的操作
反之,商业版的支持
这样的话
感觉社区版的infobright就非常适合用来存储备份log了
试想啊
谁会要去更新备份的log呢?
而且:
高压缩比正好节省空间;
大量数据的高速检索正好用来做日志分析

赞一个:
infobright简直就是为了日志备份而生的!

分类: Misc 标签: , , ,