mysql多實例安裝

 

1.MySQL多實例介紹

1.1.什麼是MySQL多實例

MySQL多實例就是在一臺機器上開啓多個不一樣的服務端口(如:3306,3307),運行多個MySQL服務進程,經過不一樣的socket監聽不一樣的服務端口來提供各自的服務:;mysql

1.2.MySQL多實例的特色有如下幾點

1:有效利用服務器資源,當單個服務器資源有剩餘時,能夠充分利用剩餘的資源提供更多的服務。linux

2:節約服務器資源c++

3:資源互相搶佔問題,當某個服務實例服務併發很高時或者開啓慢查詢時,會消耗更多的內存、CPU、磁盤IO資源,致使服務器上的其餘實例提供服務的質量降低;web

1.3.部署mysql多實例的兩種方式

第一種是使用多個配置文件啓動不一樣的進程來實現多實例,這種方式的優點邏輯簡單,配置簡單,缺點是管理起來不太方便;sql

第二種是經過官方自帶的mysqld_multi使用單獨的配置文件來實現多實例,這種方式定製每一個實例的配置不太方面,優勢是管理起來很方便,集中管理;shell

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/mysqlsocket

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目錄

相關文章
相關標籤/搜索