MySQL数据库多实例应用实战-第三

  就是在一台机器上开启多个不同服务端口(如:3306,3307)运行多个mysql 服务进程,这些服务进程通过 不同socket监听不同服务端口来提供各自的服务。

这些mysql 多实例共用 一套mysql安装,使用不同的my.cnf配置文件,启动程序,数据文件。在提供服务,多实例逻辑上看来是各自独立的,多个实例的自身是根据 配置文件 对应设置值,来取服务器相关硬件资源。

 

备注:咨询百度,单4个实例,机器48核,96G内存,硬盘是SAS 1.5ks 转,还有是ssd ,做raid5 (4块,支持热拨插)

 

 

——————————————————————————————————————————————

配置方案

1、多配置文件及多个启动程序来实现 多实例方案。(推荐)

 

 2、单一配置文件部署

_____________________________________________________________

多实例,多配置文件配置过程

 

 

 

 

 

 

 

 

多实例安装配置全过程

1、安装依赖包
yum install ncurses-devel -y
yum install libaio-devel -y


之前 已完成mysql cmake 安装
直接进入
创建mysql 多实例数据文件目录
采用/data目录作为mysql 多实例总根目录,然后规划不同mysql实例端口号作为/data 下面的二级目录,不同端口号就是不同实例目录,以区别 不同实例。
二级目录下包括mysql 数据文件,配置文件以及启动文件目录。
创建前先把单实例mysql kill,不要有运行。

——————————————————————————
[root@agent ~]# pkill mysqld
[root@agent ~]# ps -ef | grep mysql
root      60766  37915  0 03:13 pts/0    00:00:00 grep mysql
——————————————————————————
删除单实例启动命令
[root@agent ~]# rm -f /etc/init.d/mysqld 
————————————————————————————————
开始创建

[root@agent ~]# mkdir -p /data/{3306,3307}/data

[root@agent ~]# tree /data
/data
├── 3306
│?? └── data
└── 3307
    └── data

4 directories, 0 files

#解压上传配置文件
[root@agent tmp]# unzip data.zip 
Archive:  data.zip
   creating: data/
   creating: data/3306/
  inflating: data/3306/my.cnf        
  inflating: data/3306/mysql         
   creating: data/3307/
  inflating: data/3307/my.cnf        
  inflating: data/3307/mysql


[root@agent tmp]# cp data/3306/my.cnf  /data/3306/
[root@agent tmp]# cp data/3307/my.cnf  /data/3307/ 

[root@agent tmp]# tree /data/
/data/
├── 3306
│?? ├── data
│?? └── my.cnf
└── 3307
    ├── data
    └── my.cnf

4 directories, 2 files


[root@agent tmp]# cp data/3306/mysql  /data/3306/
[root@agent tmp]# cp data/3307/mysql /data/3307/ 

[root@agent tmp]# tree /data
/data
├── 3306
│?? ├── data
│?? ├── my.cnf
│?? └── mysql
└── 3307
    ├── data
    ├── my.cnf
    └── mysql

4 directories, 4 files


#设置授权
[root@agent tmp]# chown -R mysql.mysql /data


[root@agent tmp]# find /data/ -type f -name "mysql"|xargs ls -l
-rw-r--r--. 1 mysql mysql 1307 Nov  7 03:28 /data/3306/mysql
-rw-r--r--. 1 mysql mysql 1307 Nov  7 03:28 /data/3307/mysql


[root@agent tmp]# find /data/ -type f -name "mysql"|xargs chmod +x
[root@agent tmp]# find /data/ -type f -name "mysql"|xargs ls -l
-rwxr-xr-x. 1 mysql mysql 1307 Nov  7 03:28 /data/3306/mysql
-rwxr-xr-x. 1 mysql mysql 1307 Nov  7 03:28 /data/3307/mysql


#检查全局路径(之前 已配置过)

[root@agent tmp]# tail -1 /etc/profile
export PATH=/application/mysql/bin:$PATH


#初始化命令5.5

cd /application/mysql/scripts
./mysql_install_db  --basedir=/application/mysql --datadir=/data/3306/data --user=mysql

