千家信息网

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

发表于:2024-09-27 作者:千家信息网编辑
千家信息网最后更新 2024年09月27日,这篇文章将为大家详细讲解有关MySQL的多实例介绍及配置是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1.什么是MySQL多实例简单来说,My
千家信息网最后更新 2024年09月27日MySQL的多实例介绍及配置是怎样的

这篇文章将为大家详细讲解有关MySQL的多实例介绍及配置是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

1.什么是MySQL多实例

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

多实例的好处在于它能有效利用服务器的资源,节约服务器资源,弊端会存在资源的相互抢占的问题。当某个数据库实例并发很高或有SQL慢查询时,整个实例会消耗大量的系统CPU、磁盘I/O等资源,导致服务器上的其他数据库实例提供服务的质量一起下降。不同实例获取的资源是相对独立的,无法像虚拟化一样完全隔离。

2.配置MySQL多实例

MySQL的多实例配置可以是单一文件、单一启动程序的部署方案,但是不推荐,风险太高了。这里部署的是多配置文件,多启动的部署方案。在前面,我们已经搭建了MySQL的服务,也就是存在了一个默认的实例,端口为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_packet      = 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_packet      = 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"#startup functionfunction_start_mysql(){        if [ ! -e "$mysql_sock" ];then                printf "Starting Mysql...\n"                /bin/sh ${CmdPath}/mysqld_safe --defaults-file=/data/${port}/my.cnf 2>&1 >/dev/null &    #启动命令        else                printf "Mysql is running...\n"        exit        fi}#stop functionfunction_stop_mysql(){        if [ ! -e "$mysql_sock" ];then                printf "Mysql is stopped...\n"                exit         else                printf "Stoping Mysql...\n"                ${CmdPath}/mysqladmin -u ${mysql_user} -p${mysql_pwd} -S /data/${port}/mysql.sock shutdown    #停止命令        fi}#restart functionfunction_restart_mysql(){        printf "Restart Mysql...\n"        function_stop_mysql        sleep 2        function_start_mysql}case $1 instart)        function_start_mysql        ;;stop)        function_stop_mysql        ;;restart)        function_restart_mysql        ;;*)        printf "Usage:/data/${port}/mysql.sh {start|stop|restart}\n"esac

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

chown -R mysql:mysql /data/find /data -name mysql.sh |xargs chmod 700    #修改权限为700,因为里面有数据库的密码,要求较高的安全性

(5)初始化MySQL多实例的数据库文件

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

查看3307目录下data目录,可以看到多出了不少的数据文件

(6)启动MySQL多实例数据库,检查看到3307的端口已经启动

/data/3307/mysql.sh start

PS:一开始我的启动是失败了的,后来把data目录下的ibdata1,ib_logfile0,ib_logfile0这三个文件删除之后才正常启动。应该是因为我之前搭建MySQL服务的时候初始化了一次,再次这样初始化生成的文件和后来的配置不符合。

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

(1)登陆MySQL数据库

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

(2)上面看到MySQL的root的密码还是空的,我们需要修改。

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


关于MySQL的多实例介绍及配置是怎样的就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

实例 文件 服务 配置 数据 数据库 不同 服务器 端口 资源 目录 内容 程序 相同 同时 命令 多个 密码 文章 方案 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 上海威力网络技术应用 浙江软件开发技术 静安区市场软件开发服务大概费用 北京冬奥软件开发 如何知道域名是否指向服务器 网络安全画怎么画最简单 怎么查看数据库磁盘读写速度 numpy是数据库吗 苹果电脑网页打不开代理服务器 国电南瑞 网络安全 宿州网络安全宣传周 网络安全大赛英文缩写 服务器映射到外网安全 服务器端没有软件狗 挖矿借别人的服务器中转 网络安全与信息化方向考研 qq语音电话会通过服务器转发吗 创新网络技术服务经验丰富 有关于网络安全教育的文章 前端怎么配置服务器地址 国际知名数据库 保护网络安全从你我做起作文 创建数据库表之间的关系图; 有关网络安全主题画一等奖 宝德服务器如何通过bmc装系统 数据库管理的数据简称 阿里巴巴网络技术限公司 ie修改代理服务器 青岛信息网络安全 陕西定制软件开发中心
0