MYSQL数据库多实例的安装配置mysql_multi启停实战
admin
2023-06-02 07:02:01
0

一、多实例的应用场景:

1、资金紧张型公司的选择

当公司业务访问量不太大,又舍不得花钱,但同时又希望不同业务的数据库服务各自独立,而且需要主从同步进行等技术提供备份或读写分离服务时,使用多实例是最好不过的。

2、并发访问不是特别大的业务

当公司业务访问量不太大,服务器资源基本闲置的比较多,这是就很适合多实例的应用。如果对SQL语句优化的好,多实例是一个很值得使用的技术。即使并发很大,只要合理分配好系统资源,也不会有太大问题。

二、mysql多实例的原理


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

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


三、多实例部署步骤

在这里数据库的编译安装就不赘述了,如有不清楚的,请参考其他文件。

实验使用的端口:33064,33065


1、创建数据目录

创建数据文件存放目录,并修改文件夹的所属用户组

mkdir -p /home/mysqldata/33064

mkdir -p /home/mysqldata/33065

chown mysql.mysql 33064/33065/

2、初始化数据库:


/usr/bin/mysql_install_db\

--datadir=/home/mysqldata/33064/\

--user=mysql

 

/usr/bin/mysql_install_db\

--datadir=/home/mysqldata/33065/\

--user=mysql


3、配置/etc/my.cnf配置文件

每一个实例都有一个属于实例自己的msyqld模块,模块中是实例对应的初始化参数,例如[mysqld33064],[mysqld33065]


[root@model /]# cat /etc/my.cnf

[mysqld_multi]

mysqld=/usr/bin/mysqld_safe

mysqladmin=/usr/bin/mysqladmin

user=mysql

password=mysql

 

[mysqld33064]

datadir=/home/mysqldata/33064

port=33064

socket=/home/mysqldata/33064/mysql33064.sock

user=mysql

symbolic-links=0

default-storage-engine=INNODB

log-bin = mysql-bin

binlog_format = mixed

expire_logs_days = 7

## utf8

#default-character-set = utf8

#character_set_connection = utf8

#character_set_results = utf8

character-set-server = utf8

collation-server = utf8_general_ci

init_connect = 'SET collation_connection =utf8_general_ci '

init_connect = 'SET NAMES utf8'

server-id = 1

 

[mysqld33065]

datadir=/home/mysqldata/33065

port=33065

socket=/home/mysqldata/33065/mysql33065.sock

user=mysql

symbolic-links=0

default-storage-engine=INNODB

log-bin = mysql-bin

binlog_format = mixed

expire_logs_days = 7

## utf8

#default-character-set = utf8

#character_set_connection = utf8

#character_set_results = utf8

character-set-server = utf8

collation-server = utf8_general_ci

init_connect = 'SET collation_connection =utf8_general_ci '

init_connect = 'SET NAMES utf8'

server-id = 1

[mysqld_safe]

#log=/var/log/mysqldquery.log

## error log

log-error=/var/log/mysqld.log

#pid-file=/var/run/mysqld/mysqld.pid


4、多实例的启动和停止

启动的时候要用mysqld_multi 命令,而不是mysqld命令,命令通过传递不同的端口参数来启动对应额数据库实例.

/usr/bin/mysqld_multi  --defaults-file=/etc/my.cnf start 33064

/usr/bin/mysqld_multi --defaults-file=/etc/my.cnf  start  33065

 

/usr/bin/mysqld_multi --defaults-file=/etc/my.cnf stop  33064

/usr/bin/mysqld_multi --defaults-file=/etc/my.cnf stop  33065

查看数据库进程情况,如果有两个数据库进程说明数据库安装正常,否则失败,具体原因需要查看log日志来处理。

[root@model mysql]# ps -ef|grep mysql

root      3990     1  0 11:18 pts/0    00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/home/mysqldata/33065 --port=33065 --socket=/home/mysqldata/33065/mysql33065.sock --user=mysql --symbolic-links=0 --default-storage-engine=INNODB --log-bin=mysql-bin --binlog_format=mixed --expire_logs_days=7 --character-set-server=utf8 --collation-server=utf8_general_ci --init_connect=SET collation_connection = utf8_general_ci  --init_connect=SET NAMES utf8 --server-id=1

