1. 程式人生 > >linux下mysql多實例安裝(轉)

linux下mysql多實例安裝(轉)

ont 數據庫 fill 行修改 安裝部署 file 常見 soc -s

轉自: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數據庫 [[email protected] ~]# cd /data/mysql/mysql_3306/data [[email protected] data]# ls auto.cnf ibdata1 ib_logfile0 ib_logfile1 mysql mysql.pid performance_schema test 查看3307數據庫 [[email protected] ~]# cd /data/mysql/mysql_3307/data [[email protected] 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.啟動全部實例 [[email protected] ~]# /usr/local/mysql/bin/mysqld_multi start [[email protected] ~]# /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 [email protected]‘localhost‘=password(‘123456‘); flush privileges; 下次登錄: [[email protected] ~]# mysql -S /tmp/mysql_3306.sock -p Enter password: 2.17.新建用戶及授權 一般新建數據庫都需要新增一個用戶,用於程序連接,這類用戶只需要insert、update、delete、select權限。 新增一個用戶,並授權如下: grant select,delete,update,insert on *.* to [email protected]‘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:初始化數據庫報錯 報錯現象: [email protected] 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多實例安裝(轉)