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多实例部署就已经完成。



相关内容

热门资讯

韩杰医疗事故案没有赢家:医生们... 【文/观察者网 宰可欣】2026年7月,儿科医生韩杰因医疗事故罪被判处实刑一年(而非网传有期徒刑一年...
日本原子弹爆炸亲历者反对高市修... 今年是日本广岛、长崎遭受原子弹轰炸81周年。2024年诺贝尔和平奖得主、日本原水爆受害者团体协议会代...
被捕的17岁怀孕少女 编者按:这是作者行侠“我与‘两怀妇女’系列”的投稿。“两怀妇女”对应着社区矫正体系里针对女性犯罪嫌疑...
“自民党对华交流停滞,高市早苗... 8月7日,日本共同社报道称,自日本首相高市早苗去年11月发表涉台错误言论导致日中关系恶化以来,自民党...
银行试点午休1.5小时遭网友吐... 近日,中国建设银行恩施分行发布的一则网点试行午休的公告引发网友热议。第一财经报道,根据通知内容,自8...
电视机背光灯带改造方法 电视机的背光灯带是其最重要的组成部分之一,它能够提供良好的光照条件,让我们在观看电视时视觉更加舒适。...
电视机高压背光故障 电视机高压背光是电视机显示中的关键部分之一,是让电视机显示清晰、亮度充足的重要组成部分。然而,在实际...
电视机背光板闪烁怎么解决 背光板是电视机中一种重要的组件,一旦出现问题,可能会引起电视机的闪烁。电视机背光板闪烁的原因可能有很...
电视机背光灯不通电怎么办 当电视机背光灯不通电时,可能会导致屏幕昏暗或完全黑屏。通常情况下,这种情况可能由以下原因造成: 1...
电视机背光亮不亮怎么办 电视机背光是指电视机内部的一组照明灯,主要用来照亮电视屏幕,使得图像更加清晰。如果电视机背光亮不亮,...