
这篇文章最初发表在mud上。
mysql5.5数据库的多实例部署可以通过以下步骤完成。
1、mysql多实例的原理
2.mysql多实例的特点
3.mysql多实例应用场景
4.mysql5.5多实例部署方法
一、mysql多实例原理
mysql的多实例,简单来说就是打开多个不同的mysql服务端口(比如3306、3307),在一台服务器上运行多个mysql服务进程。这些服务进程通过不同的套接字监控不同的服务端口,以提供它们自己的服务。
这些mysql实例共享一组mysql安装程序,使用不同的my.cnf配置文件、启动程序和数据文件。在提供服务时,mysql多实例在逻辑上相互独立,每个实例根据配置文件的设置获取服务器的相关硬件资源。
二。mysql多实例的特点
2.1服务器资源的有效利用
当单个服务器资源有剩余时,我们可以充分利用剩余的服务器资源提供更多的服务。
2.2节省服务器资源
当公司资金短缺,但数据库需要提供独立的服务和主从同步技术时,最好使用多个实例。
2.3存在资源抢占问题
当一个实例服务高并发或者查询慢时,会消耗更多的内存、CPU、磁盘IO等服务器资源。此时服务器上其他实例提供的访问质量会下降,服务器资源会互相抢占。
三。mysql多实例应用场景
3.1选择资金紧张的公司
当公司业务访问量不太大,又舍不得花钱,但同时又希望不同业务的数据库服务独立,需要主从同步等技术提供备份或读写分离服务时,最好使用多实例。
3.2并发访问并不是一件特别大的事情
当公司业务访问量不太大,服务器资源基本闲置时,这非常适合多实例应用。如果SQL语句优化得好,多实例是一项值得使用的技术。即使并发量很大,只要合理分配系统资源,也不会有大问题。
四。mysql5.5的多实例部署方法
4.1mysql5.5多实例部署方法
Mysql5.5多实例部署方法:一是通过多个配置文件启动多个不同进程的方法,二是官方mysqld_multi。
第一种方法,我们可以把每个实例的配置文件分开,方便管理。第二种方法是将多个实例放在一个配置文件中,管理起来不是很方便。所以这里我们选择第一种方法,后面的实验都是在这种方法下进行的。
4.2MySQL5.5的安装和配置
要配置mysql5.5的多个实例,首先要安装mysql5.5,mysql5.5的安装请参考Mud:MySQL5.5数据库cmake源代码的编译和安装一文。
mysql5.5安装后,先不要启动mysql,因为此时mysql是单实例的。
4.3创建mysql多实例的数据目录
现在让我们创建mysql5.5多实例的数据目录,这里我们创建两个mysql实例3306和3307。创建各自的数据目录,如下所示:
mkdir-p/data/{3306,3307}/data
树-L2/数据/
4.4修改mysql5.5多实例的my.cnf文件
在创建了实例3306和3307的数据目录之后,让我们配置实例3306和3307的my.cnf配置文件。
将mysql5.5安装目录support-files下的my-medium.cnf复制为my.cnf,内容修改如下。现在以3306为例如下:
[客户]
端口=3306
socket=/data/3306/mysql.sock
[mysqld]
端口=3306
socket=/data/3306/mysql.sock
basedir=/usr/local/mysql
数据目录=/数据/3306/数据
跳过外部锁定
密钥缓冲区大小=16M
最大允许数据包数=1M
table_open_cache=64
排序缓冲区大小=512K
网络缓冲长度=8K
读取缓冲区大小=256K
读取缓冲区大小=512K
myisam_sort_buffer_size=8M
跳过名称解析
log-bin=mysql-bin
binlog_format=mixed
max_binlog_size=500M米
服务器id=1
[mysqld_safe]
日志错误=/data/3306/ilanni.err
pid-file=/data/3306/ilanni.pid
[mysqldump]
快的
最大允许数据包=16M
[mysql]
不自动重散列
[myisamchk]
密钥缓冲区大小=20M
排序缓冲区大小=20M
读取缓冲区=2M
写缓冲区=2M
[mysqlhotcopy]
交互式超时
注意图中***标注的部分是我们的主要修改,其他默认不变。
以上是实例3306的my.cnf配置文件。现在让我们配置实例3307的my.cnf。实例3307my.cnf的配置文件我们可以直接复制实例3306的my.cnf文件,然后通过sed命令将这个文件中的3306修改为3307。如下所示:
CP/data/3306/my.cnf/data/3307/my.cnf
sed-I's/3306/3307/g'/data/3307/my.cnf
或者
sed-e's/3306/3307/g'/data/3306/my.cnf>;/data/3307/my.cnf
4.5初始化mysql多实例
在实例3306和3307的my.cnf配置文件被修改后,我们需要使用mysql_install_db命令初始化这两个实例。如下所示:
/usr/local/MySQL/scripts/MySQL_install_db-basedir=/usr/local/MySQL-datadir=/data/3306/data-user=MySQL
/usr/local/MySQL/scripts/MySQL_install_db-basedir=/usr/local/MySQL-datadir=/data/3307/data-user=MySQL
注意,mysql5.5的mysql_install_db在mysql5.5的/usr/local/MySQL/scripts/MySQL_install_db目录下。
检查实例初始化后的情况,如下所示:
树-L3/数据/
从上图可以看出,mysql实例初始化后会创建一个基础数据库。
现在让我们来看看初始化创建文件的属性,如下所示:
从上图可以看出,所有初始化创建的文件都属于mysql。
为什么会这样呢?
这是因为我们初始化了选项-user=mysql。当然,这也是我们所需要的,因为它增加了mysql的安全性。
4.6修改mysql实例的数据库目录权限
在mysql实例初始化之后,我们现在将实例3306和实例3307的数据目录权限重新授予mysql用户。如下所示:
chown-Rmysql:mysql/data/3306
chown-Rmysql:mysql/data/3307
这个地方建议一定要重做,否则启动mysql实例时会提示错误。mysql实例无法启动。
4.7启动mysql5.5的多个实例
现在让我们开始实例。使用以下命令:
/usr/local/MySQL/bin/mysqld_safe-defaults-file=/data/3306/my.CNF&;
/usr/local/MySQL/bin/mysqld_safe-defaults-file=/data/3307/my.CNF&;
psaux|grepmysqld
从上图中,我们可以看到实例3306和3307都已经正常启动。也说明我们的mysql5.5多实例已经配置成功。
实际上,单实例mysql的启动也是由mysqld_safe命令启动的。默认情况下,它会加载/etc/my.cnf文件。
4.8登录mysql5.5多实例
在登录多实例数据库时,我们需要添加实例的socket文件才能正常登录。现在以3306为例。
登录到本地3306实例,如下所示:
MySQL-uroot-p-S/data/3306/MySQL.sock
在本地登录之后,我们在实例3306上创建一个ilanni3306的数据库。如下所示:
创建数据库ilanni3306
显示数据库;
现在,我们远程登录到实例3306,查看新创建的数据库。如下所示:
MySQL-h192.168.1.213-uroot-p-S/data/3306/MySQL.sock
或者:MySQL-h192.168.1.213-uroot-p–p3306
从上图可以看出,3306实例也可以远程连接。
4.9修改mysql5.5多实例root密码
修改实例3306的root密码,并使用mysqladmin命令。如下所示:
mysqladmin-uroot-p密码123456-S/data/3306/mysql.sock
至此,我们的mysql多实例部署已经完成。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)