当前位置:Gxlcms > 数据库问题 > linux下mysql多实例安装(转)

linux下mysql多实例安装(转)

时间:2021-07-01 10:21:17 帮助过:20人阅读

转自:http://www.cnblogs.com/xuchenliang/p/6843990.html   1.MySQL多实例介绍 1.1.什么是MySQL多实例 MySQL多实例就是在一台机器上开启多个不同的服务端口(如:3306,3307),运行多个MySQL服务进程,通过不同的socket监听不同的服务端口来提供各自的服务:; 1.2.MySQL多实例的特点有以下几点 1:有效利用服务器资源,当单个服务器资源有剩余时,可以充分利用剩余的资源提供更多的服务。 2:节约服务器资源 3:资源互相抢占问题,当某个服务实例服务并发很高时或者开启慢查询时,会消耗更多的内存、CPU、磁盘IO资源,导致服务器上的其他实例提供服务的质量下降; 1.3.部署mysql多实例的两种方式 第一种是使用多个配置文件启动不同的进程来实现多实例,这种方式的优势逻辑简单,配置简单,缺点是管理起来不太方便; 第二种是通过官方自带的mysqld_multi使用单独的配置文件来实现多实例,这种方式定制每个实例的配置不太方面,优点是管理起来很方便,集中管理; 1.4.同一开发环境下安装两个数据库,必须处理以下问题
  • 配置文件安装路径不能相同
  • 数据库目录不能相同
  • 启动脚本不能同名
  • 端口不能相同
  • socket文件的生成路径不能相同
