本篇文章为大家展示了MySQL中怎么配置多实例,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

一.基本概念

MySQL多实例就是,在一台机器上开启多个不同的服务端口(如:3306,3307,3308...),运行多个MySQL服务进程,这些服务进程通过不同的socket监听不同的端口提供服务。

MySQL可以共用一套安全程序,使用不同的my.cnf配置文件,启动程序,数据文件。

逻辑上是独立的,但是一个实例过载过高的时候会对其他造成影响。

MySQL多实例的作用与问题:

1.有效利用服务器资源

2.节约服务器资源

3.资源互相抢占问题

当某个服务实现并发生很高的或者有慢查询的时候,这个实例会消耗很多的内存。

二.MySQL常见的配置方案

1.多个配置文件,多个启动程序

2.单一配置文件部署方案

三.开始安装

1.安装依赖包

yum -y install ncurses-devel libaio-devel

2.杀掉之前的MySQL进程

pkillmysqldnetstat-ntlpps-ef|grepmysqlrm-f/etc/init.d/mysqld

3.创建多实例的目录结构

mkdir-p/data/{3306,3307}/datatree/data

4.创建多实例的配置文件

多实例启动文件的启动MySQL服务实质:

mysql_safe--defaults-file=/data/3306/my.cnf2>&1>/dev/null&

多实例启动文件的关闭MySQL服务实质

mysqladmin-uroot-p***-S/data/3306/mysql.sockshutdownmy.cnf[client]port=3306socket=/data/3306/mysql.sock[mysql]no-auto-rehash[mysqld]user=mysqlport=3306socket=/data/3306/mysql.sockbasedir=/application/mysqldatadir=/data/3306/dataopen_files_limit=1024back_log=600max_connections=800max_connect_errors=3000table_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#log_long_format#log-error=/data/3306/error.log#log-slow-queries=/data/3306/slow.logpid-file=/data/3306/mysql.pidlog-bin=/data/3306/mysql-binrelay-log=/data/3306/relay-binrelay-log-info-file=/data/3306/relay-log.infobinlog_cache_size=1Mmax_binlog_cache_size=1Mmax_binlog_size=2Mexpire_logs_days=7key_buffer_size=16Mread_buffer_size=1Mread_rnd_buffer_size=1Mbulk_insert_buffer_size=1M#myisam_sort_buffer_size=1M#myisam_max_sort_file_size=10G#myisam_max_extra_sort_file_size=10G#myisam_repair_threads=1#myisam_recoverlower_case_table_names=1skip-name-resolveslave-skip-errors=1032,1062replicate-ignore-db=mysqlserver-id=1innodb_additional_mem_pool_size=4Minnodb_buffer_pool_size=32Minnodb_data_file_path=ibdata1:128M:autoextendinnodb_file_io_threads=4innodb_thread_concurrency=8innodb_flush_log_at_trx_commit=2innodb_log_buffer_size=2Minnodb_log_file_size=4Minnodb_log_files_in_group=3innodb_max_dirty_pages_pct=90innodb_lock_wait_timeout=120innodb_file_per_table=0[mysqldump]quickmax_allowed_packet=2M[mysqld_safe]log-error=/data/3306/mysql_qb3306.errpid-file=/data/3306/mysqld.pid

配置的时候需要注意端口,还有***的日志需要自己知道在哪,方便排错;再有就是有一个"server-id = 1"***每个实例的id不要一样。

mysql(启动关闭服务的脚本)

#!/bin/sh#initport=3306mysql_user="root"mysql_pwd="qb123"CmdPath="/application/mysql/bin"mysql_sock="/data/${port}/mysql.sock"#startupfunctionfunction_start_mysql(){if[!-e"$mysql_sock"];thenprintf"StartingMySQL...\n"/bin/sh${CmdPath}/mysqld_safe--defaults-file=/data/${port}/my.cnf2>&1>/dev/null&elseprintf"MySQLisrunning...\n"exitfi}#stopfunctionfunction_stop_mysql(){if[!-e"$mysql_sock"];thenprintf"MySQLisstopped...\n"exitelseprintf"StopingMySQL...\n"${CmdPath}/mysqladmin-u${mysql_user}-p${mysql_pwd}-S/data/${port}/mysql.sockshutdownfi}#restartfunctionfunction_restart_mysql(){printf"RestartingMySQL...\n"function_stop_mysqlsleep2function_start_mysql}case$1instart)function_start_mysql;;stop)function_stop_mysql;;restart)function_restart_mysql;;*)printf"Usage:/data/${port}/mysql{start|stop|restart}\n"esac

5.授权

chown-Rmysql.mysql/data/find/data/-typef-name"mysql"|xargsls-lfind/data/-typef-name"mysql"|xargschmod+x

如果没做会出现文件找不见问题,希望遇到想到这里。

6.配置mysql命令的全局使用路径

(PATH)

7.初始化(每个端口都做,这里做3306)

cdmysql/scripts/./mysql_install_db--basedir=/application/mysql--datadir=/data/3306/data/--user=mysql

(看见两个OK即为初始化成功)

(这样做是为了创建基本的数据文件)

8.启动服务

/data/3306/mysqlstart/data/3307/mysqlstartnetstat-ntlup|grep330

如果端口没有起来,排查办法如下:

等几十秒,可能起来比较慢

看日志,tail /data/3306/mysql_qb3306.err

细看执行命令的屏幕返回输出

查看系统日志,/var/log/messages

注:由于脚本不是很完善,重启命令***是

/data/3306/mysqlstop/data/3306/mysqlstart

9.多实例登录

mysql-S/data/3306/mysql.sockmysql-S/data/3307/mysql.sock

四.MySQL安全配置

1.为root添加密码

mysqladmin-uroot-S/data/3306/mysql.sockpassword'***'

注:在/data/3306/下的mysql里面也需要改成这个密码,

是mysqladmin不是mysql,,需要mysql服务起来要不然没有mysql.sock文件

正因为上面的原因,由于密码是在一个文件里面,需要设置授权,设置只能root用户操作;

find/data/-typef-name"mysql"-execchmod700{}\;find/data/-typef-name"mysql"-execchownroot.root{}\;find/data/-typef-name"mysql"-execls-l{}\;

然后

pkillmysqld/data/3306/mysqlstop/data/3307/mysqlstop/data/3307/mysqlstart/data/3306/mysqlstartnetstat-ntlup|grep330

2.查询并清理多余用户

(安装MySQL的时候已经操作多)

3.登录

mysql-uroot-p***-S/data/3306/mysql.sock

4.修改密码:

先登录

mysql>alteruser'root'@'localhost'identifiedby'newpassword';

五.增加一个MySQL实例

mkdir-p/data/3308/datacp/data/3306/my.cnf/data/3308/cp/data/3306/mysql/data/3308/cd/data/3308lschown-Rmysql.mysql/data/3308vimmy.cnf:g/3306/s//3308/g-----改端口再改了server_idvimmysql改端口cd/application/mysql/scripts/./mysql_install_db--user=mysql--basedir=/application/mysql--datadir=/data/3308/data//data/3308/mysqlstartmysqladmin-uroot-S/data/3308/mysql.sockpassword'***'mysql-uroot-p***-S/data/3308/mysql.sock(将/data/3308/mysql文件里面的密码也改成一样的)find/data/-typef-name"mysql"-execchmod700{}\;find/data/-typef-name"mysql"-execchownroot.root{}\;find/data/-typef-name"mysql"-execls-l{}\;

上述内容就是MySQL中怎么配置多实例,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。