mysqld_multi测试

mysqld_multi测试

mysql版本:5.7.25-log
在OS上分别安装了两套mysql,
data目录为/mysql/mysql3306、 /mysql/mysql3307 。
端口分别为3306 、3307 
配置文件为:
/mysql/mysql3306/my.cnf
/mysql/mysql3307/my.cnf

参考文档:
https://mysql.net.cn/doc/refman/8.0/en/mysqld-multi.html

--mysqld_multi的配置,在/etc/下建立my.cnf文件,内容如下。这里分别把3306和3307的配置参数粘贴到对应的[mysqld3306]、[mysqld3307]下,感觉比较麻烦

[mysqld_multi]
mysqld     = /mysql/mysql3306/bin/mysqld_safe
mysqladmin = /mysql/mysql3306/bin/mysqladmin
log        = /mysql/mysqld_multi.log
user       = root
#password   = mysql    <<<< mysql 8的写法 ,pass是mysql5.7的写法 
pass       = mysql     

[mysqld3306]
socket     = /tmp/mysql3306.sock
port       = 3306
pid-file   = /mysql/mysql3306/data/redhat762100.pid
datadir    = /mysql/mysql3306/data
language   = /mysql/mysql3306/share/english
user       = root


basedir=/mysql/mysql3306
slow_query_log=1
slow_query_log_file=/mysql/mysql3306/data/slow.log
log-error=/mysql/mysql3306/data/error.log
long_query_time=0.5
server-id=3306
# Disabling symbolic-links is recommended to prevent assorted security risks
log-bin=mysql3306-bin
character_set_server=utf8
binlog_format=row
gtid_mode=on
log_slave_updates=1
enforce_gtid_consistency=1
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin
relay_log_recovery=1

rpl_semi_sync_master_enabled=ON
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd

innodb_buffer_pool_dump_at_shutdown=1
innodb_buffer_pool_load_at_startup=1
#innodb_buffer_pool_dump_now=1
#innodb_buffer_pool_load_now=1

#add 20230928 for mysqldump
secure_file_priv=

[mysqld3307]
socket     = /tmp/mysql3307.sock
port       = 3307
pid-file   = /mysql/mysql3307/data/redhat762100.pid
datadir    = /mysql/mysql3307/data
language   = /mysql/mysql3307/share/english
user       = root



basedir=/mysql/mysql3307
slow_query_log=1
slow_query_log_file=/mysql/mysql3307/data/slow.log
log-error=/mysql/mysql3307/data/error.log
long_query_time=0.5
server-id=3307
# Disabling symbolic-links is recommended to prevent assorted security risks
log-bin=mysql3307-bin
character_set_server=utf8

binlog_format=row
gtid_mode=on
log_slave_updates=1
enforce_gtid_consistency=1
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin
relay_log_recovery=1


rpl_semi_sync_master_enabled=ON
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
relay_log_recovery=on
innodb_buffer_pool_dump_at_shutdown=1
innodb_buffer_pool_load_at_startup=1
#innodb_buffer_pool_dump_now=1
#innodb_buffer_pool_load_now=1

#2019-09-27add
replicate-wild-ignore-table=test.t1
#20230928add for mydqldump
secure_file_priv=

-- 启动3306 ,发现3306启动了,3307没有启动 

[root@redhat762100 mysql3307]# mysqld_multi start  3306
[root@redhat762100 mysql3307]# mysqld_multi report
Reporting MySQL servers
MySQL server from group: mysqld3306 is running
MySQL server from group: mysqld3307 is not running
[root@redhat762100 mysql3307]#

-- 启动3307,发现3307启动了。3306之前已经启动 

[root@redhat762100 mysql3307]# mysqld_multi start  3307
[root@redhat762100 mysql3307]# mysqld_multi report
Reporting MySQL servers
MySQL server from group: mysqld3306 is running
MySQL server from group: mysqld3307 is running
[root@redhat762100 mysql3307]#

-- 查看mysqld_multi.log 日志 ,启动和关闭 

Starting MySQL servers

2023-10-04T09:35:25.811049Z mysqld_safe Logging to '/mysql/mysql3306/data/error.log'.
2023-10-04T09:35:25.845353Z mysqld_safe Starting mysqld daemon with databases from /mysql/mysql3306/data
mysqld_multi log file version 2.16; run: Wed Oct  4 17:35:37 2023

Reporting MySQL servers
MySQL server from group: mysqld3306 is running
MySQL server from group: mysqld3307 is not running
mysqld_multi log file version 2.16; run: Wed Oct  4 17:35:59 2023

Starting MySQL servers

2023-10-04T09:36:00.302580Z mysqld_safe Logging to '/mysql/mysql3307/data/error.log'.
2023-10-04T09:36:00.354252Z mysqld_safe Starting mysqld daemon with databases from /mysql/mysql3307/data
mysqld_multi log file version 2.16; run: Wed Oct  4 17:36:12 2023

Reporting MySQL servers
MySQL server from group: mysqld3306 is running
MySQL server from group: mysqld3307 is running

Stopping MySQL servers

mysqladmin: [Warning] Using a password on the command line interface can be insecure.
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
2023-10-04T10:13:55.862406Z mysqld_safe mysqld from pid file /mysql/mysql3307/data/redhat762100.pid ended
2023-10-04T10:14:05.648488Z mysqld_safe mysqld from pid file /mysql/mysql3306/data/redhat762100.pid ended
mysqld_multi log file version 2.16; run: Wed Oct  4 18:14:09 2023

Reporting MySQL servers
MySQL server from group: mysqld3306 is not running
MySQL server from group: mysqld3307 is not running
mysqld_multi log file version 2.16; run: Wed Oct  4 18:56:42 2023