2.Mysql多实例安装部署 2.1.部署环境 Red Hat Enterprise Linux Server release 6.4 2.2.安装mysql软件版本 2.2.1.免编译二进制包 mysql-5.6.21-linux-glibc2.5-x86_64.tar.gz 2.3.解压和迁移 tar -xvf mysql-5.6.21-linux-glibc2.5-x86_64.tar.gz mv mysql-5.6.21-linux-glibc2.5-x86_64 /usr/local/mysql 2.4.关闭iptables 临时关闭:service iptables stop  永久关闭:chkconfig iptables off 2.5.关闭selinux vi /etc/sysconfig/selinux   将SELINUX修改为DISABLED,即SELINUX=DISABLED  2.6.创建mysql用户 groupadd -g 27 mysql useradd -u 27 -g mysql mysql id mysql uid=501(mysql) gid=501(mysql) groups=501(mysql) 2.7.创建相关目录 mkdir -p /data/mysql/ {mysql_3306,mysql_3307} mkdir /data/mysql/mysql_3306/ {data,log,tmp} mkdir /data/mysql/mysql_3307/ {data,log,tmp} 2.8.更改目录权限 chown -R mysql:mysql /data/mysql/  chown -R mysql:mysql /usr/local/mysql/ 2.9. 添加环境变量 echo ‘export PATH=$PATH:/usr/local/mysql/bin‘ >>  /etc/profile  source /etc/profile   2.10.复制my.cnf文件到etc目录 cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf 2.11.修改my.cnf(在一个文件中修改即可) [client]   port=3306   socket=/tmp/mysql.sock     [mysqld_multi]   mysqld = /usr/local/mysql /bin/mysqld_safe   mysqladmin = /usr/local/mysql /bin/mysqladmin   log = /data/mysql/mysqld_multi.log     [mysqld]   user=mysql   basedir = /usr/local/mysql   sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES     [mysqld3306]   mysqld=mysqld   mysqladmin=mysqladmin   datadir=/data/mysql/mysql_3306/data   port=3306   server_id=3306   socket=/tmp/mysql_3306.sock   log-output=file   slow_query_log = 1   long_query_time = 1   slow_query_log_file = /data/mysql/mysql_3306/log/slow.log   log-error = /data/mysql/mysql_3306/log/error.log   binlog_format = mixed   log-bin = /data/mysql/mysql_3306/log/mysql3306_bin       [mysqld3307]   mysqld=mysqld   mysqladmin=mysqladmin   datadir=/data/mysql/mysql_3307/data   port=3307   server_id=3307   socket=/tmp/mysql_3307.sock   log-output=file   slow_query_log = 1   long_query_time = 1   slow_query_log_file = /data/mysql/mysql_3307/log/slow.log   log-error = /data/mysql/mysql_3307/log/error.log   binlog_format = mixed   log-bin = /data/mysql/mysql_3307/log/mysql3307_bin 2.12. 初始化数据库 2.12.1. 初始化3306数据库  /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql/ --datadir=/data/mysql/mysql_3306/data --defaults-file=/etc/my.cnf   2.12.2. 初始化3307数据库  /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql/ --datadir=/data/mysql/mysql_3307/data --defaults-file=/etc/my.cnf   2.12.3. 检查数据库是否初始化成功 出现两个”OK”  技术分享     技术分享         2.12.4. 查看数据库是否初始化成功(2) 查看3306数据库 [root@mysql ~]# cd /data/mysql/mysql_3306/data [root@mysql data]# ls auto.cnf  ibdata1  ib_logfile0  ib_logfile1  mysql  mysql.pid  performance_schema  test   查看3307数据库 [root@mysql ~]# cd /data/mysql/mysql_3307/data [root@mysql data]# ls auto.cnf  ibdata1  ib_logfile0  ib_logfile1  mysql  mysql.pid  performance_schema  test 2.13.设置启动文件 cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql 2.14.mysqld_multi进行多实例管理 启动全部实例:/usr/local/mysql/bin/mysqld_multi start 查看全部实例状态:/usr/local/mysql/bin/mysqld_multi report  启动单个实例:/usr/local/mysql/bin/mysqld_multi start 3306  停止单个实例:/usr/local/mysql/bin/mysqld_multi stop 3306  查看单个实例状态:/usr/local/mysql/bin/mysqld_multi report 3306  2.14.1.启动全部实例 [root@mysql ~]# /usr/local/mysql/bin/mysqld_multi start [root@mysql ~]# /usr/local/mysql/bin/mysqld_multi report Reporting MySQL servers MySQL server from group: mysqld3306 is running MySQL server from group: mysqld3307 is running 2.15.查看启动进程    技术分享   2.16.修改密码 mysql的root用户初始密码是空,所以需要登录mysql进行修改密码,下面以3306为例:  mysql -S /tmp/mysql_3306.sock    set password for root@‘localhost‘=password(‘123456‘);  flush privileges;  下次登录: [root@mysql ~]# mysql -S /tmp/mysql_3306.sock -p Enter password: 2.17.新建用户及授权 一般新建数据库都需要新增一个用户,用于程序连接,这类用户只需要insert、update、delete、select权限。 新增一个用户,并授权如下:  grant select,delete,update,insert on *.* to admin@‘192.168.0.%‘ identified by ‘123456‘;  flush privileges 2.18.外部软件登录数据库  技术分享   2.19.测试成功 技术分享  3.源码安装常见报错信息 1:安装mysql报错 checking for tgetent in -lncurses... no checking for tgetent in -lcurses... no checking for tgetent in -ltermcap... no checking for tgetent in -ltinfo... no checking for termcap functions library... configure: error: No curses/termcap library found 原因: 缺少ncurses安装包 解决方法: yum list|grep ncurses yum -y install ncurses-devel yum install ncurses-devel 2:.../depcomp: line 571: exec: g++: not found make[1]: *** [my_new.o] 错误 127 make[1]: Leaving directory `/home/justme/software/mysql-5.1.30/mysys‘ make: *** [all-recursive] 错误 1 解决方法: yum install gcc-c++ 3:.../include/my_global.h:909: error: redeclaration of C++ built-in type `bool‘ make[2]: *** [my_new.o] Error 1 make[2]: Leaving directory `/home/tools/mysql-5.0.22/mysys‘ make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/home/tools/mysql-5.0.22‘ make: *** [all] Error 2 是因为gcc-c++是在configure之后安装的,此时只需重新configure后再编译make即可。 4:初始化数据库报错 报错现象: root@mysql mysql-6.0.11-alpha]# scripts/mysql_install_db --basedir=/usr/local/mysql/ --user=mysql Installing MySQL system tables... ERROR: 1136  Column count doesn‘t match value count at row 1 150414  7:15:56 [ERROR] Aborting 150414  7:15:56 [Warning] Forcing shutdown of 1 plugins 150414  7:15:56 [Note] /usr/local/mysql//libexec/mysqld: Shutdown complete Installation of system tables failed!  Examine the logs in /var/lib/mysql for more information. You can try to start the mysqld daemon with: shell> /usr/local/mysql//libexec/mysqld --skip-grant & and use the command line tool /usr/local/mysql//bin/mysql to connect to the mysql database and look at the grant tables: shell> /usr/local/mysql//bin/mysql -u root mysql mysql> show tables Try ‘mysqld --help‘ if you have problems with paths.  Using --log gives you a log in /var/lib/mysql that may be helpful. The latest information about MySQL is available on the web at http://www.mysql.com/.  Please consult the MySQL manual section ‘Problems running mysql_install_db‘, and the manual section that describes problems on your OS.  Another information source are the MySQL email archives available at http://lists.mysql.com/. Please check all of the above before mailing us!  And remember, if you do mail us, you MUST use the /usr/local/mysql//scripts/mysqlbug script! 原因: 原有安装的mysql信息没有删除干净 解决方法: 删除/var/lib/mysql目录

linux下mysql多实例安装(转)

标签:set   管理   size   [1]   software   user   describes   实现   0.11   

人气教程排行