千家信息网

转载连接 http://blog.itpub.net/12679300/viewspace-2144619/

发表于:2024-11-24 作者:千家信息网编辑
千家信息网最后更新 2024年11月24日,【前言】测试环境中经常需要多台mysql数据库来进行各种环境和场景的模拟,由于测试环境中的资源一般都是比较有限的,也就需要在一台服务器上面搭建多个mysql数据库来完成测试的需求。本文档介绍在Cent
千家信息网最后更新 2024年11月24日转载连接 http://blog.itpub.net/12679300/viewspace-2144619/

【前言】测试环境中经常需要多台mysql数据库来进行各种环境和场景的模拟,由于测试环境中的资源一般都是比较有限的,也就需要在一台服务器上面搭建多个mysql数据库来完成测试的需求。本文档介绍在Centos6.4的环境中安装多个mysql 5.7数据库的操作方法。

【1】mysql数据库软件的安装

mysql数据库软件官方提供了三种的安装文件和方法,如下:

  • RPM方式安装

  • 二进制方式安装

  • 源码编译安装

虽然源码安装的方式比较麻烦,但是个人还是习惯用源码的方案安装,mysql5.7的安装跟早起5.5的安装方式和步骤也几乎一样所以这里就不再说明了。


【2】创建多个数据库

软件的安装完成其实都是一样的,就是创建数据库的时候有点不一样。

2.1 进行数据文件目录的规划,本环境安装了5个数据库,在/data下面创建5个文件夹,并用端口号区分


点击( 此处 )折叠或打开

  1. [ root@db01 data ] # pwd

  2. /data

  3. [ root@db01 data ] # ll

  4. drwxr - xr - x . 6 mysql mysql 4096 7月 8 05 : 00 mysql3306

  5. drwxr - xr - x . 6 mysql mysql 4096 7月 20 21 : 46 mysql3307

  6. drwxr - xr - x . 7 mysql mysql 4096 7月 20 21 : 46 mysql3308

  7. drwxr - xr - x . 6 mysql mysql 4096 7月 20 21 : 46 mysql3309

  8. drwxr - xr - x . 5 mysql mysql 4096 7月 20 21 : 46 mysql3310

2.2 进行参数文件的配置


点击( 此处 )折叠或打开

  1. [ root@db01 data ] # vi /etc/my . cnf


  2. [ mysqld_multi ]

  3. mysqld = /usr/ local / mysql/bin/mysqld_safe

  4. #basedir = /usr/ local / mysql

  5. mysqladmin = /usr/ local / mysql/bin/mysqladmin

  6. user = mysql

  7. pass = mysql

  8. #password = mysql

  9. #bindir = /usr/ local / mysql/bin


  10. [ mysqld7 ]

  11. port = 3307

  12. socket = /tmp/mysql . sock7

  13. pid - file = /data/mysql3307/hostname . pid7

  14. datadir = /data/mysql3307

  15. user = mysql

  16. basedir = /usr/ local / mysql

  17. log - bin = /data/mysql3307/bin - log

  18. server_id = 7

  19. gtid_mode = ON

  20. enforce - gtid - consistency = TRUE

  21. log_slave_updates = ON

  22. #skip - grant - tables


  23. [ mysqld8 ]

  24. socket = /tmp/mysql . sock8

  25. port = 3308

  26. pid - file = /data/mysql3308/hostname . pid8

  27. datadir = /data/mysql3308

  28. user = mysql

  29. basedir = /usr/ local / mysql

  30. #skip - grant - tables

  31. log - bin = /data/mysql3308/bin - log

  32. server_id = 8

  33. gtid_mode = ON

  34. enforce - gtid - consistency = TRUE

  35. log_slave_updates = ON


  36. [ mysqld9 ]

  37. socket = /tmp/mysql . sock9

  38. port = 3309

  39. pid - file = /data/mysql3309/hostname . pid9

  40. datadir = /data/mysql3309

  41. user = mysql

  42. basedir = /usr/ local / mysql

  43. #skip - grant - tables

  44. log - bin = /data/mysql3309/bin - log

  45. server_id = 9

  46. gtid_mode = ON

  47. enforce - gtid - consistency = TRUE

  48. log_slave_updates = ON


  49. [ mysqld10 ]

  50. socket = /tmp/mysql . sock10

  51. port = 3310

  52. pid - file = /data/mysql3310/hostname . pid10

  53. datadir = /data/mysql3310

  54. user = mysql

  55. basedir = /usr/ local / mysql

  56. #skip - grant - tables

  57. log - bin = /data/mysql3310/bin - log

  58. server_id = 10

  59. gtid_mode = ON

  60. enforce - gtid - consistency = TRUE

  61. log_slave_updates = ON


