• 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]下,感觉比较麻烦

    1. [mysqld_multi]
    2. mysqld = /mysql/mysql3306/bin/mysqld_safe
    3. mysqladmin = /mysql/mysql3306/bin/mysqladmin
    4. log = /mysql/mysqld_multi.log
    5. user = root
    6. #password = mysql <<<< mysql 8的写法 ,pass是mysql5.7的写法
    7. pass = mysql
    8. [mysqld3306]
    9. socket = /tmp/mysql3306.sock
    10. port = 3306
    11. pid-file = /mysql/mysql3306/data/redhat762100.pid
    12. datadir = /mysql/mysql3306/data
    13. language = /mysql/mysql3306/share/english
    14. user = root
    15. basedir=/mysql/mysql3306
    16. slow_query_log=1
    17. slow_query_log_file=/mysql/mysql3306/data/slow.log
    18. log-error=/mysql/mysql3306/data/error.log
    19. long_query_time=0.5
    20. server-id=3306
    21. # Disabling symbolic-links is recommended to prevent assorted security risks
    22. log-bin=mysql3306-bin
    23. character_set_server=utf8
    24. binlog_format=row
    25. gtid_mode=on
    26. log_slave_updates=1
    27. enforce_gtid_consistency=1
    28. relay-log-index=slave-relay-bin.index
    29. relay-log=slave-relay-bin
    30. relay_log_recovery=1
    31. rpl_semi_sync_master_enabled=ON
    32. symbolic-links=0
    33. # Settings user and group are ignored when systemd is used.
    34. # If you need to run mysqld under a different user or group,
    35. # customize your systemd unit file for mariadb according to the
    36. # instructions in http://fedoraproject.org/wiki/Systemd
    37. innodb_buffer_pool_dump_at_shutdown=1
    38. innodb_buffer_pool_load_at_startup=1
    39. #innodb_buffer_pool_dump_now=1
    40. #innodb_buffer_pool_load_now=1
    41. #add 20230928 for mysqldump
    42. secure_file_priv=
    43. [mysqld3307]
    44. socket = /tmp/mysql3307.sock
    45. port = 3307
    46. pid-file = /mysql/mysql3307/data/redhat762100.pid
    47. datadir = /mysql/mysql3307/data
    48. language = /mysql/mysql3307/share/english
    49. user = root
    50. basedir=/mysql/mysql3307
    51. slow_query_log=1
    52. slow_query_log_file=/mysql/mysql3307/data/slow.log
    53. log-error=/mysql/mysql3307/data/error.log
    54. long_query_time=0.5
    55. server-id=3307
    56. # Disabling symbolic-links is recommended to prevent assorted security risks
    57. log-bin=mysql3307-bin
    58. character_set_server=utf8
    59. binlog_format=row
    60. gtid_mode=on
    61. log_slave_updates=1
    62. enforce_gtid_consistency=1
    63. relay-log-index=slave-relay-bin.index
    64. relay-log=slave-relay-bin
    65. relay_log_recovery=1
    66. rpl_semi_sync_master_enabled=ON
    67. symbolic-links=0
    68. # Settings user and group are ignored when systemd is used.
    69. # If you need to run mysqld under a different user or group,
    70. # customize your systemd unit file for mariadb according to the
    71. # instructions in http://fedoraproject.org/wiki/Systemd
    72. relay_log_recovery=on
    73. innodb_buffer_pool_dump_at_shutdown=1
    74. innodb_buffer_pool_load_at_startup=1
    75. #innodb_buffer_pool_dump_now=1
    76. #innodb_buffer_pool_load_now=1
    77. #2019-09-27add
    78. replicate-wild-ignore-table=test.t1
    79. #20230928add for mydqldump
    80. secure_file_priv=

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

    1. [root@redhat762100 mysql3307]# mysqld_multi start 3306
    2. [root@redhat762100 mysql3307]# mysqld_multi report
    3. Reporting MySQL servers
    4. MySQL server from group: mysqld3306 is running
    5. MySQL server from group: mysqld3307 is not running
    6. [root@redhat762100 mysql3307]#

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

    1. [root@redhat762100 mysql3307]# mysqld_multi start 3307
    2. [root@redhat762100 mysql3307]# mysqld_multi report
    3. Reporting MySQL servers
    4. MySQL server from group: mysqld3306 is running
    5. MySQL server from group: mysqld3307 is running
    6. [root@redhat762100 mysql3307]#

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

    1. Starting MySQL servers
    2. 2023-10-04T09:35:25.811049Z mysqld_safe Logging to '/mysql/mysql3306/data/error.log'.
    3. 2023-10-04T09:35:25.845353Z mysqld_safe Starting mysqld daemon with databases from /mysql/mysql3306/data
    4. mysqld_multi log file version 2.16; run: Wed Oct 4 17:35:37 2023
    5. Reporting MySQL servers
    6. MySQL server from group: mysqld3306 is running
    7. MySQL server from group: mysqld3307 is not running
    8. mysqld_multi log file version 2.16; run: Wed Oct 4 17:35:59 2023
    9. Starting MySQL servers
    10. 2023-10-04T09:36:00.302580Z mysqld_safe Logging to '/mysql/mysql3307/data/error.log'.
    11. 2023-10-04T09:36:00.354252Z mysqld_safe Starting mysqld daemon with databases from /mysql/mysql3307/data
    12. mysqld_multi log file version 2.16; run: Wed Oct 4 17:36:12 2023
    13. Reporting MySQL servers
    14. MySQL server from group: mysqld3306 is running
    15. MySQL server from group: mysqld3307 is running
    16. Stopping MySQL servers
    17. mysqladmin: [Warning] Using a password on the command line interface can be insecure.
    18. mysqladmin: [Warning] Using a password on the command line interface can be insecure.
    19. 2023-10-04T10:13:55.862406Z mysqld_safe mysqld from pid file /mysql/mysql3307/data/redhat762100.pid ended
    20. 2023-10-04T10:14:05.648488Z mysqld_safe mysqld from pid file /mysql/mysql3306/data/redhat762100.pid ended
    21. mysqld_multi log file version 2.16; run: Wed Oct 4 18:14:09 2023
    22. Reporting MySQL servers
    23. MySQL server from group: mysqld3306 is not running
    24. MySQL server from group: mysqld3307 is not running
    25. 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
     

    1. [root@redhat762100 etc]# more my.cnf
    2. [mysqld_multi]
    3. mysqld = /mysql/mysql3306/bin/mysqld_safe
    4. mysqladmin = /mysql/mysql3306/bin/mysqladmin
    5. log=/mysql/mysqld_multi.log
    6. user = root
    7. #password = mysql
    8. pass = mysql
    9. [mysqld3306]
    10. #socket = /tmp/mysql3306.sock
    11. #socket = /mysql/mysql3306.sock
    12. #port = 3306
    13. pid-file = /mysql/mysql3306/data/redhat762100.pid
    14. #datadir = /mysql/mysql3306/data
    15. language = /mysql/mysql3306/share/english
    16. user = root
    17. !include /mysql/mysql3306/my.cnf
    18. [mysqld3307]
    19. #socket = /tmp/mysql3307.sock
    20. #socket = /mysql/mysql3307.sock
    21. #port = 3307
    22. pid-file = /mysql/mysql3307/data/redhat762100.pid
    23. #datadir = /mysql/mysql3307/data
    24. language = /mysql/mysql3307/share/english
    25. user = root
    26. !include /mysql/mysql3307/my.cnf
    27. [root@redhat762100 etc]#

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

    1. [root@redhat762100 mysql3306]# ps -ef | grep 3307
    2. 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
    3. 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
    4. root 107935 59782 0 19:15 pts/1 00:00:00 grep --color=auto 3307
    5. [root@redhat762100 mysql3306]# ps -ef | grep 3306
    6. root 87838 87820 0 17:26 pts/0 00:00:00 tail -f /mysql/mysql3306/data/error.log
    7. 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
    8. 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
    9. 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
    10. 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
    11. root 107940 59782 0 19:15 pts/1 00:00:00 grep --color=auto 3306
    12. [root@redhat762100 mysql3306]#

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

    1. [root@redhat762100 mysql3306]# mysql -uroot -h127.0.0.1 -p -P3307
    2. Enter password:
    3. ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (111)
    4. [root@redhat762100 mysql3306]# mysql -uroot -h127.0.0.1 -p -P3306
    5. Enter password:
    6. Welcome to the MySQL monitor. Commands end with ; or \g.
    7. Your MySQL connection id is 8
    8. Server version: 5.7.25-log MySQL Community Server (GPL)
    9. Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
    10. Oracle is a registered trademark of Oracle Corporation and/or its
    11. affiliates. Other names may be trademarks of their respective
    12. owners.
    13. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    14. root@db 19:18: [(none)]>

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

    1. [root@redhat762100 etc]# mysqld_multi report
    2. Reporting MySQL servers
    3. MySQL server from group: mysqld3306 is running
    4. MySQL server from group: mysqld3307 is not running
    5. [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 

  • 相关阅读:
    C#:in、out、ref关键字
    CAS机制的的解释和总结
    Deno Deploy正式添加对静态文件支持
    Word中的5个技巧,都很实用,收藏!
    适用于WPF的设计模式
    Spring学习篇(六)
    Nacos Discovery服务治理
    微信小程序开发---基本组件的使用
    云计算实验3 基于Scala编程语言的Spark数据预处理实验
    【ES6】require、export和import的用法
  • 原文地址:https://blog.csdn.net/xxzhaobb/article/details/133560651