Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1157609
  • 博文数量: 150
  • 博客积分: 2739
  • 博客等级: 少校
  • 技术积分: 2392
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-07 12:28
文章分类

全部博文(150)

文章存档

2015年(2)

2014年(16)

2013年(10)

2012年(58)

2011年(64)

分类: Mysql/postgreSQL

2012-02-01 10:57:44

        一台服务器上同时启动多个实例数据库,在做项目的时候有时候客户让这么做。不过,总的来说同台服务器上启动多少实例数据库并不是很多公司都这样的做的。下面就是把mysql,postgreSQL多实例数据库的安装方法写下来:
 一、mysql多实例数据库安装,这类安装有两种:一种是更改my.cnf文件多增加个端口和配置信息;另一种是编译安装两边然后启动,至于使用哪种主要有个人喜好以及是否方便配置调整决定的。下面的安装都是通过编辑N次来配置的,也是我常用的方法(方便,快速)
 1、下载mysql,到官网上直接下载二进制文件就行了。一下的环境主要在64位系统里面做的。注意:事先安装好开发环境,创建数据存放目录/data和/data2

  1. #tar xvf mysql-5.1.37.tar.gz
  2. #make clean 如果多次编译安装需要将以前的编译信息给清除掉,不然会影响。因为环境或版本问题在编译一些模块时会出现认不出或出错了,建议要么去掉或查查这些问题解决之道
  3. #./configure –-prefix=/usr/local/mysql --with-tcp-port=3306 --with-unix-socket=/tmp/mysql.sock1 –-with-charset=utf8 --with-extra-charsets=gb2312,gbk --localstatedir=/data/-with-mysqld-ldflags=-all-static --enable-assembler –-enable-thread-safe-client –with-innodb –-with-partition –-with-named-curses-libs=/usr/lib64/libncursesw.so.5
  4. #make
  5. #makeinstall
2、再次编译安装
  1. #make clean
  2. #./configure –-prefix=/usr/local/mysql2 –-with-tcp-port=3307 –-with-unix-socket=/tmp/mysql.sock2 –-with-charset=utf8 –with-extra-charsets=gb2312,gbk –-localstatedir=/data2/-with-mysqld-ldflags=-all-static --enable-assembler –-enable-thread-safe-client –-with-innodb –-with-partition –-with-named-curses-libs=/usr/lib64/libncursesw.so.5
  3. #make
  4. #make install
      特别说明一下:如果你配置出现以下情时,莫要继续往下走。你应该看看是不是支持或是不是写错了,一定要仔细。比如:有些版本用--with-unix-socket即可,而有些不支持这个要用--with-unix-socket-path,总之,环境不一样、版本不一样,需要多注意一下。不然如果出现不持支socket的话,不管你怎么用,会出现一定的错误的。一定要多用./configure --help,多看看!!!!
  1. configure: WARNING: unrecognized options: --with-mysql-ldflags, --with-innodb, --with-partition --with-unix-socket
3、用户的增加和启动
    设置第一个mysql并初始化:
  1. #groupadd mysql
  2. #useradd -g mysql -s /sbin/nologin -M mysql
  3. #chown -R mysql.mysql /data
  4. #chmod 755 /data
  5. #chown -R mysql:mysql /usr/local/mysql
  6. #ch /usr/local/mysql/bin
  7. #./mysql_install_db --user=mysql --datadir=/data
  8. #chown -R root:mysql /usr/local/mysql
     第二个mysql初始化:
  1. #chown -R mysql.mysql /data2
  2. #chmod 755 /data2
  3. #chown -R mysql:mysql /usr/local/mysql2
  4. #ch /usr/local/mysql/bin
  5. #./mysql_install_db --user=mysql --datadir=/data2
  6. #chown -R root:mysql /usr/local/mysql2
