MySQL 使用mysqld_multi部署單機多例項詳細過程
序言:多例項?Why?
隨著硬體層面的發展,linux系統多核已經是普通趨勢,而mysql是單程序多執行緒,所以先天上對多程序的利用不是很高,雖然5.6版本已經在這方面改進很多,但是也沒有達到100%,所以為了充分的利用系統資源,mysql有自己的補充,那就是可以部署多例項,一個例項一個埠。
1,準備好mysql環境
1.1,準備好安裝環境
groupaddmysql
useradd-g mysql mysql
autoreconf--force --install
libtoolize--automake --force
automake--force --add-missing
yuminstall -y libtoolize
yuminstall cmake -y
yuminstall gcc gcc-c++ -y
yuminstall -y ncurses-devel.x86_64
yuminstall -y cmake.x86_64
yuminstall -y libaio.x86_64
yuminstall -y bison.x86_64
yuminstall -y gcc-c++.x86_64
yuminstall make -y
1.2,建立mysql編譯根目錄
mkdir-p /usr/local/mysql
1.3,解壓縮原始碼包
tar -xvf mysql-5.6.12.tar.gz
cd mysql-5.6.12
1.4,編譯安裝
timecmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-DMYSQL_DATADIR=/home/data/mysql/data -DWITH_INNOBASE_STORAGE_ENGINE=1-DMYSQL_UNIX_ADDR==/usr/local/mysql/mysql.sock -DMYSQL_USER=mysql-DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci
由於time make耗時比較長,所以事先已經安裝好
timemake
timemake install
2,準備第一個例項3307
2.1建立好目錄
mkdir /usr/local/mysql3307
chown -R mysql.mysql /usr/local/mysql3307/
mkdir -p /home/data/mysql3307/data
chown -R mysql.mysql /home/data/mysql3307
chown -R mysql.mysql/home/data/mysql3307/data
mkdir -p /home/data/mysql3307/binlog
chown -R mysql.mysql /home/data/mysql3307
mkdir -p /home/data/mysql3307/relay_log/
chown -R mysql.mysql /home/data/mysql3307/
2.2 配置檔案
[mysqld_multi]
mysqld = /usr/local/mysql/bin/mysqld_safe
mysqladmin =/usr/local/mysql/bin/mysqladmin
log =/home/mysql/mydata/log/mysqld_multi.log
[mysqld1]
socket = /usr/local/mysql3307/mysql.sock
port = 3307
pid-file = /usr/local/mysql3307/mysqld.pid
datadir = /home/data/mysql3307/data
log_bin=/home/data/mysql3307/binlog
server-id = 1230
relay_log =/home/data/mysql3307/relay_log/mysql-relay-bin
log_slave_updates = 1
read_only = 0
innodb_buffer_pool_size = 128M
innodb_flush_log_at_trx_commit = 0
2.3 初始化資料庫
/usr/local/mysql/scripts/mysql_install_db--user=mysql --basedir=/usr/local/mysql --datadir=/home/data/mysql3307/data
----------------------------------------------------------------------------------------------------------------
<版權所有,文章允許轉載,但必須以連結方式註明源地址,否則追究法律責任!>原部落格地址:原作者:黃杉(mchdba)
----------------------------------------------------------------------------------------------------------------
3,準備第二個例項3308
3.1 建立好目錄
mkdir /usr/local/mysql3308
chown -R mysql.mysql /usr/local/mysql3308/
mkdir -p /home/data/mysql3308/data
chown -R mysql.mysql /home/data/mysql3308
chown -R mysql.mysql/home/data/mysql3308/data
mkdir -p /home/data/mysql3308/binlog
chown -R mysql.mysql /home/data/mysql3308
mkdir -p /home/data/mysql3308/relay_log/
chown -R mysql.mysql /home/data/mysql3308/
3.2 配置檔案
[mysqld2]
socket = /usr/local/mysql3308/mysql.sock
port = 3308
pid-file = /usr/local/mysql3308/mysqld.pid
datadir = /home/data/mysql3308/data
log_bin=/home/data/mysql3308/binlog
server-id = 2230
relay_log =/home/data/mysql3308/relay_log/mysql-relay-bin
log_slave_updates = 1
read_only = 0
innodb_buffer_pool_size = 128M
innodb_flush_log_at_trx_commit = 0
3.3 初始化資料庫
/usr/local/mysql/scripts/mysql_install_db--user=mysql --basedir=/usr/local/mysql --datadir=/home/data/mysql3308/data
4,準備第三個例項3309
4.1 建立好目錄
mkdir /usr/local/mysql3309
chown -R mysql.mysql /usr/local/mysql3309/
mkdir -p /home/data/mysql3309/data
chown -R mysql.mysql /home/data/mysql3309
chown -R mysql.mysql/home/data/mysql3309/data
mkdir -p /home/data/mysql3309/binlog
chown -R mysql.mysql /home/data/mysql3309
mkdir -p /home/data/mysql3309/relay_log/
chown -R mysql.mysql /home/data/mysql3309/
4.2 配置檔案
[mysqld3]
socket = /usr/local/mysql3309/mysql.sock
port = 3309
pid-file = /usr/local/mysql3309/mysqld.pid
datadir = /home/data/mysql3309/data
log_bin=/home/data/mysql3309/binlog
server-id = 3230
relay_log = /home/data/mysql3309/relay_log/mysql-relay-bin
log_slave_updates = 1
read_only = 0
innodb_buffer_pool_size = 128M
innodb_flush_log_at_trx_commit = 0
4.3 初始化資料庫
/usr/local/mysql/scripts/mysql_install_db--user=mysql --basedir=/usr/local/mysql --datadir=/home/data/mysql3309/data
初始化資訊如下所示:
[[email protected] ~]$ /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/home/data/mysql3309/data
WARNING: Could not write to config file /usr/local/mysql/my-new.cnf: 許可權不夠
Installing MySQL system tables...2015-05-14 09:31:20 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2015-05-14 09:31:20 12307 [Warning] Buffered warning: Changed limits: max_open_files: 1024 (requested 5000)
2015-05-14 09:31:20 12307 [Warning] Buffered warning: Changed limits: table_cache: 431 (requested 2000)
2015-05-14 09:31:20 12307 [Note] InnoDB: The InnoDB memory heap is disabled
2015-05-14 09:31:20 12307 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2015-05-14 09:31:20 12307 [Note] InnoDB: Compressed tables use zlib 1.2.3
2015-05-14 09:31:20 12307 [Note] InnoDB: Using CPU crc32 instructions
2015-05-14 09:31:20 12307 [Note] InnoDB: Initializing buffer pool, size = 128.0M
2015-05-14 09:31:20 12307 [Note] InnoDB: Completed initialization of buffer pool
2015-05-14 09:31:20 12307 [Note] InnoDB: The first specified data file ./ibdata1 did not exist: a new database to be created!
2015-05-14 09:31:20 12307 [Note] InnoDB: Setting file ./ibdata1 size to 12 MB
2015-05-14 09:31:20 12307 [Note] InnoDB: Database physically writes the file full: wait...
2015-05-14 09:31:20 12307 [Note] InnoDB: Setting log file ./ib_logfile101 size to 48 MB
2015-05-14 09:31:20 12307 [Note] InnoDB: Setting log file ./ib_logfile1 size to 48 MB
2015-05-14 09:31:21 12307 [Note] InnoDB: Renaming log file ./ib_logfile101 to ./ib_logfile0
2015-05-14 09:31:21 12307 [Warning] InnoDB: New log files created, LSN=45781
2015-05-14 09:31:21 12307 [Note] InnoDB: Doublewrite buffer not found: creating new
2015-05-14 09:31:21 12307 [Note] InnoDB: Doublewrite buffer created
2015-05-14 09:31:21 12307 [Note] InnoDB: 128 rollback segment(s) are active.
2015-05-14 09:31:21 12307 [Warning] InnoDB: Creating foreign key constraint system tables.
2015-05-14 09:31:21 12307 [Note] InnoDB: Foreign key constraint system tables created
2015-05-14 09:31:21 12307 [Note] InnoDB: Creating tablespace and datafile system tables.
2015-05-14 09:31:21 12307 [Note] InnoDB: Tablespace and datafile system tables created.
2015-05-14 09:31:21 12307 [Note] InnoDB: Waiting for purge to start
2015-05-14 09:31:21 12307 [Note] InnoDB: 5.6.12 started; log sequence number 0
2015-05-14 09:31:21 12307 [Note] Binlog end
2015-05-14 09:31:21 12307 [Note] InnoDB: FTS optimize thread exiting.
2015-05-14 09:31:21 12307 [Note] InnoDB: Starting shutdown...
2015-05-14 09:31:22 12307 [Note] InnoDB: Shutdown completed; log sequence number 1625977
OK
Filling help tables...2015-05-14 09:31:22 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2015-05-14 09:31:22 12332 [Warning] Buffered warning: Changed limits: max_open_files: 1024 (requested 5000)
2015-05-14 09:31:22 12332 [Warning] Buffered warning: Changed limits: table_cache: 431 (requested 2000)
2015-05-14 09:31:22 12332 [Note] InnoDB: The InnoDB memory heap is disabled
2015-05-14 09:31:22 12332 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2015-05-14 09:31:22 12332 [Note] InnoDB: Compressed tables use zlib 1.2.3
2015-05-14 09:31:22 12332 [Note] InnoDB: Using CPU crc32 instructions
2015-05-14 09:31:22 12332 [Note] InnoDB: Initializing buffer pool, size = 128.0M
2015-05-14 09:31:22 12332 [Note] InnoDB: Completed initialization of buffer pool
2015-05-14 09:31:22 12332 [Note] InnoDB: Highest supported file format is Barracuda.
2015-05-14 09:31:22 12332 [Note] InnoDB: 128 rollback segment(s) are active.
2015-05-14 09:31:22 12332 [Note] InnoDB: Waiting for purge to start
2015-05-14 09:31:22 12332 [Note] InnoDB: 5.6.12 started; log sequence number 1625977
2015-05-14 09:31:22 12332 [Note] Binlog end
2015-05-14 09:31:22 12332 [Note] InnoDB: FTS optimize thread exiting.
2015-05-14 09:31:22 12332 [Note] InnoDB: Starting shutdown...
2015-05-14 09:31:24 12332 [Note] InnoDB: Shutdown completed; log sequence number 1625987
OK
To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system
PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:
/usr/local/mysql/bin/mysqladmin -u root password 'new-password'
/usr/local/mysql/bin/mysqladmin -u root -h data02 password 'new-password'
Alternatively you can run:
/usr/local/mysql/bin/mysql_secure_installation
which will also give you the option of removing the test
databases and anonymous user created by default. This is
strongly recommended for production servers.
See the manual for more instructions.
You can start the MySQL daemon with:
cd . ; /usr/local/mysql/bin/mysqld_safe &
You can test the MySQL daemon with mysql-test-run.pl
cd mysql-test ; perl mysql-test-run.pl
Please report any problems with the ./bin/mysqlbug script!
The latest information about MySQL is available on the web at
http://www.mysql.com
Support MySQL by buying support/licenses at http://shop.mysql.com
WARNING: Could not copy config file template /usr/local/mysql/support-files/my-default.cnf to
/usr/local/mysql/my-new.cnf, may not have access rights to do so.
You may want to copy the file manually, or create your own,
it will then be used by default by the server when you start it.
WARNING: Default config file /etc/my.cnf exists on the system
This file will be read by default by the MySQL server
If you do not want to use this, either remove it, or use the
--defaults-file argument to mysqld_safe when starting the server
5,啟動多例項資料庫
mkdir -p /home/mysql/data/log
[[email protected] data]$ mysqld_multi--defaults-extra-file=/etc/my.cnf start 1,2,3
[[email protected] data]$
後臺日誌資訊:
Starting MySQL servers
150514 09:36:14 mysqld_safe Logging to'/home/data/mysql3309/data/data02.err'.
150514 09:36:15 mysqld_safe Logging to '/home/data/mysql3308/data/data02.err'.
150514 09:36:15 mysqld_safe Logging to'/home/data/mysql3307/data/data02.err'.
150514 09:36:15 mysqld_safe Starting mysqlddaemon with databases from /home/data/mysql3308/data
150514 09:36:15 mysqld_safe Starting mysqlddaemon with databases from /home/data/mysql3307/data
150514 09:36:15 mysqld_safe Starting mysqlddaemon with databases from /home/data/mysql3309/data
6,檢視多例項
[[email protected] ~]$ mysqld_multi--defaults-extra-file=/etc/my.cnf report
Reporting MySQL servers
MySQL server from group: mysqld1 is running
MySQL server from group: mysqld2 is running
MySQL server from group: mysqld3 is running
[[email protected] ~]$
後臺日誌資訊:
Reporting MySQL servers
MySQL server from group: mysqld1 is running
MySQL server from group: mysqld2 is running
MySQL server from group: mysqld3 is running
7,停止多例項
mysqld_multi--defaults-extra-file=/etc/my.cnf stop 1,2,3
後臺日誌資訊:
Stopping MySQL servers
150514 09:35:43 mysqld_safe mysqld from pidfile /usr/local/mysql3309/mysqld.pid ended
150514 09:35:43 mysqld_safe mysqld from pidfile /usr/local/mysql3307/mysqld.pid ended
150514 09:35:43 mysqld_safe mysqld from pidfile /usr/local/mysql3308/mysqld.pid ended
8,各自登入mysql例項
需要指定啟動的socket就可以登入到各自的mysql例項,如下所示:
[[email protected] ~]$ mysql --socket=/usr/local/mysql3308/mysql.sock
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.6.12-log Sourcedistribution
Copyright (c) 2000, 2013, Oracle and/or itsaffiliates. All rights reserved.
Oracle is a registered trademark of OracleCorporation and/or its
affiliates. Other names may be trademarksof their respective
owners.
Type 'help;' or '\h' for help. Type '\c' toclear the current input statement.
mysql> select @@port;
+--------+
| @@port |
+--------+
| 3308 |
+--------+
1 row in set (0.00 sec)
mysql>
mysql> create database d3308;
Query OK, 1 row affected (0.04 sec)
mysql>
9,可以在多埠上搭建主從、主主服務
9.1,在3307例項建立賬號
複製賬號
GRANTREPLICATION SLAVE,RELOAD,SUPER ON *.*TO [email protected]'192.168.52.%' IDENTIFIED BY'repl_1234';
備份賬號
GRANTRELOAD, SUPER, LOCK TABLES, REPLICATION CLIENT, CREATE TABLESPACE ON *.* TO'backup'@'192.168.%' IDENTIFIED BY '123456';
GRANTALL PRIVILEGES ON `mysql`.* TO 'backup'@'192.168.%';
GRANTEVENT ON *.* TO 'backup'@'192.168.%';
9.2,將資料從3307例項同步到3308埠
備份:
/usr/local/mysql/bin/mysqldump-ubackup --password=123456 --host=192.168.52.138--socket=/usr/local/mysql3307/mysql.sock --port=3307 -R -E --skip-opt--single-transaction --flush-logs --master-data=2 --add-drop-table--create-option --quick --extended-insert=false --set-charset --disable-keys-A > /tmp/alldbfullbackup.sql
匯入:
/usr/local/mysql/bin/mysql-uroot -p --socket=/usr/local/mysql3308/mysql.sock --port=3308</tmp/alldbfullbackup.sql
9.3,在3308例項上建立複製連結
找到複製點
more/tmp/alldbfullbackup.sql
開始建立複製連結
CHANGE MASTER TOMASTER_HOST='192.168.52.138',MASTER_PORT=3307,
MASTER_USER='repl',
MASTER_PASSWORD='repl_1234',
MASTER_LOG_FILE='mysql-bin.000006',
MASTER_LOG_POS=120;
開啟複製
startslave;
檢視複製狀態
showslave status\G;
mysql> show slave status\G
*************************** 1. row***************************
Slave_IO_State: Waiting formaster to send event
Master_Host: 192.168.52.138
Master_User: repl
Master_Port: 3307
Connect_Retry: 60
Master_Log_File: mysql-bin.000011
Read_Master_Log_Pos: 120
Relay_Log_File:mysql-relay-bin.000005
Relay_Log_Pos: 283
Relay_Master_Log_File: mysql-bin.000011
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
……
Seconds_Behind_Master: 0
10,管理單個例項
停止例項2:
[[email protected] ~]# mysqld_multi--defaults-extra-file=/etc/my.cnf stop 2
[[email protected] ~]#
後臺日誌資訊:
Stopping MySQL servers
150517 06:53:43 mysqld_safe mysqld from pidfile /usr/local/mysql3308/mysqld.pid ended
mysqld_multi log file version 2.16; run: 日 5月 17 06:53:48 2015
啟動例項2:
[[email protected] ~]# mysqld_multi--defaults-extra-file=/etc/my.cnf start 2
[[email protected] ~]#
後臺日誌資訊:
Starting MySQL servers
150517 06:53:48 mysqld_safe Logging to'/home/data/mysql3308/data/data03.err'.
150517 06:53:48 mysqld_safe Starting mysqlddaemon with databases from /home/data/mysql3308/data
11,如何使用多例項
由於多例項中,各個例項的資源都是不share的,所以要合理分配好各個例項的記憶體、磁碟等資源,避免out of memery或則 full disk的情況出現。
相關推薦
MySQL 使用mysqld_multi部署單機多例項詳細過程
序言:多例項?Why?隨著硬體層面的發展,linux系統多核已經是普通趨勢,而mysql是單程序多執行緒,所以先天上對多程序的利用不是很高,雖然5.6版本已經在這方面改進很多,但是也沒有達到100%,所以為了充分的利用系統資源,mysql有自己的補充,那就是可以部署多例項,一
基於mysqld_multi實現MySQL 5.7.24多例項多程序配置
MySQL多例項的原理 mysql多例項,簡單理解就是在一臺伺服器上,mysql服務開啟多個不同的埠(如3306、3307、3308)執行多個服務程序。這些 mysql 服務程序通過不同的 socket來監聽不同的資料埠,進而互不干涉的提供各自的服務。 在同一臺伺服器上,mysql 多
單機多例項tomcat 部署
簡介: 目錄結構 /bin - 啟動,停止及其它指令碼目錄/conf - 配置檔案目錄,容器的主配置檔案為server.xml/logs - 預設日誌目錄/webapps - 網站應用目錄 變數引用 CATALINA_HOME: Tomcat 安裝的根目錄,例如 /home/tomcat/apach
zookeeper單機多例項和分散式部署的步驟
介紹zookeeper單機多例項部署(實驗性質)以及生產環境的分散式部署 1. 準備工作: 1)需要linux環境,推薦用ubuntu的系統。學習的話使用oracle的virtual box安裝虛擬機器,網上找下安裝文件就可以裝好了,而生產環境一般都會裝好的。ub
Mysql單機多例項及主從備份設定
準備Slave資料庫 新建目錄,如:mysql3307,做為Slave資料庫的目錄。 複製Master Mysql目錄下的share目錄到mysql3307下。 在mysql3307目錄下建立data目錄,並複製Master Mysql的data下的mysq
mysql 5.7 for win 7 主從搭建 -單機多例項
mysql 5.7 for win 7 單機版安裝可以參考 http://blog.csdn.net/wangzizhzxy/article/details/78203858 單機多例項安裝和單機單例項稍有不同 ###############################
Tomcat 安裝及其單機多例項部署
Tomcat 是最流行的 Java 應用伺服器(2017年市場份額64%)。本文以最新的 Apache Tomcat 7.0.90(Tomcat7 的最新版本) 為例,總結了 CentOS 下 Tomcat 伺服器的安裝和必要配置,並演示了 Tomcat 單機多
Mysql DBA 高級運維學習筆記-mysql雙主及多主同步過程
配置 ble use key 間隔 into base fse char 1.Mysql雙主及多主同步實戰,互為主從 使用主主前提: a.表的主鍵自增(M庫id1,3,5;M庫id 2,4,6) 準備:兩臺機器,這裏用多實例來講解 第一臺: Ip:192.168.1.115
mysql -> 啟動&多例項_03
常用的連線方式: 套接字: mysql -uroot -p123 -S /application/mysql/tmp/mysql.sock Tcp/Ip: mysql -uroot -p123 -h 10.0.0.52 -P 3306 資料庫的啟動流程 mysqld 檔案屬性 [[em
MySQL 5.7.19多例項安裝(二進位制安裝模式)
MySQL可以通過在一臺伺服器上,部署執行多個MySQL服務程序,通過不同的socket監聽不同的服務埠來提供各自的服務。各個例項之間是相互獨立的,每個例項的datadir, port, socket, pid都是不同的 作業系統 redhat 7.4 資料庫
linux作業系統安裝5.7.17MySQL以及單機多例項
1、下載安裝包mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz 2、tar xvf mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz -C /usr/local -------解壓 3、cd /usr/local -----
我對hyperledger fabric1.1.0的執著(四):部署單機多節點網路
1、生成證書檔案 (1.1)環境清理 接上一篇,已跑通e2e_cli案例,此處需要執行以下命令進行環境清理: cd /opt/gopath/src/github.com/hyperledger/fabric/examples/e2e_cli bash network_
Docker 快速驗證 tomcat 單機多例項方案
概述 主要講的是解決問題的思路。當然也附帶了儘可能詳細的步驟,感興趣的童鞋可以一步一步跟著來實踐一把。因為運維職業的緣故,基本上是把事故當故事來寫了,希望能夠喜歡。 緣起 至少10年了,沒在一線玩過 Tomcat 了,這次客戶現場就來了一場遭遇戰。雖然客戶說了他來搭建,但是專案進度不等人,還是自己動手吧
RabbitMQ單機多例項配置
由於某些因素的限制,有時候你不得不在一臺機器上去搭建一個rabbitmq叢集,當然這種叢集只適合自己玩玩,驗證下結論,這個有點類似zookeeper的單機版。真實生成環境還是要配成多機叢集的。有關怎麼配置多機叢集的可以參考其他的資料,這裡主要論述如何在單機中配置
tomcat單機多例項
1、前言 首先要回答一個問題,為什麼要用單機多例項? 在不宕機的情況下,webapps裡面存在多個專案,可能由於其中一個專案過度使用記憶體或者其他不確定的因素使得tomcat掛了,那麼同一tomcat下的專案也會一同掛了;而使用不同的tomcat,同一臺伺服
zookeeper的單機多例項配置和分散式配置
單機多例項配置: #生成配置檔案,配置檔名隨便,這裡是zoo.cfg cp /data/apache/zookeeper/conf/zoo_sample.cfg /data/apache/zookeeper/conf/zoo.cfg vi /data/apache/zo
nginx tomcat 單機多例項多網站
參考文章 http://www.ttlsa.com/tomcat/config-multi-tomcat-instance/ 修改conf/server.xml <Server port="8001" shutdown="SHUTDOWN"> &l
mongodb單機多例項主從配置
1、需要啟動兩個mongodb例項,首先關閉mongodb預設開機啟動.service mongodb stop chkconfig mongodb off2、複製 /etc/mongod.conf cp /etc/mongod.conf /etc/mongod_slave.
Centos 6.10 mysql 5.7.22多例項安裝
依賴 yum -y install gcc gcc-c++ glibc numactl perl-Time-HiRes per-devel libaio libstdc++ libstdc ncurses-libs wget unzip ntp 下載mysql wget h
Tomcat 的單機多例項配置
有時候需要在一個伺服器上部署多個Tomcat,通過不同的埠進行區分,比如,反向代理。但是不想簡單的通過複製Tomcat來實現,這樣既不方便以後的升級也不方便管理,那麼這時候就需要配置Tomcat的單機多例項了。 以下操作運行於Linux下。 Tomcat 下載 Tomcat的下載可以直接到Tomcat官方