MySQL多实例的介绍和配置是怎样的?

分类:编程技术 时间:2024-02-20 15:38 浏览:0 评论:0
0
本文将详细讲解MySQL多实例的介绍和配置。文章内容质量较高,小编分享给大家,作为参考。希望您看完本文后能够有一定的相关知识。学习。

1.什么是MySQL多实例

简单来说,MySQL多实例就是在一台服务器上同时开放多个不同的服务端口。运行多个MySQL服务进程。这些服务进程通过不同的套接字监听不同的服务器端口来提供服务。这些MySQL多个实例共享一个MySQL安装程序,使用不同的my.cnf(也可以相同)配置文件、启动程序(也可以相同)和数据文件。在提供服务时,多个MySQL实例在逻辑上显得是独立的。它根据中对应的设置值从服务器获取对应数量的硬件资源配置文件。

多实例的好处是可以有效利用服务器资源,节省服务器资源。缺点是存在相互抢占资源的问题。当某个数据库实例并发量较高或者SQL查询速度较慢时,整个实例会消耗大量的系统CPU、磁盘I/O等资源,导致服务器上其他数据库实例提供的服务质量下降。不同实例获得的资源是相对独立的,不能像虚拟化那样完全隔离。

2.配置MySQL多实例

MySQL的多实例配置可以是单文件、单启动程序的部署方案,但不推荐,风险太高。这里部署的是多配置文件和多启动部署方案。前面我们已经搭建好了MySQL服务,这意味着有一个de端口为3306的故障实例。这里我们再添加一个实例,端口为3307。

(1)为多个实例创建一个数据文件目录,只需自己确定目录

mkdir -p /data/3307/data

(2)创建MySQL多目录实例配置文件,vim /data/3307 /my.cnf,内容如下

[client]port= 3307socket= /data /3307/mysql.sock[mysql]no-auto-rehash[mysqld]user= mysqlport= 3307socket= /data/3307/mysql.sockbasedir= /usr/local /mysqldatadir= /data/3307/dataopen_files_limit= 1024read-onlyback_log= 600max_connections= 800max_connect_errors= 3000#table_cache= 614external-locking= FALSEmax_allowed_pa​​cket= 8Msort_buffer_size= 1Mjoin_buffer_size= 1Mthread_cache_size= 100thread_concurrency= 2query_cache_size= 2Mquery_cache_limit= 1Mquery_cache_min_res_unit= 2K #default_table_type= InnoDBthread_stack= 192K# transaction_isolation= READ-COMMITTEDtmp_table_size= 2Mmax_heap_table_size= 2Mlong_query_time=1 pid-file= /data/3307/mysql.pidrelay-log= /data/3307/relay-binrelay-log-info-file = /data/3307/relay-log。 infobinlog_cache_size= 1Mmax_binlog_cache_size= 1Mmax_binlog_size= 2Mkey_buffer_size= 16Mread_rnd_buffer_size= 1Mbulk_insert_buffer_size= 1Mlower_case_table_names= 1skip-name-resolveslave-skip-errors= 1032,1062replicate-ignore-db=mysqlserver- id= 3 #不同实例的server-id不同。我将端口3306的server_id设置为52是的,这不能是52#innodb_additional_mem_pool_size= 4Minnodb_buffer_pool_size= 32Minnodb_data_file_path = ibdata1:128M:autoextendinnodb_file_io_threads= 4#innodb_threads_concurrency= 8innodb_flush_log_at_trx_commit = 2innodb_log _buffer_size= 2Minnodb_log_file_size= 4Minnodb_log_files_in_group= 3 innodb_max_dirty_pages_pct= 90innodb_lock_wait_timeout= 120innodb_file_per_table= 0[ mysqldump]quickmax_allowed_pa​​cket= 2M[mysql_safe]log-error= /data/3307/mysql_pcm3307.errpid-file=/data/3307/mysqld.pid

(3)创建MySQL多实例的启动文件,vim /data/3307/mysql,内容如下

# !/bin/bash#initport=3307mysql_user="root"mysql_pwd="pcm123456"CmdPath="/usr/local/mysql/bin"mysql_sock="/data/${port}/mysql.sock"#启动函数function_start_mysql() {如果 [ ! -e "$mysql_sock" ];然后printf "启动Mysql...\n"/bin/sh${CmdPath}/mysqld_safe --defaults-file=/data/${port}/my.cnf 2>&1 >/ dev/null & #启动命令 elseprintf "Mysql is running...\n"exitfi}#stop functionfunction_stop_mysql(){if [ ! -e "$mysql_sock" ];thenprintf "Mysql 已停止...\n"exit elseprintf "停止 Mysql... \n"${CmdPath}/mysqladmin -u ${mysql_user} -p${mysql_pwd} -S /data/${port}/mysql.sock shutdown #停止命令fi}#restart functionfunction_restart_mysql(){printf "重新启动Mysql ...\n"function_stop_mysqlsleep 2function_start_mysql}case $1 instart)function_start_mysql;;stop)function_stop_mysql;;restart) function_restart_mysql;;*)printf "用法:/data/${port}/mysql.sh {start|stop|restart}\n"esac

(4)配置MySQL多实例的文件权限

chown -R mysql:mysql /data/find /data -name mysql.sh | 

/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql/ --datadir=/data/ 3307/data/ --user=mysql

查看数据目录3307目录下可以看到多了很多数据文件

(6)启动MySQL多实例数据库,检查3307端口有已启动

/data/3307/mysql.sh start

PS:我一开始启动失败后来我改了data目录下的ibdata1,ib_log,file0和ib_logfile0这三个文件删除后才能正常启动,应该是因为我之前设置MySQL服务的时候初始化过一次,生成的文件再次初始化它不会t 匹配后续配置。

3.登录管理MySQL多实例数据库

(1)登录MySQL数据库

mysql -S /data/3307/mysql.sock #需要指定sock文件,否则会使用默认的3306

(2)如上所示,MySQL root密码仍然为空,我们需要更改它。

mysqladmin -u root 密码 'pcm123456' -S /data/3307/mysql.sock


这里分享MySQL多实例的介绍和配置。希望以上内容能够对大家有所帮助,大家可以借鉴。以获得更多知识。如果您觉得文章不错,可以分享出去,让更多的人看到。

1. 本站所有资源来源于用户上传或网络,仅作为参考研究使用,如有侵权请邮件联系站长!
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > MySQL多实例的介绍和配置是怎样的?

用户评论