4、mysql启动并加入开启启动
  1. 编辑/etc/ld.so.conf文件加入一下内容:
  2. /usr/local/mysql/lib/mysql/lib
  3. /usr/local/mysql2/lib/mysql/lib
  4. 然后执行一下命了:
  5. #ldconfig
  6. 加入开机启动中:
  7. 编辑/etc/rc.d/rc.sysinit文件,加入下列内容:
  8. /usr/local/mysql/bin/mysql_safe --user=mysql &
  9. /usr/local/mysql2/bin/mysql_safe --user=mysql &

启动mysql:
  /usr/local/mysql/bin/mysql_safe --user=mysql &
  /usr/local/mysql2/bin/mysql_safe --user=myssql &

检查是否启动:
   #netstat -ntlp 是否有3306 和3307端口
   #ps -ef|grep mysql 是否有进程

 二、另一种编译安装配置方法:

       具体是编译两个mysql(或编译一个然后再将其拷贝成另一个,改改路径)。我这里编译了两个,在启动的时候可以在每个mysql配置文件中写一个配置文件并命名为my.cnf和my2.cnf,可以将编译文件中的my-large.cnf复制在各个目录中,在里面加入sock、pid、端口、数据储存路径、server-id(这几个是必须有而且是不一样的。之后就是启动了,可以用mysqld_safe --default-file=path/file_name

三、mysql的另一种多实例配置方法:

         本来不想写的,但是由于个人做存档记录或等等其他原因觉得还是添加上不错。下面是通过更改配置文件my.cnf文件来实现多实例启动的,当然这文件你也可以随便放在任何位置,但是再启动是一定要指定你的位置。我记得数据库启动时找cnf文件,现在家目录然后/etc/下。好了,下面是配置内容:

参考内容:http://www.yesky.com/imagesnew/software/mysql/manual_Installing.html

不管是yum源安装还是通过编译安装都是可以的。

1、初始化数据:

  1. #mkdir -pv /{data,data2}
  2. #chown -R mysql.mysql /{data,data2}
  3. #chmod -R 755 /{data,data2}
  4. #mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data
  5. #mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data2
  6. 说明:如果是编译安装的话--basedir指定目录位置是编译安装数据库的位置,如果是yum源或rpm安装的话只需--basedir=/usr路径即可

 2、编译安装需要将my.xx.cnf文件复制到/etc/my.cnf或者自己写个文件,我是在/etc/my.cnf文件中写的。加入以下内容:

  1. [client]
  2. #password = your_password
  3. port = 3306
  4. socket = /tmp/mysql.sock

  5. # Here follows entries for some specific programs

  6. # The MySQL server
  7. [mysqld1001]
  8. user = mysql
  9. port = 3306
  10. socket = /tmp/mysql.sock
  11. pid-file = /tmp/mysql1.pid
  12. basedir = /usr
  13. skip-locking
  14. key_buffer = 16M
  15. max_allowed_packet = 1M
  16. table_cache = 64
  17. sort_buffer_size = 512K
  18. net_buffer_length = 8K
  19. read_buffer_size = 256K
  20. read_rnd_buffer_size = 512K
  21. myisam_sort_buffer_size = 8M
  22. datadir = /data/
  23. server-id = 1


  24. [mysqld1002]        这个一定要写出[mysqld***],其中***代表任何数字
  25. port = 3307         端口号
  26. user = mysql       增加这个是为了防止出现附一错误信息
  27. socket = /tmp/mysql2.sock 
  28. pid-file = /tmp/mysql2.pid 
  29. basedir = /usr   编译安装改成你的数据库目录位置
  30. skip-locking
  31. key_buffer = 16M
  32. max_allowed_packet = 1M
  33. table_cache = 64
  34. sort_buffer_size = 512K
  35. net_buffer_length = 8K
  36. read_buffer_size = 256K
  37. read_rnd_buffer_size = 512K
  38. myisam_sort_buffer_size = 8M
  39. datadir = /data2       数据目录
  40. server-id = 1

       附一:在启动时出现的错误信息:

  1. Starting MySQL servers

  2. 120208 7:31:01 [ERROR] Fatal error: Please read "Security" section of the manual to find out how to run mysqld as
  3.   出现该错误可以再配置文件中加入:user=mysql(具体位置看配置文件内容) 

3、启动

    这个启动方法是通过mysqld_multi命令启动:

  1. #mysqld_multi –-defaults-file=/usr/mysql/my.cnf –-user=mysql start 1001-1002
  2.     如果你是自己写的配置文件一定要加上--defaults-file=path,如果启动某个端口需要指定配置文件my.cnf中[mysqld***]的数字号,这些数字号可以使1001-1003或1001,1002,1003
  3.  查看是否启动了:
  4. #mysqld_multi report或者ps -ef|grep 端口号

4、登陆

       如果用平常的登陆方式可能会出现登陆不上的问题,具体的登陆方式:

  1. #mysql -S /tmp/mysql.sock 登陆3306也是默认登陆
  2. #mysql -S /tmp/mysql2.sock 登陆3307

 

         说明:如果多实例启动不了可以查看日志解决问题。rpm或yum源安装的默认日志位置/usr/share/mysqld_multi.log,编译安装的那就是在安装路径下

三、postgreSQL的安装:

1、下载软件
 本人下载的版本(这个事比较稳定的版本,不要用最新的)

2、增加用户:
  1. #groupadd -g 540 postgres
  2.     #useradd -u 540 -g postgres -d /home/postgres postgres
  3.     #./configure --prefix=/usr/local/pgsql
  4.     #make
  5.     #make install
  6.     #mkdir /usr/local/pgsql/data
  7.     #mkdir /usr/local/pgsql/log
  8.     #chown postgres:postgres -R /usr/local/pgsql/
  9.     #cd /home/postgres/
 3、初始化和启动postgreSQL
  1. #su postgres
  2.     #cd /usr/local/pgsql/bin
  3.     #./initdb -D /usr/local/pgsql/data
  4.  更改配置文件端口:/usr/local/pgsql/data/postgres.conf文件,将5432的端口改一下(或默认)
  5.     #./pg_ctl -D /usr/local/pgsql/data -l /usr/local/pgsql/log/postgres.log start
  6.     #./pg_ctl -D /usr/local/pgsql/data start
  7.     #exit
  8.     #echo "/usr/local/pgsql/lib" >> /etc/ld.so.conf
  9.     #ldconfig
4、再次重复上次的编译(编译前先清除一下以前的编译环境),在第三步是更改端口启动指定正确的路径。
  1.     #make clean
  2.     #./configure --prefix=/usr/local/pgsql
  3.     #make
  4.     #make install
  5.     #mkdir /usr/local/pgsql2/data 更改端口
  6.     #mkdir /usr/local/pgsql2/log
  7.     #chown postgres:postgres -R /usr/local/pgsql2/
  8.     #cd /home/postgres/
  9.     #echo "/usr/local/pgsql/lib" >> /etc/ld.so.conf
  10.     #ldconfig
  11.     #./pg_ctl -D /usr/local/pgsql2/data -l /usr/local/pgsql2/log/postgres2.log start
5、ps -ef|grep postgres   验证是否启动并查看一下端口

6、加到开启启动项

  1. 编辑/etc/rc.d/rc.sysinit加入以下内容:
  2. #./pg_ctl -D /usr/local/pgsql/data -l /usr/local/pgsql/log/postgres.log start
  3. #./pg_ctl -D /usr/local/pgsql2/data -l /usr/local/pgsql2/log/postgres2.log start
   好了,至此配置完成。
阅读(2441) | 评论(4) | 转发(0) |
给主人留下些什么吧!~~

随风飘云2012-02-08 10:13:26

回复 | 举报

随风飘云2012-02-08 10:13:04

随风飘云2012-02-08 10:12:43

随风飘云2012-02-01 11:11:13