一台电脑上安装多个mysql数据库_使用mysqld_multi在一台主机上管理多个mysql数据库...

主要用途:通过一条命令管理主机上的多个mysql instance,效果如下:

c4c48d83b612f678952bed7d054cb113.png

447fa254f1904268bc66316db1078590.png

8bceb5fb7558670e11438f610eed4017.png

步骤:

1. 安装软件:

unzip mysql-advanced-5.7.23-linux-glibc2.12-x86_64.tar.gz

设置环境变量:

vi ~/.bash_profile

# added for mysql

MYSQL_HOME=/u01/app/oracle/product/mysql

MYSQLDATADIR=/oradata01/wshi_data

export PATH=${MYSQL_HOME}/bin:.:$PATH

export PS1="

`hostname -s`*\${mysqlid}-\${PWD}

>"

alias alert1="tail -f ${MYSQLDATADIR}/db1/logs/error_*.log"

alias alert2="tail -f ${MYSQLDATADIR}/db2/logs/error_*.log"

alias alert3="tail -f ${MYSQLDATADIR}/db3/logs/error_*.log"

alias wshi_mysql="mysql --login-path=root wshi"cd u01/app/oracle/product/mysql

创建文件目录:

mkdir -p oradata01/wshi_data/db1/data oradata01/wshi_data/db2/data oradata01/wshi_data/db3/data

mkdir -p oradata01/wshi_data/db1/logs/binlogs/ oradata01/wshi_data/db2/logs/binlogs/ oradata01/wshi_data/db3/logs/binlogs/

2. 编辑db配置文件

db1.cnf

[mysqld]

socket=/tmp/mysql_wshi_db1.sock

port=3306

datadir=/oradata01/wshi_data/db1/data

character-set-server=utf8mb4

innodb_buffer_pool_size=256M

innodb_undo_tablespaces=2

#innodb bin log

innodb_log_file_size=50M

innodb_log_files_in_group=3

#slow log

slow_query_log=OFF

server_id=1

log_bin=/oradata01/wshi_data/db1/logs/binlogs/wshi_binlog

max_binlog_size=10485760

binlog_format=ROW

expire_logs_days=1

user=mysql1

symbolic-links=0

[mysqld_safe]

log-error=/oradata01/wshi_data/db1/logs/error_wshi_db1.log

pid-file=/oradata01/wshi_data/db1/data/mysql_wshi_db1.pid

socket=/tmp/mysql_wshi_db1.sock

[mysqladmin]

socket=/tmp/mysql_wshi_db1.sock

[mysql]

socket=/tmp/mysql_wshi_db1.sock

[mysqldump]

socket=/tmp/mysql_wshi_db1.sock

复制db1.cnf为db2.cnf,db3.cnf并替换db1为db2/db3,修改端口和user=mysql3

3. 初始化数据库:

mysqld --defaults-file='/oradata01/wshi_data/my1.ini' --initialize

mysqld --defaults-file='/oradata01/wshi_data/my2.ini' --initialize

mysqld --defaults-file='/oradata01/wshi_data/my3.ini' --initialize

修改密码:

mysqld_safe --defaults-file='/oradata01/wshi_data/db1.cnf' --skip-grant-tables  &

mysql --defaults-file='/oradata01/wshi_data/db1.cnf' -u root

update mysql.user set authentication_string=password('Root123'), password_expired= 'N', password_last_changed= now() where user= 'root';

flush privileges;"

同理在db2与db3上修改root密码:

mysql --defaults-file='/oradata01/wshi_data/db3.cnf' -u root -e "update mysql.user set authentication_string= password('Root123'), password_expired= 'N', password_last_changed= now() where user= 'root';flush privileges;"

重启数据库:

mysqladmin --defaults-file='/oradata01/wshi_data/db1.cnf' -u root -pRoot123 shutdown

mysqld_safe --defaults-file='/oradata01/wshi_data/db1.cnf' &

4. 配置mysqld_multi

vi all.cnf

>cat all.cnf

[mysqld_multi]

mysqld=/u01/app/oracle/product/mysql/bin/mysqld_safe

mysqladmin=/u01/app/oracle/product/mysql/bin/mysqladminuser='root'

password='Root_123'[mysqld1]

defaults-file='/oradata01/wshi_data/db1.cnf'

socket=/tmp/mysql_wshi_db1.sock

port       = 3306

pid-file   = oradata01/wshi_data/db1/data/mysql_wshi_db1.pid

datadir    = oradata01/wshi_data/db1/data

user       = mysql1

[mysqld2]

defaults-file='/oradata01/wshi_data/db2.cnf'

socket=/tmp/mysql_wshi_db2.sock

port       = 3307

pid-file   = oradata01/wshi_data/db2/data/mysql_wshi_db2.pid

datadir    = oradata01/wshi_data/db2/data

user       = mysql2

[mysqld3]

defaults-file='/oradata01/wshi_data/db3.cnf'

socket=/tmp/mysql_wshi_db3.sock

port       = 3308

pid-file   = oradata01/wshi_data/db3/data/mysql_wshi_db3.pid

datadir    = oradata01/wshi_data/db3/data

user       = mysql3

#注:defaults-file必须放到第一行

5. 用法:

mysqld_multi [options] {start|stop|reload|report}

reload重启,report显示数据库状态

启动数据库(不需要用户密码):

mysqld_multi --defaults-file='./all.cnf' start 1-3

停止数据库:

mysqld_multi --defaults-file='./all.cnf' --user=root --password=Root123 report|reload 1-3|1,3

注:

1. all.cnf中[mysqld_multi]的用户密码可以删除,停止数据库时必须使用--password和--user指定用户和密码。

2. reload的作用是stop然后restart,但实际中不起作用。

运行命令示例:

#显示实例1,2,3运行状态

mysqld_multi --defaults-file='./all.cnf' --user=root --password=Root123 report 1-3

#启动2,3实例

mysqld_multi --defaults-file='./all.cnf' start 2,3

#停止实例3

mysqld_multi --defaults-file='./all.cnf' --user=root --password=Root123 stop 3

--如果不想每次输入--defaults-file='./all.cnf',可以将其放到默认文件/etc/my.cnf中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值