2012年(5)
分类: Mysql/postgreSQL
2012-07-18 20:28:40
MYSQL服务器和服务器启动脚本:
o mysqld是MySQL服务器
o mysqld_safe、mysql.server和mysqld_multi是服务器启动脚本
o mysql_install_db初始化数据目录和初始数据库
mysqld_multi可以管理多个帧听不同Unix套接字文件和TCP/IP端口的连接的mysqld 进程。它可以启动或停止服务器,或报告它们的当前状态。
程序寻找my.cnf中的[mysqldN]组(或--config-file选项指定的文件)。N 可以为任何正整数。组号区别各选项组,并用作mysqld_multi的参数来指定想要启动、停止哪个服务器或获取哪个服务器的状态报告。这些组中的选项与将用来启动mysqld的[mysqld]组中的相同。
2.配置说明[mysqld_multi]
mysqld = /usr/bin/mysqld_safe
mysqladmin = /usr/bin/mysqladmin
user = multi_admin
password = qnsoft
增加节点mysqld_multi,配置mysqladmin路径。
使用mysqladmin来停止mysqld服务时,需要指定一个用户,上面配置一个multi_admin用户,每一个实例都需要配置该用户,使用如下命令赋予停止权限以及密码:
GRANT SHUTDOWN ON *.* TO multi_admin@10.130.24.237 IDENTIFIED BY 'qnsoft';
如果使用root用户,该配置可忽略。
[mysqld1]
port = 3306
socket = /var/lib/mysql/mysql.sock
skip-locking
key_buffer = 512M
max_allowed_packet = 1M
table_cache = 256
sort_buffer_size = 2M
net_buffer_length = 8K
read_buffer_size = 2M
read_rnd_buffer_size = 4M
myisam_sort_buffer_size = 64M
thread_cache_size = 24
query_cache_size= 64M
default-character-set=gbk
relay-log=/var/lib/mysql/relay-log
datadir=/var/lib/mysql
# Try number of CPU's*2 for thread_concurrency
thread_concurrency = 32
lower_case_table_names=1
default_table_type=INNODB
max_connections=1000
set-variable=long_query_time=5
slow_query_log_file = /var/log/mysql/mysql-slow.log
slow_query_log=1
server-id = 1
。。。
以上是一个实例的配置,启动和停止时使用的序号与[mysqldN]中的数字对应,如上面节点序号是1。实例的配置和平常的配置是一样的,不过要分别指定socket、datadir的路径,指定server-id,与[mysqldN]中的数字对应,指定启动的端口,各实例不能重复,也不能被其他应用占用。
可以配置多个实例,如[mysqld2]、[mysqld3]。
如配置第二个实例[mysqld2],在[mysqld1]下增加[mysqld2]节点:
[mysqld2]
port = 3326
socket = /var/lib/mysql2/mysql.sock
skip-locking
key_buffer = 512M
max_allowed_packet = 1M
table_cache = 256
sort_buffer_size = 2M
net_buffer_length = 8K
read_buffer_size = 2M
read_rnd_buffer_size = 4M
myisam_sort_buffer_size = 64M
thread_cache_size = 24
query_cache_size= 64M
default-character-set=gbk
relay-log=/var/lib/mysql2/relay-log
datadir=/var/lib/mysql2
# Try number of CPU's*2 for thread_concurrency
thread_concurrency = 32
lower_case_table_names=1
default_table_type=INNODB
max_connections=1000
set-variable=long_query_time=5
slow_query_log_file = /var/log/mysql2/mysql-slow.log
slow_query_log=1
server-id = 2
。。。
生成第二个实例需要的文件夹,如上面的/var/lib/mysql2和/var/log/mysql2,并把文件夹的属主改成mysql,然后生成该实例的数据文件,使用3.3节命令,然后启动该实例,生成其余的文件。
这样,第二个实例就配好了。
注意:数据库多实例并不能提高系统性能,相反,多个实例都需要分配内存和占用CPU。
参考配置如下(使用时将后缀改成cnf):
3.常用命令 3.1启动
mysqld_multi start N
注:N为实例序号
3.2停止mysqld_multi stop N --user=root --password=qnsoft
注:N为实例序号,user、password分别为停止的账户和密码,可使用第一章中使用的multi_admin用户
3.3生成数据文件mysql_install_db --user=mysql --datadir=/var/lib/mysql/
datadir为相应实例的数据文件路径
3.4修改密码/usr/bin/mysqladmin -u root -S /var/lib/mysql2/mysql.sock password '123456'
注:-S /var/lib/mysql/mysql.sock为对应实例sock地址
3.5启动和停止数据库
查看是否启动:
mysqld_multi --config-file=/etc/my_multi.cnf report 2,3
启动和停止:
启动 report改为start
停止 report改为stop
3.6登录数据库mysql -hhostaddress –uusername –ppassword –P port
首次登录mysql -u root -S /tmp/mysql2.sock //sock文件位置根据实际调整