MySQL 5.5.35 單機多例項配置詳解
一、前言
二、概述
三、環境準備
四、安裝MySQL 5.5.35
五、新建支援多例項的配置檔案(我這裡配置的是四個例項)
六、初始化多例項資料庫
七、提供管理指令碼 mysqld_multi.server
八、整體備份方便後續遷移
九、管理MySQL多例項
十、登入MySQL多例項
十一、其它管理配置
十二、總結
注,測試環境 CentOS 6.4 x86_64,軟體版本 MySQL 5.5.35,軟體下載地址:http://dev.mysql.com/downloads/mysql/5.1.html#downloads。
1.應用場景
-
採用了資料偽分散式架構的原因,而專案啟動初期又不一定有那多的使用者量,為此先一組物理資料庫伺服器,但部署多個例項,方便後續遷移;
-
為規避mysql對SMP架構不支援的缺陷,使用多例項繫結處理器的辦法,把不同的資料庫分配到不同的例項上提供資料服務;
-
一臺物理資料庫伺服器支撐多個資料庫的資料服務,為提高mysql複製的從機的恢復效率,採用多例項部署;
-
已經為雙主複製的mysql資料庫伺服器架構,想部分重要業務的資料多一份異地機房的熱備份,而mysql複製暫不支援多主的複製模式,且不給使用者提供服務,為有效控制成本,會考慮異地機房部署一臺效能超好的物理伺服器,甚至外加磁碟櫃的方式,為此也會部署多例項;
-
傳統遊戲行業的MMO/MMORPG,以及Web Game,每一個服都對應一個資料庫,而可能要做很多資料查詢和資料訂正的工作,為減少維護而出錯的概率,也可能採用多例項部署的方式,按區的概念分配資料庫;
上面的應用場景介紹主要參考這篇文章:http://www.zhdba.com/mysqlops/2011/07/30/multi-mysqld/,我們這裡應用主要是基於前面三種場景。下面我們來說一下要注意的問題……
2.背景/需求、注意事項
(1).背景與需求
-
將所有的安裝檔案、配置檔案、資料目錄全部放存/data/mysql目錄中,便於今後實現快速遷移、整體備份和快速複製;
-
在一臺伺服器上執行四個MySQL例項,分別繫結在3306、3307、3308、3309埠上;
-
四個例項都開啟binlog日誌,資料目錄分別存放在/data/mysql/data、/data/mysql/data2、/data/mysql/data3、/data/mysql/data4
-
四個例項均採用InnoDB作為預設的儲存引擎,字元編碼採用UTF-8;
-
四個例項均採用相同的效能優化配置引數;
(2).注意事項
-
在編譯安裝時,將資料庫的配置檔案my.cnf以及data目錄等均指向到/data/mysql目錄中;
-
通過mysqld_multi的方式來管理四個不同的例項,採用相同的配置檔案共享效能優化配置引數;
-
在同一個配置檔案中,利用[mysqld1]、[mysqld2]、[mysqld3]、[mysqld4]標籤實現不同例項的差異化配置;
三、環境準備
1.安裝yum源
1
2
|
[root@node1 src] # wget http://mirrors.hustunique.com/epel/6/x86_64/epel-release-6-8.noarch.rpm
[root@node1 src] # rpm -ivh epel-release-6-8.noarch.rpm
|
2.同步時間
1
2
3
|
[root@node1 src] # yum install -y ntp
[root@node1 src] # ntpdate 202.120.2.101
[root@node1 src] # hwclock –w
|
3.安裝mysql5.5依賴包
1
|
[root@node1 ~] # yum install -y autoconf* automake* zlib* libxml* ncurses-devel* libgcrypt* libtool* openssl*
|
4.安裝cmake
1
|
[root@node1 ~] # yum install -y cmake
|
四、安裝MySQL 5.5.35
1.建立安裝目錄與資料存放目錄
1
2
|
[root@node1 ~] # mkdir /data/mysql
[root@node1 ~] # mkdir /data/mysql/data
|
2.建立mysql使用者與組
1
2
3
|
[root@node1 ~] # useradd mysql
[root@node1 ~] # id mysql
uid=500(mysql) gid=500(mysql) 組=500(mysql) |
3.授權安裝目錄與資料目錄
1
2
|
[root@node1 ~] # chown -R mysql.mysql /data/mysql/
[root@node1 ~] # chown -R mysql.mysql /data/mysql/data
|
4.安裝mysql
1
2
3
4
5
|
[root@node1 ~] # cd src/
[root@node1 src] # tar xf mysql-5.5.35.tar.gz
[root@node1 src] # cd mysql-5.5.35
[root@node1 mysql-5.5.35] # cmake -DCMAKE_INSTALL_PREFIX=/data/mysql -DSYSCONFDIR=/data/mysql/etc -DMYSQL_DATADIR=/data/mysql/data -DMYSQL_TCP_PORT=3306 -DMYSQL_UNIX_ADDR=/tmp/mysqld.sock -DMYSQL_USER=mysql -DEXTRA_CHARSETS=all -DWITH_READLINE=1 -DWITH_SSL=system -DWITH_EMBEDDED_SERVER=1 -DENABLED_LOCAL_INFILE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1
[root@node1 mysql-5.5.35] # make && make install
|
好了,到這裡我們的mysql就安裝完成了,下面我們為mysql提供多例項配置檔案。
五、新建支援多例項的配置檔案(我這裡配置的是四個例項)
1.刪除預設的資料目錄
1
2
|
[root@node1 ~] # cd /data/mysql/
[root@node1 mysql] # rm -rf data
|
2.建立多例項配置需要的目錄
1
2
|
[root@node1 mysql] # mkdir etc tmp run log binlogs data data2 data3 data4
[root@node1 mysql] # chown -R mysql.mysql tmp run log binlogs data data2 data3 data4
|
3.提供配置檔案
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
|
[root@node1 ~] # cd src/
[root@node1 src] # cd mysql-5.5.35
[root@node1 mysql-5.5.35] # cp support-files/my-small.cnf /data/mysql/etc/my.cnf
[root@node1 ~] # cd /data/mysql/etc/
[root@node1 etc] # vim my.cnf
# This server may run 4+ separate instances. So we use mysqld_multi to manage their services. [client] default-character- set = utf8
[mysqld_multi] mysqld = /data/mysql/bin/mysqld_safe mysqladmin = /data/mysql/bin/mysqladmin log = /data/mysql/log/mysqld_multi .log
user = root #password = # This is the general purpose database. # The locations are default. # They are left in [mysqld] in case the server is started normally instead of by mysqld_multi. [mysqld1] socket = /data/mysql/run/mysqld .sock
port = 3306 pid- file = /data/mysql/run/mysqld .pid
datadir = /data/mysql/data lc-messages- dir = /data/mysql/share/english # These support master - master replication #auto-increment-increment = 4 #auto-increment-offset = 1 # Since it is master 1 log-bin = /data/mysql/binlogs/bin-log-mysqld1 log-bin-index = /data/mysql/binlogs/bin-log-mysqld1 .index
#binlog-do-db = # Leave this blank if you want to control it on slave max_binlog_size = 1024M # This is exlusively for mysqld2 # It is on 3307 with data directory /data/mysqld/data2 [mysqld2] socket = /data/mysql/run/mysqld .sock2
port = 3307 pid- file = /data/mysql/run/mysqld .pid2
datadir = /data/mysql/data2 lc-messages- dir = /data/mysql/share/english # Disable DNS lookups #skip-name-resolve # These support master - slave replication log-bin = /data/mysql/binlogs/bin-log-mysqld2 log-bin-index = /data/mysql/binlogs/bin-log-mysqld2 .index
#binlog-do-db = # Leave this blank if you want to control it on slave max_binlog_size = 1024M # Relay log settings
#relay-log = /data/mysql/log/relay-log-mysqld2 #relay-log-index = /data/mysql/log/relay-log-mysqld2.index #relay-log-space-limit = 4G # Slow query log settings #log-slow-queries = /data/mysql/log/slow-log-mysqld2 #long_query_time = 2 #log-queries-not-using-indexes # This is exlusively for mysqld3 # It is on 3308 with data directory /data/mysqld/data3 [mysqld3] socket = /data/mysql/run/mysqld .sock3
port = 3308 pid- file = /data/mysql/run/mysqld .pid3
datadir = /data/mysql/data3 lc-messages- dir = /data/mysql/share/english
#Disable DNS lookups #skip-name-resolve # These support master - slave replication log-bin = /data/mysql/binlogs/bin-log-mysqld3 log-bin-index = /data/mysql/binlogs/bin-log-mysqld3 .index
#binlog-do-db = # Leave this blank if you want to control it on slave max_binlog_size = 1024M
# This is exlusively for mysqld4
# It is on 3309 with data directory /data/mysqld/data4 [mysqld4] socket = /data/mysql/run/mysqld .sock4
port = 3309 pid- file = /data/mysql/run/mysqld .pid4
datadir = /data/mysql/data4 lc-messages- dir = /data/mysql/share/english
# Disable DNS lookups #skip-name-resolve # These support master - slave replication log-bin = /data/mysql/binlogs/bin-log-mysqld4 log-bin-index = /data/mysql/binlogs/bin-log-mysqld4 .index
#binlog-do-db = # Leave this blank if you want to control it on slave max_binlog_size = 1024M # The rest of the my.cnf is shared
# Here follows entries for some specific programs # The MySQL server [mysqld] basedir = /data/mysql tmpdir = /data/mysql/tmp socket = /data/mysql/run/mysqld .sock
port = 3306 pid- file = /data/mysql/run/mysqld .pid
datadir = /data/mysql/data lc-messages- dir = /data/mysql/share/english skip-external-locking key_buffer_size = 16K max_allowed_packet = 1M table_open_cache = 4 sort_buffer_size = 64K read_buffer_size = 256K read_rnd_buffer_size = 256K net_buffer_length = 2K thread_stack = 128K # Increase the max connections max_connections = 2 # The expiration time for logs, including binlogs expire_logs_days = 14 # Set the character as utf8 character- set -server = utf8
collation-server = utf8_unicode_ci # This is usually only needed when setting up chained replication #log-slave-updates # Enable this to make replication more resilient against server crashes and restarts # but can cause higher I/O on the server #sync_binlog = 1 # The server id, should be unique in same network server- id = 1
# Set this to force MySQL to use a particular engine/table-type for new tables # This setting can still be overridden by specifying the engine explicitly # in the CREATE TABLE statement default-storage-engine = INNODB # Enable Per Table Data for InnoDB to shrink ibdata1 innodb_file_per_table = 1 # Uncomment the following if you are using InnoDB tables #innodb_data_home_dir = /data/mysql/data #innodb_data_file_path = ibdata1:10M:autoextend #innodb_log_group_home_dir = /data/mysql/data # You can set .._buffer_pool_size up to 50 - 80 % of RAM # but beware of setting memory usage too high innodb_buffer_pool_size = 16M innodb_additional_mem_pool_size = 2M # Set .._log_file_size to 25 % of buffer pool size innodb_log_file_size = 5M innodb_log_buffer_size = 8M innodb_flush_log_at_trx_commit = 1 innodb_lock_wait_timeout = 50 [mysqldump] quick max_allowed_packet = 16M [mysql] no-auto-rehash [myisamchk] key_buffer_size = 8M sort_buffer_size = 8M [mysqlhotcopy] interactive-timeout [mysql.server] user = mysql [mysqld_safe] log-error = /data/mysql/log/mysqld .log
pid- file = /data/mysql/run/mysqld .pid
open -files-limit = 8192
|
注,MySQL自帶了幾個不同的配置檔案,放置在/data/mysql/support-files目錄下,分別是my-huge.cnf,my-innodb-heavy-4G.cnf,my-large.cnf,my-medium.cnf,my-small.cnf,通過名稱我們可以很直觀的瞭解到他們是針對不同的伺服器配置的,本文的配置檔案是來自於my-small.cnf的,因為我是在虛擬機器上進行的設定;在生產環境中,我們可以通過參考my-huge.cnf或my-innodb-heavy-4G.cnf中的部分引數配置,來對伺服器進行優化;
4.修改my.cnf讀寫許可權
1
2
|
[root@node1 etc] # chown -R root.root /data/mysql/etc
[root@node1 etc] # chmod 600 /data/mysql/etc/my.cnf
|
好了,到這裡我們的配置檔案就設定完成了,下面我們來初始化一下資料庫。
六、初始化多例項資料庫
1.切換到mysql的安裝目錄
1
|
[root@node1 ~] # cd /data/mysql/
|
2.初始化例項[mysqld1]
1
|
[root@node1 mysql] # scripts/mysql_install_db --basedir=/data/mysql --datadir=/data/mysql/data --user=mysql
|
3.初始化例項[mysqld2]
1
|
[root@node1 mysql] # scripts/mysql_install_db --basedir=/data/mysql --datadir=/data/mysql/data2 --user=mysql
|
4.初始化例項[mysqld3]
1
|
[root@node1 mysql] # scripts/mysql_install_db --basedir=/data/mysql --datadir=/data/mysql/data3 --user=mysql
|
5.初始化例項[mysqld4]
1
|
[root@node1 mysql] # scripts/mysql_install_db --basedir=/data/mysql --datadir=/data/mysql/data4 --user=mysql
|
好了,到這裡我們初始化工作就完成了,下面我們來提供一下多例項的管理指令碼。
本文轉自 張衝andy 部落格園部落格,原文連結:http://www.cnblogs.com/andy6/p/6171859.html ,如需轉載請自行聯絡原作者
相關文章
- MySQL單機多例項配置MySql
- Linux下MySQL配置單機多例項LinuxMySql
- MySQL多例項配置MySql
- mysql的多例項配置MySql
- canal同步mysql,監聽單例項,多例項配置MySql單例
- MySQL單機多例項安裝並配置主從複製MySql
- 利用mysqld_multi配置單機多例項MySql
- MySQL 使用mysqld_multi部署單機多例項詳細過程MySql
- Mysql:mysql多例項建立、配置檔案講解【四】MySql
- MySQL 多例項配置管理:MySql
- MySQL 5.6同一物理主機配置多例項MySql
- mysqld_multi搭建MySQL單機多例項服務MySql
- 技術乾貨 | 利用systemd管理MySQL單機多例項MySql
- MySQL資料庫入門多例項配置MySql資料庫
- 【MySQL】MySQL多例項開機自動重啟MySql
- mysql多例項部署MySql
- mysql多例項安裝MySql
- MySQL5.7 多例項MySql
- MySQL多例項環境部署MySql
- 配置nginx多例項(不同於虛擬主機)Nginx
- 單機多例項執行 percona server 5.7Server
- mysql 5.7 多例項安裝MySql
- Mysql配置檔案my.ini配置項詳解MySql
- rabbitmq單機多例項叢集與負載均衡MQ負載
- mysql 5.7配置項最詳細的解釋MySql
- MySQL 多例項刪庫指令碼MySql指令碼
- Mysql之多例項my.cnfMySql
- 基於mysqld_multi實現MySQL 5.7.24多例項多程式配置MySql
- mysql配置詳解MySql
- MySQL入門--Mysqld_multi多例項MySql
- mysql-mmm叢集(多例項)薦MySql
- Mysql 通過 Mysql_install_db 建立多例項MySql
- MySQL介紹及安裝與多例項MySql
- Linux下MySQL多例項部署記錄LinuxMySql
- webpack(2)——配置項詳解Web
- Tomcat多例項單應用部署方案Tomcat
- mysql使用mysqld_multi工具啟動多例項MySql
- MySQL 多例項啟動和關閉指令碼MySql指令碼