###测试,使用!include的方法,包含/mysql/mysql3306/my.cnf和/mysql/mysql3307/my.cnf的方法,是否可以(测试结果,不可以)

-- 使用下面的这种写法 ,这种写法 ,无论是mysqld_multi start 3307 还是mysqld_multi start 3307 ,都会发现mysqld_multi report后,都是启动的,但实际上只启动了3306
 

[root@redhat762100 etc]# more my.cnf
[mysqld_multi]
mysqld     = /mysql/mysql3306/bin/mysqld_safe
mysqladmin = /mysql/mysql3306/bin/mysqladmin
log=/mysql/mysqld_multi.log
user       = root
#password   = mysql
pass       = mysql

[mysqld3306]
#socket     = /tmp/mysql3306.sock
#socket     = /mysql/mysql3306.sock
#port       = 3306
pid-file   = /mysql/mysql3306/data/redhat762100.pid
#datadir    = /mysql/mysql3306/data
language   = /mysql/mysql3306/share/english
user       = root

!include /mysql/mysql3306/my.cnf

[mysqld3307]
#socket     = /tmp/mysql3307.sock
#socket     = /mysql/mysql3307.sock
#port       = 3307
pid-file   = /mysql/mysql3307/data/redhat762100.pid
#datadir    = /mysql/mysql3307/data
language   = /mysql/mysql3307/share/english
user       = root


!include /mysql/mysql3307/my.cnf
[root@redhat762100 etc]#

-- 查看进程,实际上只启动了3306 ,并没有3307的socket 和data 

[root@redhat762100 mysql3306]# ps -ef | grep 3307
root     106939      1  0 19:14 pts/2    00:00:00 /bin/sh /mysql/mysql3306/bin/mysqld_safe --pid-file=/mysql/mysql3307/data/redhat762100.pid --language=/mysql/mysql3307/share/english --user=root
root     107903 106939  3 19:14 pts/2    00:00:00 /mysql/mysql3306/bin/mysqld --basedir=/mysql/mysql3306 --datadir=/mysql/mysql3306/data --plugin-dir=/mysql/mysql3306/lib/plugin --user=root --language=/mysql/mysql3307/share/english --log-error=/mysql/mysql3306/data/error.log --pid-file=/mysql/mysql3307/data/redhat762100.pid --socket=/mysql/mysql3306.sock --port=3306
root     107935  59782  0 19:15 pts/1    00:00:00 grep --color=auto 3307
[root@redhat762100 mysql3306]# ps -ef | grep 3306
root      87838  87820  0 17:26 pts/0    00:00:00 tail -f /mysql/mysql3306/data/error.log
root     105651      1  0 19:09 pts/2    00:00:00 /bin/sh /mysql/mysql3306/bin/mysqld_safe --pid-file=/mysql/mysql3306/data/redhat762100.pid --language=/mysql/mysql3306/share/english --user=root
root     106615 105651  0 19:09 pts/2    00:00:00 /mysql/mysql3306/bin/mysqld --basedir=/mysql/mysql3306 --datadir=/mysql/mysql3306/data --plugin-dir=/mysql/mysql3306/lib/plugin --user=root --language=/mysql/mysql3306/share/english --log-error=/mysql/mysql3306/data/error.log --pid-file=/mysql/mysql3306/data/redhat762100.pid --socket=/mysql/mysql3306.sock --port=3306
root     106939      1  0 19:14 pts/2    00:00:00 /bin/sh /mysql/mysql3306/bin/mysqld_safe --pid-file=/mysql/mysql3307/data/redhat762100.pid --language=/mysql/mysql3307/share/english --user=root
root     107903 106939  2 19:14 pts/2    00:00:00 /mysql/mysql3306/bin/mysqld --basedir=/mysql/mysql3306 --datadir=/mysql/mysql3306/data --plugin-dir=/mysql/mysql3306/lib/plugin --user=root --language=/mysql/mysql3307/share/english --log-error=/mysql/mysql3306/data/error.log --pid-file=/mysql/mysql3307/data/redhat762100.pid --socket=/mysql/mysql3306.sock --port=3306
root     107940  59782  0 19:15 pts/1    00:00:00 grep --color=auto 3306
[root@redhat762100 mysql3306]#

--连接到mysql,只能连接到3306 ,无法连接到3307 

[root@redhat762100 mysql3306]# mysql -uroot -h127.0.0.1 -p -P3307
Enter password:
ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (111)
[root@redhat762100 mysql3306]# mysql -uroot -h127.0.0.1 -p -P3306
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 5.7.25-log MySQL Community Server (GPL)

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

root@db 19:18:  [(none)]>

-- 当把/etc/my.cnf的参数中,include去掉,把3306和3307的参数,分别写在[mysqld3306]和[mysqld3307]下的时候,再次查看mysqld_multi report,发现起来的库是3306
再次印证了include的写法不成立 

[root@redhat762100 etc]# mysqld_multi report
Reporting MySQL servers
MySQL server from group: mysqld3306 is running
MySQL server from group: mysqld3307 is not running
[root@redhat762100 etc]#

碰到的问题 :
问题1 
root@localhost  无法访问 。
ALTER USER 'root'@'localhost' IDENTIFIED   BY  'mysql'

问题2 
mysqld_multi start  可以启动
mysqld_multi stop无法关闭,提示如下:

Stopping MySQL servers

mysqladmin: [Warning] Using a password on the command line interface can be insecure.
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: YES)'
mysqld_multi log file version 2.16; run: Wed Oct  4 18:06:32 2023

解决方法1  
mysqld_multi stop 3306 --password=mysql 

解决方法2  
[mysqld_multi] 中,是pass,而不是password  ,mysql 8.0是password  

end 

你可能感兴趣的:(MySQL,mysql)