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



相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...