./mysql_install_db  --basedir=/application/mysql --datadir=/data/3307/data --user=mysql



初始化主要目的就是创建基础数据库文件,例如:生成 mysql库存表等
初始化后查看对应实例数据目录,可以看到如下文件

——————————————————————————————————————————
[root@agent scripts]# tree /data
/data
├── 3306
│   ├── data
│   │   ├── mysql
│   │   │   ├── columns_priv.frm
│   │   │   ├── columns_priv.MYD
│   │   │   ├── columns_priv.MYI
│   │   │   ├── db.frm
│   │   │   ├── db.MYD
│   │   │   ├── db.MYI
│   │   │   ├── event.frm
│   │   │   ├── event.MYD
│   │   │   ├── event.MYI
│   │   │   ├── func.frm
│   │   │   ├── func.MYD
│   │   │   ├── func.MYI
│   │   │   ├── general_log.CSM
│   │   │   ├── general_log.CSV
│   │   │   ├── general_log.frm
│   │   │   ├── help_category.frm
│   │   │   ├── help_category.MYD
│   │   │   ├── help_category.MYI
│   │   │   ├── help_keyword.frm
│   │   │   ├── help_keyword.MYD
│   │   │   ├── help_keyword.MYI
│   │   │   ├── help_relation.frm
│   │   │   ├── help_relation.MYD
│   │   │   ├── help_relation.MYI
│   │   │   ├── help_topic.frm
│   │   │   ├── help_topic.MYD
│   │   │   ├── help_topic.MYI
│   │   │   ├── host.frm
│   │   │   ├── host.MYD
│   │   │   ├── host.MYI
│   │   │   ├── ndb_binlog_index.frm
│   │   │   ├── ndb_binlog_index.MYD
│   │   │   ├── ndb_binlog_index.MYI
│   │   │   ├── plugin.frm
│   │   │   ├── plugin.MYD
│   │   │   ├── plugin.MYI
│   │   │   ├── proc.frm
│   │   │   ├── proc.MYD
│   │   │   ├── proc.MYI
│   │   │   ├── procs_priv.frm
│   │   │   ├── procs_priv.MYD
│   │   │   ├── procs_priv.MYI
│   │   │   ├── proxies_priv.frm
│   │   │   ├── proxies_priv.MYD
│   │   │   ├── proxies_priv.MYI
│   │   │   ├── servers.frm
│   │   │   ├── servers.MYD
│   │   │   ├── servers.MYI
│   │   │   ├── slow_log.CSM
│   │   │   ├── slow_log.CSV
│   │   │   ├── slow_log.frm
│   │   │   ├── tables_priv.frm
│   │   │   ├── tables_priv.MYD
│   │   │   ├── tables_priv.MYI
│   │   │   ├── time_zone.frm
│   │   │   ├── time_zone_leap_second.frm
│   │   │   ├── time_zone_leap_second.MYD
│   │   │   ├── time_zone_leap_second.MYI
│   │   │   ├── time_zone.MYD
│   │   │   ├── time_zone.MYI
│   │   │   ├── time_zone_name.frm
│   │   │   ├── time_zone_name.MYD
│   │   │   ├── time_zone_name.MYI
│   │   │   ├── time_zone_transition.frm
│   │   │   ├── time_zone_transition.MYD
│   │   │   ├── time_zone_transition.MYI
│   │   │   ├── time_zone_transition_type.frm
│   │   │   ├── time_zone_transition_type.MYD
│   │   │   ├── time_zone_transition_type.MYI
│   │   │   ├── user.frm
│   │   │   ├── user.MYD
│   │   │   └── user.MYI
│   │   ├── performance_schema
│   │   │   ├── cond_instances.frm
│   │   │   ├── db.opt
│   │   │   ├── events_waits_current.frm
│   │   │   ├── events_waits_history.frm
│   │   │   ├── events_waits_history_long.frm
│   │   │   ├── events_waits_summary_by_instance.frm
│   │   │   ├── events_waits_summary_by_thread_by_event_name.frm
│   │   │   ├── events_waits_summary_global_by_event_name.frm
│   │   │   ├── file_instances.frm
│   │   │   ├── file_summary_by_event_name.frm
│   │   │   ├── file_summary_by_instance.frm
│   │   │   ├── mutex_instances.frm
│   │   │   ├── performance_timers.frm
│   │   │   ├── rwlock_instances.frm
│   │   │   ├── setup_consumers.frm
│   │   │   ├── setup_instruments.frm
│   │   │   ├── setup_timers.frm
│   │   │   └── threads.frm
│   │   └── test
│   ├── my.cnf
│   └── mysql
└── 3307
    ├── data
    │   ├── mysql
    │   │   ├── columns_priv.frm
    │   │   ├── columns_priv.MYD
    │   │   ├── columns_priv.MYI
    │   │   ├── db.frm
    │   │   ├── db.MYD
    │   │   ├── db.MYI
    │   │   ├── event.frm
    │   │   ├── event.MYD
    │   │   ├── event.MYI
    │   │   ├── func.frm
    │   │   ├── func.MYD
    │   │   ├── func.MYI
    │   │   ├── general_log.CSM
    │   │   ├── general_log.CSV
    │   │   ├── general_log.frm
    │   │   ├── help_category.frm
    │   │   ├── help_category.MYD
    │   │   ├── help_category.MYI
    │   │   ├── help_keyword.frm
    │   │   ├── help_keyword.MYD
    │   │   ├── help_keyword.MYI
    │   │   ├── help_relation.frm
    │   │   ├── help_relation.MYD
    │   │   ├── help_relation.MYI
    │   │   ├── help_topic.frm
    │   │   ├── help_topic.MYD
    │   │   ├── help_topic.MYI
    │   │   ├── host.frm
    │   │   ├── host.MYD
    │   │   ├── host.MYI
    │   │   ├── ndb_binlog_index.frm
    │   │   ├── ndb_binlog_index.MYD
    │   │   ├── ndb_binlog_index.MYI
    │   │   ├── plugin.frm
    │   │   ├── plugin.MYD
    │   │   ├── plugin.MYI
    │   │   ├── proc.frm
    │   │   ├── proc.MYD
    │   │   ├── proc.MYI
    │   │   ├── procs_priv.frm
    │   │   ├── procs_priv.MYD
    │   │   ├── procs_priv.MYI
    │   │   ├── proxies_priv.frm
    │   │   ├── proxies_priv.MYD
    │   │   ├── proxies_priv.MYI
    │   │   ├── servers.frm
    │   │   ├── servers.MYD
    │   │   ├── servers.MYI
    │   │   ├── slow_log.CSM
    │   │   ├── slow_log.CSV
    │   │   ├── slow_log.frm
    │   │   ├── tables_priv.frm
    │   │   ├── tables_priv.MYD
    │   │   ├── tables_priv.MYI
    │   │   ├── time_zone.frm
    │   │   ├── time_zone_leap_second.frm
    │   │   ├── time_zone_leap_second.MYD
    │   │   ├── time_zone_leap_second.MYI
    │   │   ├── time_zone.MYD
    │   │   ├── time_zone.MYI
    │   │   ├── time_zone_name.frm
    │   │   ├── time_zone_name.MYD
    │   │   ├── time_zone_name.MYI
    │   │   ├── time_zone_transition.frm
    │   │   ├── time_zone_transition.MYD
    │   │   ├── time_zone_transition.MYI
    │   │   ├── time_zone_transition_type.frm
    │   │   ├── time_zone_transition_type.MYD
    │   │   ├── time_zone_transition_type.MYI
    │   │   ├── user.frm
    │   │   ├── user.MYD
    │   │   └── user.MYI
    │   ├── performance_schema
    │   │   ├── cond_instances.frm
    │   │   ├── db.opt
    │   │   ├── events_waits_current.frm
    │   │   ├── events_waits_history.frm
    │   │   ├── events_waits_history_long.frm
    │   │   ├── events_waits_summary_by_instance.frm
    │   │   ├── events_waits_summary_by_thread_by_event_name.frm
    │   │   ├── events_waits_summary_global_by_event_name.frm
    │   │   ├── file_instances.frm
    │   │   ├── file_summary_by_event_name.frm
    │   │   ├── file_summary_by_instance.frm
    │   │   ├── mutex_instances.frm
    │   │   ├── performance_timers.frm
    │   │   ├── rwlock_instances.frm
    │   │   ├── setup_consumers.frm
    │   │   ├── setup_instruments.frm
    │   │   ├── setup_timers.frm
    │   │   └── threads.frm
    │   └── test
    ├── my.cnf
    └── mysql

