mysql双实例安装配置_MySQL多实例安装配置实现

首先我们要清楚什么是多实例?所谓多实例就是用多个配置文件来启动多个不同端口的进程,以不同的端口的形式为外提供服务。

明白了多实例 我们下面的操作和配置就一目了然了

首先我们要安装一套基础的应用程序,也就是说单实例这个流程请参考https://www.cnblogs.com/qiuhom-1874/p/9751195.html

1.关闭单实例服务和开机启动

/etc/init.d/mysqld stop

chkconfig mysqld off

2.创建好多实例的目录结构

mkdir -p /mysql_multi_case/{3306..3308}/data

3.分别在各个实例目录下写配置文件和启动脚本,

以下是3306里面的my.cnf配置

[client]

port = 3306

socket = /mysql_multi_case/3306/mysql.sock

[mysqld]

port = 3306

socket = /mysql_multi_case/3306/mysql.sock

basedir = /application/mysql

datadir = /mysql_multi_case/3306/data

open_files_limit = 1024

back_log = 600

max_connections = 800

max_connect_errors = 3000

table_cache = 614

external-locking = FALSE

max_allowed_packet = 8M

sort_buffer_size = 1M

join_buffer_size = 1M

thread_cache_size = 100

thread_concurrency = 2

query_cache_size = 2M

query_cache_limit = 1M

query_cache_min_res_unit = 2k

thread_stack = 192k

tmp_table_size = 2M

max_heap_table_size = 2M

long_query_time = 1

pid-file = /mysql_multi_case/3306/mysqld.pid

log-bin = /mysql_multi_case/3306/mysqld-bin

relay-log = /mysql_multi_case/3306/relay-bin

relay-log-info-file = /mysql_multi_case/3306/relay-log.info

expire_logs_days = 7

key_buffer_size = 16M

read_buffer_size = 1M

read_rnd_buffer_size = 1M

bulk_insert_buffer_size = 1M

lower_case_table_names = 1

skip-name-resolve

slave-skip-errors = 1032,1062

replicate-ignore-db = mysql

server-id = 1

innodb_additional_mem_pool_size = 4M

innodb_buffer_pool_size = 32M

innodb_data_file_path = ibdata1:128M:autoextend

innodb_file_io_threads = 4

innodb_thread_concurrency = 8

innodb_flush_log_at_trx_commit = 2

innodb_log_buffer_size = 2M

innodb_log_file_size = 4M

innodb_log_files_in_group = 3

innodb_max_dirty_pages_pct = 90

innodb_lock_wait_timeout = 120

innodb_file_per_table = 0

[mysqldump]

quick

max_allowed_packet = 2M

[mysqld_safe]

log-error = /mysql_multi_case/3306/mysql_lee3306.err

pid-file = /mysql_multi_case/3306/mysqld.pid

说明:这里说一下配置文件需要注意的是里面的端口信息必须是每个实例的端口是唯一的不能重复。启动脚本都是一样的,只是启动的端口信息不同,密码和用户看自己的喜好配置

以下是3306里面的mysql启动脚本

#!/bin/bash

#

#

#

#init

port=3306

mysql_user="root"

mysql_pwd="admin"

CmdPath="/application/mysql/bin"

mysql_sock="/mysql_multi_case/${port}/mysql.sock"

#startup function

function_start_mysql(){

if [ ! -e "$mysql_sock" ];then

printf "Starting MySQL...\n"

/bin/sh ${CmdPath}/mysqld_safe --defaults-file=/mysql_multi_case/${port}/my.cnf 2>&1 >/dev/null &

else

printf "MySQL is running ... \n"

exit

fi

}

#stop function

function_stop_mysql(){

if [ ! -e "$mysql_sock" ];then

printf "MySQL is stopped ... \n"

exit

else

printf "Stopping MySQL ... \n"

${CmdPath}/mysqladmin -u ${mysql_user} -p${mysql_pwd} -S /mysql_multi_case/${port}/mysql.sock shutdown

fi

}

#restart function

function_restart_mysql(){

printf "Restarting MySQL ... \n"

function_stop_mysql

sleep 2

function_start_mysql

}

case $1 in

start)

function_start_mysql

;;

stop)

function_stop_mysql

;;

restart)

function_restart_mysql

;;

*)

printf "Usage: /mysql_multi_case/${port}/mysql {start|stop|restart} \n"

esac

说明:以上脚本最核心的就是两个命令,第一个就是mysqld_safe --defaults-file指定默认配置文件来启动数据库,第二个命令就是mysqladmin 指定用户名和密码 同时指定mysql.sock文件 shutdown 来关闭mysql对应的实例,restart 的思想就是先调用stop函数,在调用start函数。3307和3308的启动脚本和以上一样的,唯一的区别是端口不同。

4.写好了配置文件和启动脚本后,接下来是对目录结构授权,以及给脚本加可执行权限

chown -R mysql:mysql /mysql_multi_case              ####更改整个目录属组属主

find /mysql_multi_case/ -type f -name 'mysql'|xargs chmod +x ####对所有实例的启动脚本增加可执行权限

5.初始化数据库

cd /application/mysql/scripts

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