2.3 创建数据库,创建的过程中需要记录数据库的初始密码

依次创建其他数据库,记录默认的随机密码

  • mysql3307的安装

点击( 此处 )折叠或打开

  1. [ root@db01 data ] # /usr/ local / mysql/bin/mysqld - - initialize - - datadir = / data/mysql3307

  2. 2017 - 07 - 20T14 : 31 : 01 . 890314Z 0 [ Warning ] TIMESTAMP with implicit DEFAULT value is deprecated . Please use - - explicit_defaults_for_timestamp server option ( see documentation for more details ) .

  3. 2017 - 07 - 20T14 : 31 : 09 . 081679Z 0 [ Warning ] InnoDB : New log files created , LSN = 45790

  4. 2017 - 07 - 20T14 : 31 : 09 . 626403Z 0 [ Warning ] InnoDB : Creating foreign key constraint system tables .

  5. 2017 - 07 - 20T14 : 31 : 09 . 867983Z 0 [ Warning ] No existing UUID has been found , so we assume that this is the first time that this server has been started . Generating a new UUID : 12d65efe - 6d58 - 11e7 - 9d39 - 000c29a755d3 .

  6. 2017 - 07 - 20T14 : 31 : 09 . 873982Z 0 [ Warning ] Gtid table is not ready to be used . Table 'mysql.gtid_executed' cannot be opened .

  7. 2017 - 07 - 20T14 : 31 : 09 . 923044Z 1 [ Note ] A temporary password is generated for root@localhost : wAQ * p > . O : 4 , p

  • mysql3308的安装

  1. [ root@db01 mysql3307 ] # cat auto . cnf

  2. [ auto ]

  3. server - uuid = 12d65efe - 6d58 - 11e7 - 9d39 - 000c29a755d3

  4. [ root@db01 mysql3307 ] # /usr/ local / mysql/bin/mysqld - - initialize - - datadir = / data/mysql3308

  5. 2017 - 07 - 20T14 : 32 : 36 . 027225Z 0 [ Warning ] TIMESTAMP with implicit DEFAULT value is deprecated . Please use - - explicit_defaults_for_timestamp server option ( see documentation for more details ) .

  6. 2017 - 07 - 20T14 : 32 : 38 . 601806Z 0 [ Warning ] InnoDB : New log files created , LSN = 45790

  7. 2017 - 07 - 20T14 : 32 : 39 . 071963Z 0 [ Warning ] InnoDB : Creating foreign key constraint system tables .

  8. 2017 - 07 - 20T14 : 32 : 39 . 167438Z 0 [ Warning ] No existing UUID has been found , so we assume that this is the first time that this server has been started . Generating a new UUID : 48106897 - 6d58 - 11e7 - a1b9 - 000c29a755d3 .

  9. 2017 - 07 - 20T14 : 32 : 39 . 172770Z 0 [ Warning ] Gtid table is not ready to be used . Table 'mysql.gtid_executed' cannot be opened .

  10. 2017 - 07 - 20T14 : 32 : 39 . 212540Z 1 [ Note ] A temporary password is generated for root@localhost : Ak3XwQpb = ta0

  • mysql3309的安装

  1. [ root@db01 mysql3307 ] # /usr/ local / mysql/bin/mysqld - - initialize - - datadir = / data/mysql3309

  2. 2017 - 07 - 20T14 : 33 : 32 . 801680Z 0 [ Warning ] TIMESTAMP with implicit DEFAULT value is deprecated . Please use - - explicit_defaults_for_timestamp server option ( see documentation for more details ) .

  3. 2017 - 07 - 20T14 : 33 : 35 . 102950Z 0 [ Warning ] InnoDB : New log files created , LSN = 45790

  4. 2017 - 07 - 20T14 : 33 : 35 . 443411Z 0 [ Warning ] InnoDB : Creating foreign key constraint system tables .

  5. 2017 - 07 - 20T14 : 33 : 35 . 557451Z 0 [ Warning ] No existing UUID has been found , so we assume that this is the first time that this server has been started . Generating a new UUID : 69acd736 - 6d58 - 11e7 - a436 - 000c29a755d3 .

  6. 2017 - 07 - 20T14 : 33 : 35 . 562713Z 0 [ Warning ] Gtid table is not ready to be used . Table 'mysql.gtid_executed' cannot be opened .

  7. 2017 - 07 - 20T14 : 33 : 35 . 607109Z 1 [ Note ] A temporary password is generated for root@localhost : sDXL5hh71I > R

  • 数据库mysql3310

