Mysql5.6多實例部署

MySQL-5.6.29多實例部署


一,mysql-5.6.29源碼安裝步驟:

1,安裝需要的軟件

[root@localhost ~]#yum -y install gcc gcc-c++ make ncurses ncurses-devel cmake cmake

二,源碼安裝mysql-5.6.29

2.1)創建用戶和組並創建數據存放目錄

[root@localhost ~]#groupadd mysql
[root@localhost ~]#useradd mysql -s /sbin/nologin -M -g mysql
[root@localhost mysql-5.6.29]# mkdir -p /data/mysql_3306
[root@localhost mysql-5.6.29]# mkdir -p /data/mysql_3308

2.2)給數據庫配置環境變量

[root@localhost mysql-5.6.29]#
echo"export PATH=$PATH:/usr/local/mysql/bin:/usr/local/mysql/lib" >>/etc/profile
[root@localhost mysql-5.6.29]#source /etc/profile
[root@localhost mysql-5.6.29]#echo $PATH

2.3)解壓安裝mysql-5.6.29

[root@localhost ~]#tar xf mysql-5.6.29.tar.gz
[root@localhost mysql-5.6.29]# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=gbk,gb2312,utf8,ascii \
-DENABLED_LOCAL_INFILE=ON \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITHOUT_PARTITION_STORAGE_ENGINE=0 \
-DWITH_FAST_MUTEXES=1 \
-DWITH_ZLIB=bundled \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_READLINE=1 \
-DWITH_EMBEDDED_SERVER=1 \
-DWITH_DEBUG=0
[root@localhost mysql-5.6.29]# make 
[root@localhost mysql-5.6.29]# make install

2.4)給數據庫目錄授權

[root@localhost mysql-5.6.29]#chown -R mysql.mysql /usr/local/mysql
[root@localhost mysql-5.6.29]#chown -R mysql.mysql /data/

三,配置數據庫

3.1)配置文件my.cnf文件

[root@localhost mysql-5.6.29]#vim /etc/my.cnf
[root@mysqldb bin]# cat /etc/my.cnf 
[client]
#port = 3306
#socket = /tmp/mysql.sock

[mysqld3306]
port = 3306
basedir = /usr/local/mysql
datadir = /data/mysql_3306
socket  = /tmp/mysql_3306.sock
slow_query_log_file = /data/mysql_3306/slow.log
log-error = /data/mysql_3306/error.log
log-bin = /data/mysql_3306/mysql-bin
sync_binlog = 1
binlog_cache_size = 4M
default-storage-engine = InnoDB
binlog_format = row
transaction_isolation = REPEATABLE-READ
innodb_buffer_pool_size = 100m
[mysql]
[mysqld3308]
port = 3308
basedir = /usr/local/mysql
datadir = /data/mysql_3308
socket  = /tmp/mysql_3308.sock
slow_query_log_file = /data/mysql_3308/slow.log
log-error = /data/mysql_3308/error.log
log-bin = /data/mysql_3308/mysql-bin
sync_binlog = 1
binlog_cache_size = 4M
default-storage-engine = InnoDB
binlog_format = row
transaction_isolation = REPEATABLE-READ
innodb_buffer_pool_size = 100m
[mysqld_multi]
mysqld=/usr/local/mysql/bin/mysqld_safe
mysqladmin=/usr/local/mysql/bin/mysqladmin 
[mysqldump]
quick
max_allowed_packet = 32M

3.2)初始化數據庫文件

[root@mysqldb ~]# cd /usr/local/mysql/scripts/
[root@mysqldb scripts]# ./mysql_install_db --basedir=/usr/local/mysql --datadir=/data/mysql_3306 --defaults-file=/etc/my.cnf --user=mysql
[root@mysqldb scripts]# ./mysql_install_db --basedir=/usr/local/mysql --datadir=/data/mysql_3308 --defaults-file=/etc/my.cnf --user=mysql

3.3)多實例採用mysqld_multi來啓停數據庫

[root@mysqldb bin]# ./mysqld_multi --defaults-file=/etc/my.cnf --user=root --password=MANAGER start 3306,3307,3308

3.4)查看多實例運行的狀態

[root@mysqldb bin]# ./mysqld_multi report
Reporting MySQL servers
MySQL server from group: mysqld3306 is running
MySQL server from group: mysqld3308 is running

四,登錄數據庫操作

4.1)登錄數據庫是沒有密碼,因此需要修改密碼

[root@mysqldb bin]# mysql -uroot -p -P3306 -h 127.0.0.1
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 5.6.29-log Source distribution

Copyright (c) 2000, 2016, 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> use mysql;
mysql>UPDATE user SET password=PASSWORD('hwg123') WHERE user='root';
mysql>FLUSH PRIVILEGES;
[root@mysqldb bin]# mysql -uroot -p -P3308 -h 127.0.0.1
mysql> use mysql;
mysql>UPDATE user SET password=PASSWORD('hwg123') WHERE user='root';
mysql>FLUSH PRIVILEGES;

4.2)授權某個網段ip登錄到本機

先建一個庫db01測試用一下:
mysql> create database db01;
mysql> 
CREATE TABLE `goods` (
  `gid` char(10) NOT NULL,
  `gnam` varchar(20) DEFAULT NULL,
  `gdate` date DEFAULT NULL,
  `gprice` char(100) DEFAULT '0',
  `gvprice` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`gid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
mysql> show tables;
mysql> desc goods;
再創建一個用戶tony用來遠程連接數據庫:
mysql> create user tony@localhost identified by 'hwg123';
mysql>  grant all on db01.* to 'tony'@'10.93.58.%'identified by 'hwg123'WITH GRANT OPTION;
mysql> flush privileges;
另外一個3308數據庫也是一樣的設置:
mysql> create database db02;
mysql> 
CREATE TABLE `goods` (
  `gid` char(10) NOT NULL,
  `gnam` varchar(20) DEFAULT NULL,
  `gdate` date DEFAULT NULL,
  `gprice` char(100) DEFAULT '0',
  `gvprice` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`gid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
mysql> show tables;
mysql> desc goods;
再創建一個用戶tony用來遠程連接數據庫:
mysql> create user tony@localhost identified by 'hwg123';
mysql>  grant all on db02.* to 'tony'@'10.93.58.%'identified by 'hwg123'WITH GRANT OPTION;
mysql> flush privileges;

五、開啓和停止數據庫

[root@mysqldb bin]# mysqld_multi stop 3306
此時發現我們不能正常的關閉某個數據庫,查詢資料需要修改my.cnf和mysqld_multi參數

[root@mysqldb bin]#vim /etc/my.cnf
增加如下:
[mysqld_multi]
user = root
password = hwg123
[root@mysqldb bin]# vim /usr/local/mysql/bin/mysqld_multi
修改如下一條記錄:my_print_defaults -s
my $com= join ' ', 'my_print_defaults -s', @defaults_options, $group;
修改後我們就可以正常的停止啓用數據庫:
[root@mysqldb bin]# mysqld_multi stop 3307
[root@mysqldb bin]# mysqld_multi report
Reporting MySQL servers
MySQL server from group: mysqld3306 is running
MySQL server from group: mysqld3307 is not running
MySQL server from group: mysqld3308 is running


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