说明:数据库的初始化就是执行我们单实例程序的scripts目录里的mysql_install_db脚本,指定basedir 和datadir 还有用户,来初始化数据库,执行以上初始化脚本后 如果返回

Installing MySQL system tables...

OK

Filling help tables...

OK

说明:返回两个OK 那么就表示数据文件已经初始化完成,其实初始化的作用就是导入基本的数据库表格文件呀,系统表呀等,我们可以进到我们初始化指定的data目录里看,多了许多文件。

6.启动每个多实例服务

/mysql_multi_case/3306/mysql start

/mysql_multi_case/3307/mysql start

/mysql_multi_case/3308/mysql start

说明:启动服务就是调用我们之前写启动脚本。

检查服务是否启动起来

ss -lnt|egrep "3306|3307|3308"

说明:如果能够检查到3306、3307、3308这些端口 那么表示服务已经正常运行。

接下来是我们给数据库设置登录密码,默认情况root是空密码

mysqladmin -uroot password admin -S /mysql_multi_case/3306/mysql.sock

mysqladmin -uroot password admin -S /mysql_multi_case/3307/mysql.sock

mysqladmin -uroot password admin -S /mysql_multi_case/3308/mysql.sock

说明:本人是测试环境所有用的是弱密码,正式环境不建议。以上命令的意思就是给root用户设置密码成admin(这是初始化root密码为空的情况),值得注意的是 多实例一定要指定mysql的sock文件,mysqladmin -uroot -padmin password adminn123 -S /mysql_multi_case/3306/mysql.sock这种情况就是给root用户更改密码,其实这些命令不用去记,我们初始化两个ok的界面,系统会告诉我们。

6.设置开机启动

echo "/mysql_multi_case/3306/mysql start" >>/etc/rc.local

echo "/mysql_multi_case/3307/mysql start" >>/etc/rc.local

echo "/mysql_multi_case/3308/mysql start" >>/etc/rc.local

7.登录mysql

7.1本地登录

mysql -uroot -padmin -S /mysql_multi_case/3306/mysql.sock

7.2远程登录

mysql -uroot -padmin -h 192.168.11.107 -P 11319 -S /mysql_multi_case/3306/mysql.sock

说明:多实例的登录和单实例不同,多实例需要指定不同的mysql.sock文件来登录对应的mysql实例,本地登录不需要指定主机和端口,远程登录需要指定主机地址和端口,注意指定端口是-P(大写) -p(小写)是指定密码字符串 -S是指定mysql.sock文件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Linux系统下,可以通过多个实例来运行多个MySQL服务器,每个实例可以拥有独立的配置文件、数据目录和日志文件等。这样可以方便地管理多个不同的MySQL实例,提高系统的可靠性和稳定性。下面简单介绍一下在Linux下MySQL实例安装的过程。 1. 安装MySQL 首先需要安装MySQL,可以通过命令行或者图形界面进行安装。以Ubuntu系统为例,可以使用以下命令进行安装: ``` sudo apt-get update sudo apt-get install mysql-server ``` 2. 创建新的MySQL实例目录 在Linux系统下,每个MySQL实例需要有独立的数据目录和日志文件等。可以使用以下命令创建一个新的MySQL实例目录: ``` sudo mkdir /var/lib/mysql2 ``` 3. 复制MySQL配置文件 每个MySQL实例需要有独立的配置文件,可以通过复制默认配置文件来创建新的配置文件。以Ubuntu系统为例,可以使用以下命令复制默认配置文件: ``` sudo cp /etc/mysql/my.cnf /etc/mysql/my2.cnf ``` 4. 修改新的配置文件 修改新的配置文件,使其指向新的数据目录和日志文件等。以Ubuntu系统为例,可以使用以下命令编辑新的配置文件: ``` sudo vi /etc/mysql/my2.cnf ``` 在文件中修改以下内容: ``` [client] port = 3307 socket = /var/run/mysqld/mysqld2.sock [mysqld_safe] pid-file = /var/run/mysqld/mysqld2.pid socket = /var/run/mysqld/mysqld2.sock [mysqld] user = mysql pid-file = /var/run/mysqld/mysqld2.pid socket = /var/run/mysqld/mysqld2.sock port = 3307 basedir = /usr datadir = /var/lib/mysql2 tmpdir = /tmp log_error = /var/log/mysql/error2.log ``` 其中,需要修改的内容主要是端口号、数据目录、日志文件等。 5. 初始化新的MySQL实例 使用以下命令初始化新的MySQL实例: ``` sudo mysqld --defaults-file=/etc/mysql/my2.cnf --initialize-insecure --user=mysql ``` 其中,--defaults-file参数指定使用新的配置文件,--initialize-insecure参数表示不设置root密码,--user参数表示启动MySQL进程的用户。 6. 启动新的MySQL实例 使用以下命令启动新的MySQL实例: ``` sudo systemctl start mysql@2.service ``` 其中,2表示新的MySQL实例的编号。 至此,多实例MySQL服务器已经成功安装。可以通过以下命令查看多个MySQL实例的状态: ``` sudo systemctl status mysql@*.service ``` 其中,*表示所有的MySQL实例

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值