点击( 此处 )折叠或打开

  1. [ root@db01 mysql3307 ] # /usr/ local / mysql/bin/mysqld - - initialize - - datadir = / data/mysql3310

  2. 2017 - 07 - 20T14 : 34 : 14 . 881243Z 0 [ Warning ] TIMESTAMP with implicit DEFAULT value is deprecated . Please use - - explicit_defaults_for_timestamp server option ( see documentation for more details ) .

  3. 2017 - 07 - 20T14 : 34 : 17 . 227399Z 0 [ Warning ] InnoDB : New log files created , LSN = 45790

  4. 2017 - 07 - 20T14 : 34 : 17 . 744012Z 0 [ Warning ] InnoDB : Creating foreign key constraint system tables .

  5. 2017 - 07 - 20T14 : 34 : 17 . 904000Z 0 [ Warning ] No existing UUID has been found , so we assume that this is the first time that this server has been started . Generating a new UUID : 82ea694b - 6d58 - 11e7 - a566 - 000c29a755d3 .

  6. 2017 - 07 - 20T14 : 34 : 17 . 908498Z 0 [ Warning ] Gtid table is not ready to be used . Table 'mysql.gtid_executed' cannot be opened .

  7. 2017 - 07 - 20T14 : 34 : 17 . 923365Z 1 [ Note ] A temporary password is generated for root@localhost : Rq4 * Teq#l ; Ve

【3】 修改数据库的初始密码

先启动数据库


  1. [ root@db01 mysql3307 ] # /usr/ local / mysql/bin/mysqld_multi start

  2. 修改默认密码

  3. [ root@db01 mysql3307 ] # mysqladmin - u root - p - P 3307 - S /tmp/mysql . sock7 password

  4. Enter password : 输入默认密码

  5. New password :

  6. Confirm new password :

  7. Warning : Since password will be sent to server in plain text , use ssl connection to ensure password safety .


登录数据库

[root@db01 mysql3307]# mysql -P 3307 -S /tmp/mysql.sock7 -u root - p


用默认的密码登录会有以下的提示信息:

点击( 此处 )折叠或打开

  1. mysql > show databases ;

  2. ERROR 1820 ( HY000 ) : You must reset your password using ALTER USER statement before executing this statement .


【4】设置mysqld_multi stop的关闭权限

默认的情况下,不能通过mysqld_multi关闭数据库,需要进行额外的设置,步骤如下:

创建mysql关闭的用户
点击( 此处 )折叠或打开

  1. [ root@db01 mysql3307 ] # mysql - u root - p - P 3310 - S /tmp/mysql . sock10

  2. Enter password :

  3. mysql > grant shutdown on * . * to 'mysql' @ 'localhost' identified by 'mysql' ;

  4. mysql > flush privileges

设置参数文件的账户
点击( 此处 )折叠或打开
  1. [ root@db01 mysql3307 ] # cat /etc/my . cnf

  2. [ mysqld_multi ]

  3. mysqld = /usr/ local / mysql/bin/mysqld_safe

  4. #basedir = /usr/ local / mysql

  5. mysqladmin = /usr/ local / mysql/bin/mysqladmin

  6. user = mysql

  7. pass = mysql

通过以上的操作,便完成了在单台服务器上面安装多个mysql数据库的操作;

附加:常用的操作语句

/usr/local/mysql/bin/mysqld_multi start #启动所有的数据库

/usr/local/mysql/bin/mysqld_multi start 7 #启动单台数据库

/usr/local/mysql/bin/mysqld_multi stop #关闭所有的数据库

/usr/local/mysql/bin/mysqld_multi stop 7 #关闭单台数据库


0