MySQL多实例配置(两) 刺骨的言语ヽ痛彻心扉 2022-04-10 10:26 167阅读 0赞 MySQL操作和维护一个集中的数据库的。它可以由一个单一的执行MySQL在数据库服务器,部署多MySQL示例。这个功能是由mysqld\_multi实现。mysqld\_multimysqld的服务进程。这些mysqld服务进程程序能够用不同的socket或是监听于不同的端口,同一时候将数据文件分布到不同的磁盘以分散IO。 mysqld\_multi提供简单的命令用于启动。关闭和报告所管理的服务器的状态。从而降低生产环境的维护成本。方便兴许的迁移和清理等工作,借助多实例绑定的方式提高服务器的总体资源利用率.对于多实例的配置有2种方式,一种是在my.cnf为全部实例提供配置,一种是使用每个实例一个配置文件。 本文主要描写叙述另外一种方式。 第一种多实例配置方式请參考:[MySQL多实例配置(一) ][MySQL_] 有关MySQL单实例的安装请參考:[Linux 下MySQL源代码安装完整版 ][Linux _MySQL_] 1、各数据库多实例的差异 MSSQL MSSQL中的实例指的是一个SQL server服务器上仅有一个缺省实例。缺省实例名即为机器名ServerName(或IP)。 假设在同一台机器上再安装SQL server,我们能够对实例命名如ServerName/InstanceName。 即一台SQL server服务器上能够存在多个不同的实例。一个实例下能够存在多个不同的数据库。 对于不同实例下的数据库的訪问,使用ServerName/InstanceName:PortNo就可以实现訪问,缺省实例为ServerName:PortNo。 对不同的实例配置IP地址,相关的訪问协议。端口等等。 实例的可訪问性须要启动该实例相应的相关服务。 此处须要注意的是实例名和实例的服务名并非同样的。 缺省的实例的服务名为MSSQLSERVER。而命名实例的服务名为MSSQL$INSTANCE\_NAME。 Oracle 一个Oracle Server由一个Oracle实例和一个Oracle数据库组成。即:Oracle Server = Oracle Instance + Oracle Database 在Oracle的实例主要是由SGA。PGA以及一堆的后台进程来组成。此称之为实例。 一系列物理文件的集合包含控制文件、数据文件、联机日志文件、參数文件、密码文件等称之为数据库。 一个实例仅仅能訪问一个数据库,一个数据库能够被多个实例訪问。 MySQL MySQL实例的概念与MSSQL差点儿相同。一个MySQL实例下能够存在或訪问N个数据库。 不同的实例间能够用不同的端口号来区分,各个实例的数据能够使用不同的磁盘文件夹。 MySQL多实例通过mysqld\_multi工具来进行管理。 2、现有的环境 mysql安装路径: /u01/app/mysql mysql数据路径: /u01/app/mysqldata/data3306 mysql端口号: 3306 mysql 版本号:5.6.12 Source distribution OS 环境:SUSE Linux Enterprise Server 11 SP3 (x86\_64) 3、初始化实例 \#为新实例创建数据文件夹并赋权 suse11:~ \# mkdir -p /u01/app/mysqldata/data3606 suse11:~ \# mkdir -p /u01/app/mysqldata/data3706 suse11:~ \# chown mysql:mysql -R /u01/app/mysqldata/data3606 suse11:~ \# chown mysql:mysql -R /u01/app/mysqldata/data3706 \#初始化实例 suse11:~ \# cd /u01/app/mysql suse11:/u01/app/mysql \# ./scripts/mysql\_install\_db --user=mysql --ldata=/u01/app/mysqldata/data3606/ suse11:/u01/app/mysql \# ./scripts/mysql\_install\_db --user=mysql --ldata=/u01/app/mysqldata/data3706/ \# Author : Leshami \# Blog :[http://blog.csdn.net/leshami][http_blog.csdn.net_leshami] 4、配置各实例的my.cnf文件 \# vi /u01/app/mysqldata/data3606/my3606.cnf \[mysqld\] socket = /tmp/mysql3606.sock port = 3606 pid-file = /u01/app/mysqldata/data3606/mysql3606.pid datadir = /u01/app/mysqldata/data3606 basedir = /u01/app/mysql user = mysql server-id=3606 \[client\] port = 3606 socket = /tmp/mysql3606.sock \[mysql\] no-auto-rehash socket = /tmp/mysql3606.sock prompt=\\\\u@\\\\h\[\\\\d\]> \\\\ \# vi /u01/app/mysqldata/data3706/my3706.cnf \[mysqld\] socket = /tmp/mysql3706.sock port = 3706 pid-file = /u01/app/mysqldata/data3706/mysql3706.pid datadir = /u01/app/mysqldata/data3706 basedir = /u01/app/mysql user = mysql server-id=3706 \[client\] port = 3706 socket = /tmp/mysql3706.sock \[mysql\] no-auto-rehash socket = /tmp/mysql3706.sock prompt=\\\\u@\\\\h\[\\\\d\]> \\\\ suse11:~ \# chown -R mysql:mysql /u01/app/mysqldata/data3606/my3606.cnf suse11:~ \# chown -R mysql:mysql /u01/app/mysqldata/data3706/my3706.cnf 5、启动关闭多实例 suse11:~ \# mysqld\_safe --defaults-file=/u01/app/mysqldata/data3606/my3606.cnf & suse11:~ \# mysqld\_safe --defaults-file=/u01/app/mysqldata/data3706/my3706.cnf & suse11:~ \# netstat -nltp|grep mysql tcp 0 0 :::3606 :::\* LISTEN 64277/mysqld tcp 0 0 :::3706 :::\* LISTEN 64597/mysqld suse11:~ \# mysqladmin -uroot password 'xxx' -S /tmp/mysql3606.sock suse11:~ \# mysqladmin -uroot password 'xxx' -S /tmp/mysql3706.sock \#以下使用套接字方式连接到实例 suse11:~ \# mysql -uroot -pxxx -S /tmp/mysql3606.sock root@localhost\[(none)\]> suse11:~ \# mysql -uroot -pxxx -S /tmp/mysql3706.sock root@localhost\[(none)\]> \#以下使用TCP方式连接到实例 suse11:~ \# mysql -uroot -pxxx -P3606 --protocol=tcp root@localhost\[(none)\]> exit suse11:~ \# mysql -uroot -pxxx -P3706 --protocol=tcp root@localhost\[(none)\]> \#关闭mysql实例 suse11:~ \# mysqladmin -uroot -pxxx -S /tmp/mysql3606.sock shutdown suse11:~ \# mysqladmin -uroot -pxxx -S /tmp/mysql3706.sock shutdown 版权声明:本文博主原创文章。博客,未经同意不得转载。 [MySQL_]: http://blog.csdn.net/leshami/article/details/40339167 [Linux _MySQL_]: http://blog.csdn.net/leshami/article/details/40074483 [http_blog.csdn.net_leshami]: http://blog.csdn.net/leshami
还没有评论,来说两句吧...