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

浙公网安备 33010602011771号