10 directories, 184 files

——————————————————————————————————————————

#启动数据库

/data/3306/mysql start

/data/3307/mysql start


[root@agent scripts]# netstat -lntup | grep 330[6-7]
tcp        0      0 0.0.0.0:3307                0.0.0.0:*                   LISTEN      65486/mysqld        
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      64768/mysqld  


#登录

mysql -S /data/3306/mysql.sock
mysql -S /data/3307/mysql.sock


#重启

/data/3306/mysql stop

/data/3306/mysql start

/data/3307/mysql stop

/data/3307/mysql start


#设置密码

mysqladmin -u root -S /data/3306/mysql.sock password 'oldboy123'

mysqladmin -u root -S /data/3307/mysql.sock password 'oldboy123'



#在已设置密码时,停止数据库要在启动脚本中文件中设置用户密码,否则会停止错误
#3306 中mysql脚本
#init

port=3306

mysql_user="root"

mysql_pwd="oldboy123"

#3307 中mysql脚本
#init

port=3307
mysql_user="root"

mysql_pwd="oldboy123"


#由于 脚本中还有密码,所以要进行一个授权

[root@agent ~]# find /data -type f -name "mysql" 
/data/3307/mysql
/data/3306/mysql

[root@agent ~]# find /data -type f -name "mysql" -exec chmod 700 {} \;
[root@agent ~]# find /data -type f -name "mysql" -exec chown root.root {} \;


