| 
 | 
 
 本帖最后由 创世魂 于 2025-1-22 23:16 编辑  
 
 
一、Windows环境,同一个服务器安装多个相同版本的mysql数据库(其它平台自行网络搜索) 
 
1、下载mysq数据库。 
      可以打开mysql官网自行下载,或者下载我提供的绿色包,我这里提供的是mysql8,也是从官网下载的。 
      链接: https://pan.baidu.com/s/1CrXUQoTcllqXUTIOLz_TVw?pwd=1234 提取码: 1234 
 
 
2、解压。 
     比如:E:\MySQL\mysql-8.0.40-winx64 
 
    
 
 
 
 
3、配置my.ini(如果没有就自己创建一个) 
 
- [mysqld]
 
 - # 设置3306端口
 
 - port=3306
 
 - # 设置mysql的安装目录   ----------此处修改为自己的配置------------
 
 - basedir=<span style="background-color: rgb(255, 255, 255);">E:\MySQL\mysql-8.0.40-winx64</span>
 
 - # 设置mysql数据库的数据的存放目录  ---------此处修改为自己的配置--
 
 - datadir=<span style="background-color: rgb(255, 255, 255);">E:\MySQL\mysql-8.0.40-winx64</span>\data
 
 - # 允许最大连接数
 
 - max_connections=200
 
 - # 允许连接失败的次数。
 
 - max_connect_errors=10
 
 - # 服务端使用的字符集默认为utf8
 
 - character-set-server=utf8
 
 - # 创建新表时将使用的默认存储引擎
 
 - default-storage-engine=INNODB
 
  
- #主服务器唯一ID
 
 - server-id=1
 
 - #启用二进制日志
 
 - log-bin=txmysql-bin
 
 - #设置不要复制的数据库(可设置多个)
 
 - binlog-ignore-db=mysql
 
  
- #设置需要复制的数据库(注意修改成自己的)
 
 - binlog-do-db=test
 
 - #设置binlog格式,MIXED,ROW,STATEMENT
 
 - binlog_format=STATEMENT
 
  
- [mysql]
 
 - # 设置mysql客户端默认字符集
 
 - default-character-set=utf8
 
 - [client]
 
 - # 设置mysql客户端连接服务端时默认使用的端口
 
 - port=3306
 
 - default-character-set=utf8
 
  
  复制代码 
 
4、配置环境变量。 
 
   
 
 
 
 
5、初始化数据库 
 
通过cmd(使用管理员模式运行cmd)进入到mysql的bin目录,然后运行指令: 
- mysqld --initialize --console
 
  复制代码 
 
 
 
红框内的为数据库初始密码,将其复制出来,账号为root。 
 
 
6、安装mysql服务。 
 
- mysqld --install MySQL3306
 
  复制代码 
 
 
 
执行cmd命令:net start MySQL3306  启动mysql服务。 
 
打开mysql管理工具,我这里用的是Navicat Premium,输入账号root和初始密码,连接登陆。 
这时候会提示密码过期,然后让你修改密码,修改密码后登录即可。 
 
 
 
 
到此第一个数据库部署完毕,开始部署第二个数据库。 
 
1、将文件夹复制一份,并改名。 
 
这里改名增加了一个后缀3307. 
同时删除data文件夹。 
 
 
 
 
 
2、修改my.ini 
 
- [mysqld]
 
 - # 设置3307端口
 
 - port=3307
 
 - # 设置mysql的安装目录   ----------此处修改为自己的配置------------
 
 - basedir=E:\MySQL\mysql-8.0.40-winx64_3307
 
 - # 设置mysql数据库的数据的存放目录  ---------此处修改为自己的配置--
 
 - datadir=E:\MySQL\mysql-8.0.40-winx64_3307\data
 
 - # 允许最大连接数
 
 - max_connections=200
 
 - # 允许连接失败的次数。
 
 - max_connect_errors=10
 
 - # 服务端使用的字符集默认为utf8
 
 - character-set-server=utf8
 
 - # 创建新表时将使用的默认存储引擎
 
 - default-storage-engine=INNODB
 
  
- #主服务器唯一ID
 
 - server-id=2
 
 - #启用中继日志
 
 - relay-log=mysql-relay
 
  
- #设置需要复制的数据库
 
 - binlog-do-db=test
 
  
- [mysql]
 
 - # 设置mysql客户端默认字符集
 
 - default-character-set=utf8
 
 - [client]
 
 - # 设置mysql客户端连接服务端时默认使用的端口
 
 - port=3307
 
 - default-character-set=utf8
 
  
  复制代码 
 
3、环境变量设置上。 
 
 
 
 
4、初始化数据库。 
 
管理员模式打开cmd进入“E:\MySQL\mysql-8.0.40-winx64_3307\bin” 
执行命令:  
- mysqld --defaults-file=E:\MySQL\mysql-8.0.40-winx64_3307\my.ini --initialize --console
 
  复制代码 这时候会和上面的数据库一样生成一堆信息,里面有数据库的初始密码,记着保存起来。 
 
 
5、安装mysql服务。 
 
执行命令: 
- mysqld install MySQL3307 --defaults-file="E:\MySQL\mysql-8.0.40-winx64_3307\my.ini"
 
  复制代码 执行命令运行服务: 
 
 
同样使用Navicat登陆端口号为3307数据库,这时候依然会提示你密码过期,按照提示修改密码登录即可。 
到此,两个数据库配置完毕。 
 
 
二、数据库主从同步配置 
 
在主数据库执行下面的命令。 
- CREATE USER 'slave'@'localhost' IDENTIFIED BY '123456';
 
 - GRANT REPLICATION SLAVE ON *.* TO 'slave'@'localhost';
 
 - ALTER USER 'slave'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
 
 - FLUSH PRIVILEGES;
 
  复制代码 
 
可以直接在数据库工具里面执行。 
 
 
 
第一行命令是创建用户,用户名为slave 密码为 123456 
第二行授权复制权限。 
第三行修改认证插件,如果不修改还得启用ssl,比较麻烦,所以这里改掉认证,忽略ssl。 
第四行刷新命令。 
 
主数据库继续执行命令。 
 
 
 
记住上面红框中的两个值。 
 
 
切换从数据库执行命令。 
- #master_host 主数据库地址
 
 - CHANGE MASTER TO master_host ='127.0.0.1',
 
 - #上一步中主数据库创建的从库用户
 
 - master_user ='slave',
 
 - #上一步中主数据库创建的从库密码
 
 - master_password ='123456',
 
 - #上一步中保存的file
 
 - master_log_file ='txmysql-bin.000004',
 
 - #上一步中保存的position
 
 - master_log_pos = 10769;
 
  复制代码 
 
执行时确保数据库修改成了从数据库。 
 
 
 
 
继续在从数据库执行命令,用于启动主从复制。 
 
 
从库上执行命令查看复制状态。 
 
 
 
 
 
 
Slave_IO_Running和Slave_SQL_Running的值都为“YES”,则表示从服务器已经成功连接到主服务器并开始复制。 
如果出现异常,查看Last Error和Last_IO_Error 两个字段内的异常错误信息。 
 
 
这时候使用数据库工具分别在主库和从库中创建一个名为 test 的数据库,数据库名称要保证在my.ini中配置过。 
 
这时候如果你在主库(写数据库)中创建一个user表,从库(读数据库)会自动生成一个同样的表。 
这也就意味着主从同步配置成功。 
在主库(写数据库)test库中任何的增删改都会自动同步到从库(读数据库)的test库中。 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 |   
 
 
 
 |