在linux同一臺主機下面搭建兩個mysql 實例並實現主從複製 (二)

根據需求現在需要測試mysql主從配置,但是由於本地主機資源有限,現在需要在一臺centos主機上面搭建兩到三個Mysql實例,以方便測試mysql主從。

  實驗分三大步驟:

  1,在Centos上面安裝MySQL server

  2,利用MySQL的mysqld_multi配置多個實例

  3,搭建MySQL主從

開始實驗:

   2,利用MySQL的mysqld_multi配置多個實例

   首先確保上一步安裝的mysql server正常運行  

   

[root@TEST ~]# mysqladmin ping
mysqld is alive
[root@TEST ~]# /etc/init.d/mysqld status
MySQL running (21075)[  OK  ]


   在同一臺主機上面運行多個mysql instance的時候需要用到mysql的一個特殊功能mysqld_multi,

   在linux shell下輸入 mysqld_multi --example 就可以得到配置多個實例的一些例子

   

[root@localhost ~]# mysqld_multi --example 
### there are many commons
[mysqld_multi]
mysqld     = /usr/bin/mysqld_safe
mysqladmin = /usr/bin/mysqladmin
user       = multi_admin
password   = my_password
[mysqld2]
socket     = /tmp/mysql.sock2
port       = 3307
pid-file   = /var/lib/mysql2/hostname.pid2
datadir    = /var/lib/mysql2
language   = /usr/share/mysql/english
user       = unix_user1
[mysqld3]
mysqld     = /path/to/mysqld_safe
ledir      = /path/to/mysqld-binary/
mysqladmin = /path/to/mysqladmin
socket     = /tmp/mysql.sock3
port       = 3308
pid-file   = /var/lib/mysql3/hostname.pid3
datadir    = /var/lib/mysql3
language   = /usr/share/mysql/swedish
user       = unix_user2
[mysqld4]
socket     = /tmp/mysql.sock4
port       = 3309
pid-file   = /var/lib/mysql4/hostname.pid4
datadir    = /var/lib/mysql4
language   = /usr/share/mysql/estonia
user       = unix_user3
                                                                                                                                                                                                                                                                                                                                                                                              
[mysqld6]
socket     = /tmp/mysql.sock6
port       = 3311
pid-file   = /var/lib/mysql6/hostname.pid6
datadir    = /var/lib/mysql6
language   = /usr/share/mysql/japanese
user       = unix_user4


   此試驗中需要再額外創建兩個instance,所以根據上面的例子,把所需的配置信息添加到mysql的主配置文件/etc/my.cnf 後面,例如:

   

[mysqld_multi]
mysqld     = /usr/bin/mysqld_safe
mysqladmin = /usr/bin/mysqladmin
user       = root
password   = root1203
[mysqld2]
socket     = /tmp/mysql.sock2    
port       = 3307
pid-file   = /var/run/mysqld/mysqld.pid2
log-slow-queries = /var/log/mysql2/slow-query-log   ## mysql slow log
#relay-log        = /var/spool/mysqld2/mysqld-relay-bin   ## relay for replication
datadir    = /var/lib/mysql2    ## mysql data file folder
user       = mysql
[mysqld3]
socket     = /tmp/mysql.sock3
port       = 3308
pid-file   = /var/run/mysqld/mysqld.pid3
log-slow-queries = /var/log/mysql3/slow-query-log
#relay-log        = /var/spool/mysqld3/mysqld-relay-bin
datadir    = /var/lib/mysql3
user       = mysql

   接下來根據配置文件的信息創建對應的目錄並設置對應的權限

   

## make mysql data file folder
mkdir -p /var/lib/mysql2
mkdir -p /var/lib/mysql3
## make log folder
mkdir -p /var/log/mysql2
mkdir -p /var/log/mysql3
mkdir -p /var/spool/mysql2
mkdir -p /var/spool/mysql3

   修改mysql的數據目錄確保只有mysql用戶纔有訪問權限

chown mysql:root /var/lib/mysql2
chown mysql:root /var/lib/mysql2

   利用 mysql_install_db 安裝初始化庫

mysql_install_db --user=mysql --datadir=/var/lib/mysql2
mysql_install_db --user=mysql --datadir=/var/lib/mysql3

   最關鍵的時刻到了,啓動安裝的instance

   

[root@localhost ~]# mysqld_multi --help |grep Usage
Usage: mysqld_multi [OPTIONS] {start|stop|report} [GNR,GNR,GNR...]
[root@localhost ~]# mysqld_multi start 2
[root@localhost ~]# mysqld_multi start 3

   嘗試登陸:

   

[root@localhost ~]# mysql -S /tmp/mysql.sock2 -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.1.71 Source distribution
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> exit
Bye
[root@localhost ~]# mysql -S /tmp/mysql.sock3 -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 5.1.71-log Source distribution
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>

   到此在同一臺主機上面創建多個mysql instance的算是完成了。

   但是最後需要說明的是,第一次當我嘗試stop 這些個instance的時候,使用 ”mysqld_multi stop 2" 卻不起作用,網上查了下說是需要grant一個 shutdown的權限即可,  

   

mysql> show grants for root@'localhost';
+---------------------------------------------------------------------------------------------------------------+
| Grants for root@localhost                                                                                     |
+---------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '08a9554c6a9d5b2a' WITH GRANT OPTION |
+---------------------------------------------------------------------------------------------------------------+
1 row in set (0.02 sec)
mysql> grant SHUTDOWN on *.* to 'root'@'localhost' ;
Query OK, 0 rows affected (0.00 sec)
mysql> show grants for root@'localhost';
+---------------------------------------------------------------------------------------------------------------+
| Grants for root@localhost                                                                                     |
+---------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '08a9554c6a9d5b2a' WITH GRANT OPTION |
+---------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql>
mysql> exit
Bye
[root@localhost ~]# mysqld_multi stop 3
[root@localhost ~]# mysqld_multi stop 2
[root@localhost ~]#
[root@localhost ~]# mysql -uroot -p -S /tmp/mysql.sock2
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock2' (2)
[root@localhost ~]#

   

   OK,第二步測試通過  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章