[root@agent ~]# find /data -type f -name "mysql" -exec ls -l {} \;
-rwx------. 1 root root 1310 Nov  7 18:32 /data/3307/mysql
-rwx------. 1 root root 1310 Nov  7 18:31 /data/3306/mysql


[root@agent ~]# pkill mysqld
[root@agent ~]# pkill mysqld
[root@agent ~]# /data/3306/mysql start
Starting MySQL...
[root@agent ~]# /data/3307/mysql start 
Starting MySQL...



[root@agent ~]# ss -lntup | grep 330
tcp    LISTEN     0      128                    *:3307                  *:*      users:(("mysqld",67012,11))
tcp    LISTEN     0      128                    *:3306                  *:*      users:(("mysqld",66295,12))


#设置密码后登录 


mysql -uroot -poldboy123 -S /data/3306/mysql.sock

mysql -uroot -poldboy123 -S /data/3307/mysql.sock



______________________________________________


创建第三个3308实例


mkdir /data/3308/data -p
cp /data/3306/my.cnf  /data/3308
cp /data/3306/mysql  /data/3308
chown -R mysql.mysql /data/3308

[root@agent ~]# cd /data/3308

[root@agent 3308]# vi my.cnf 

#进行批量替换

:g/3306/s//3308/g

并修改 server-id = 4

再修改一下mysql 启动脚本 端口

#初始化命令5.5

cd /application/mysql/scripts
./mysql_install_db  --basedir=/application/mysql --datadir=/data/3308/data --user=mysql

#启动

[root@agent ~]# /data/3308/mysql start
Starting MySQL...
[root@agent ~]# netstat -lntup | grep 330
tcp        0      0 0.0.0.0:3307                0.0.0.0:*                   LISTEN      67012/mysqld        
tcp        0      0 0.0.0.0:3308                0.0.0.0:*                   LISTEN      67848/mysqld        
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      66295/mysqld  



#设置密码

mysqladmin -u root -S /data/3308/mysql.sock password 'oldboy123'

#设置密码后登录

mysql -uroot -poldboy123 -S /data/3308/mysql.sock

 

posted @ 2017-01-25 18:12  杨坚  阅读(78)  评论(0)    收藏  举报