mysql     4132  3990  0 11:18 pts/0    00:00:01 /usr/libexec/mysqld --basedir=/usr --datadir=/home/mysqldata/33065 --user=mysql --symbolic-links=0 --default-storage-engine=INNODB --log-bin=mysql-bin --binlog_format=mixed --expire_logs_days=7 --character-set-server=utf8 --collation-server=utf8_general_ci --init_connect=SET collation_connection = utf8_general_ci  --init_connect=SET NAMES utf8 --server-id=1 --log-error=/var/log/mysqld.log --pid-file=/home/mysqldata/33065/model.pid --socket=/home/mysqldata/33065/mysql33065.sock --port=33065

root      4155     1  0 11:18 pts/0    00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/home/mysqldata/33064 --port=33064 --socket=/home/mysqldata/33064/mysql33064.sock --user=mysql --symbolic-links=0 --default-storage-engine=INNODB --log-bin=mysql-bin --binlog_format=mixed --expire_logs_days=7 --character-set-server=utf8 --collation-server=utf8_general_ci --init_connect=SET collation_connection = utf8_general_ci  --init_connect=SET NAMES utf8 --server-id=1

mysql     4297  4155  0 11:18 pts/0    00:00:01 /usr/libexec/mysqld --basedir=/usr --datadir=/home/mysqldata/33064 --user=mysql --symbolic-links=0 --default-storage-engine=INNODB --log-bin=mysql-bin --binlog_format=mixed --expire_logs_days=7 --character-set-server=utf8 --collation-server=utf8_general_ci --init_connect=SET collation_connection = utf8_general_ci  --init_connect=SET NAMES utf8 --server-id=1 --log-error=/var/log/mysqld.log --pid-file=/home/mysqldata/33064/model.pid --socket=/home/mysqldata/33064/mysql33064.sock --port=33064


5、多实例的连接登录


mysql -S /home/mysqldata/33064/mysql33064.sock

mysql -S /home/mysqldata/33065/mysql33065.sock


6、赋权限

刚安装好的数据库root用户无localhost登录权限,所以需要赋权限以后才能通过用户名和密码登录。

mysql -S /home/mysqldata/33064/mysql33064.sock

 

mysql>grant allon *.* to 'root'@'%' identified by 'root';

mysql>grant allon *.* to 'root'@'localhost' identified by 'root';

mysql> flushprivileges;

 7、通过用户名和密码登录

mysql -uroot -proot -S  /home/mysqldata/33064/mysql33064.sock

8、多实例修改密码

修改实例33064的root密码,使用mysqladmin命令。如下:

mysqladmin -uroot -p password root-S /home/mysqldata/33064/mysql33064.sock


到此我们的mysql多实例部署就已经完成。



相关内容

热门资讯

王文涛部长会见美国副贸易代表斯... 5月21日,商务部部长王文涛在苏州会见来华出席亚太经合组织贸易部长会的美国副贸易代表斯威策一行。双方...
原创 i... 当手中的iPhone XS Max续航开始“力不从心”,多数用户会面临两难选择:换新机还是换电池?作...
神舟二十三号发射在即,各系统准... 今天(5月22日),神舟二十三号载人飞船发射任务组织全区合练。目前,发射任务各系统已完成相关功能检查...
对话“耿同学”:举报纯粹是因为... 5月6日,同济大学一纸调查通报震动学界,该校王平教授团队发表于《Nature》的论文被确认存在学术不...
小米发布跑车级SUV,雷军称未... 来源:中国证券报 5月21日晚,小米集团召开人车家全生态新品发布会。小米集团创始人、董事长兼CEO雷...
贵州威宁:智慧大棚赋能 西葫芦... 初夏时节,走进贵州省毕节市威宁自治县草海镇贵州鲜之源农业开发有限公司智慧大棚种植基地,一派丰收景象映...
原创 马... 近日,特朗普政府原本筹备出台的人工智能监管行政令正式宣告搁置。这一政策变动源于美国科技行业核心力量的...
胡锡进:美称暂停对台军售,岛内... 美高级官员公开称,美国正暂停一项对台140亿美元军售案,理由是伊朗战争对弹药的消耗使得美方无力对台供...
消息撤回为何限时2分钟内?微信... 新京报贝壳财经讯(记者韦英姿)5月22日,据“微信派”消息,微信撤回需要2分钟内是考虑到对方在2分钟...
618小屏旗舰手机推荐:一加1... 随着618购物节的临近,不少朋友,尤其是注重便携性和拍照体验的男生,都在寻找一款性能强劲、拍照出色、...