递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 485|回复: 6
打印 上一主题 下一主题

[服务器] MySQL主从同步保姆级教程

[复制链接]

449

主题

1万

帖子

4万

积分

超级版主

Rank: 8Rank: 8

积分
41625
跳转到指定楼层
楼主
发表于 2025-1-22 23:15:27 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 创世魂 于 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(如果没有就自己创建一个)

  1. [mysqld]
  2. # 设置3306端口
  3. port=3306
  4. # 设置mysql的安装目录   ----------此处修改为自己的配置------------
  5. basedir=<span style="background-color: rgb(255, 255, 255);">E:\MySQL\mysql-8.0.40-winx64</span>
  6. # 设置mysql数据库的数据的存放目录  ---------此处修改为自己的配置--
  7. datadir=<span style="background-color: rgb(255, 255, 255);">E:\MySQL\mysql-8.0.40-winx64</span>\data
  8. # 允许最大连接数
  9. max_connections=200
  10. # 允许连接失败的次数。
  11. max_connect_errors=10
  12. # 服务端使用的字符集默认为utf8
  13. character-set-server=utf8
  14. # 创建新表时将使用的默认存储引擎
  15. default-storage-engine=INNODB

  16. #主服务器唯一ID
  17. server-id=1
  18. #启用二进制日志
  19. log-bin=txmysql-bin
  20. #设置不要复制的数据库(可设置多个)
  21. binlog-ignore-db=mysql

  22. #设置需要复制的数据库(注意修改成自己的)
  23. binlog-do-db=test
  24. #设置binlog格式,MIXED,ROW,STATEMENT
  25. binlog_format=STATEMENT

  26. [mysql]
  27. # 设置mysql客户端默认字符集
  28. default-character-set=utf8
  29. [client]
  30. # 设置mysql客户端连接服务端时默认使用的端口
  31. port=3306
  32. default-character-set=utf8

复制代码


4、配置环境变量。

   


5、初始化数据库

通过cmd(使用管理员模式运行cmd)进入到mysql的bin目录,然后运行指令:
  1. mysqld --initialize --console
复制代码


红框内的为数据库初始密码,将其复制出来,账号为root。


6、安装mysql服务。

  1. mysqld --install MySQL3306
复制代码



执行cmd命令:net start MySQL3306  启动mysql服务。

打开mysql管理工具,我这里用的是Navicat Premium,输入账号root和初始密码,连接登陆。
这时候会提示密码过期,然后让你修改密码,修改密码后登录即可。



到此第一个数据库部署完毕,开始部署第二个数据库。

1、将文件夹复制一份,并改名。

这里改名增加了一个后缀3307.
同时删除data文件夹。




2、修改my.ini

  1. [mysqld]
  2. # 设置3307端口
  3. port=3307
  4. # 设置mysql的安装目录   ----------此处修改为自己的配置------------
  5. basedir=E:\MySQL\mysql-8.0.40-winx64_3307
  6. # 设置mysql数据库的数据的存放目录  ---------此处修改为自己的配置--
  7. datadir=E:\MySQL\mysql-8.0.40-winx64_3307\data
  8. # 允许最大连接数
  9. max_connections=200
  10. # 允许连接失败的次数。
  11. max_connect_errors=10
  12. # 服务端使用的字符集默认为utf8
  13. character-set-server=utf8
  14. # 创建新表时将使用的默认存储引擎
  15. default-storage-engine=INNODB

  16. #主服务器唯一ID
  17. server-id=2
  18. #启用中继日志
  19. relay-log=mysql-relay

  20. #设置需要复制的数据库
  21. binlog-do-db=test

  22. [mysql]
  23. # 设置mysql客户端默认字符集
  24. default-character-set=utf8
  25. [client]
  26. # 设置mysql客户端连接服务端时默认使用的端口
  27. port=3307
  28. default-character-set=utf8

复制代码


3、环境变量设置上。



4、初始化数据库。

管理员模式打开cmd进入“E:\MySQL\mysql-8.0.40-winx64_3307\bin
执行命令:
  1. mysqld --defaults-file=E:\MySQL\mysql-8.0.40-winx64_3307\my.ini --initialize --console
复制代码
这时候会和上面的数据库一样生成一堆信息,里面有数据库的初始密码,记着保存起来。


5、安装mysql服务。

执行命令:
  1. mysqld install MySQL3307 --defaults-file="E:\MySQL\mysql-8.0.40-winx64_3307\my.ini"
复制代码
执行命令运行服务:
  1. net start MySQL3307
复制代码


同样使用Navicat登陆端口号为3307数据库,这时候依然会提示你密码过期,按照提示修改密码登录即可。
到此,两个数据库配置完毕。


二、数据库主从同步配置

主数据库执行下面的命令。
  1. CREATE USER 'slave'@'localhost' IDENTIFIED BY '123456';
  2. GRANT REPLICATION SLAVE ON *.* TO 'slave'@'localhost';
  3. ALTER USER 'slave'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
  4. FLUSH PRIVILEGES;
复制代码


可以直接在数据库工具里面执行。


第一行命令是创建用户,用户名为slave 密码为 123456
第二行授权复制权限。
第三行修改认证插件,如果不修改还得启用ssl,比较麻烦,所以这里改掉认证,忽略ssl。
第四行刷新命令。

主数据库继续执行命令。
  1. show master STATUS;
复制代码


记住上面红框中的两个值。


切换从数据库执行命令。
  1. #master_host 主数据库地址
  2. CHANGE MASTER TO master_host ='127.0.0.1',
  3. #上一步中主数据库创建的从库用户
  4. master_user ='slave',
  5. #上一步中主数据库创建的从库密码
  6. master_password ='123456',
  7. #上一步中保存的file
  8. master_log_file ='txmysql-bin.000004',
  9. #上一步中保存的position
  10. master_log_pos = 10769;
复制代码


执行时确保数据库修改成了从数据库



继续在从数据库执行命令,用于启动主从复制。
  1. start slave;
复制代码


从库上执行命令查看复制状态。
  1. show slave status;
复制代码





Slave_IO_Running和Slave_SQL_Running的值都为“YES”,则表示从服务器已经成功连接到主服务器并开始复制。
如果出现异常,查看Last Error和Last_IO_Error 两个字段内的异常错误信息。


这时候使用数据库工具分别在主库和从库中创建一个名为 test 的数据库,数据库名称要保证在my.ini中配置过。

这时候如果你在主库(写数据库)中创建一个user表,从库(读数据库)会自动生成一个同样的表。
这也就意味着主从同步配置成功。
在主库(写数据库)test库中任何的增删改都会自动同步到从库(读数据库)的test库中。















安卓无障碍实战课:点击查看
交流群:641526939
回复

使用道具 举报

36

主题

326

帖子

2558

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
2558
沙发
发表于 2025-1-22 23:18:53 | 只看该作者
这回有保姆了
回复

使用道具 举报

449

主题

1万

帖子

4万

积分

超级版主

Rank: 8Rank: 8

积分
41625
板凳
 楼主| 发表于 2025-1-22 23:28:10 | 只看该作者

不是特别保姆,但是也差不多。。
安卓无障碍实战课:点击查看
交流群:641526939
回复

使用道具 举报

35

主题

463

帖子

1639

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
1639
地板
发表于 2025-1-22 23:29:19 | 只看该作者
这个太棒了,刚说需要就来了.
回复

使用道具 举报

36

主题

326

帖子

2558

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
2558
5#
发表于 2025-1-22 23:31:02 | 只看该作者
谢谢保姆,谢谢创创
回复

使用道具 举报

1

主题

84

帖子

1126

积分

金牌会员

Rank: 6Rank: 6

积分
1126
QQ
6#
发表于 7 天前 | 只看该作者
保姆还少了一步驱动:噜阿噜
有事请联系:QQ460402968
回复

使用道具 举报

449

主题

1万

帖子

4万

积分

超级版主

Rank: 8Rank: 8

积分
41625
7#
 楼主| 发表于 7 天前 | 只看该作者
仰望 发表于 2025-1-23 09:17
保姆还少了一步驱动:噜阿噜

这只是部署,又不是火山库连接数据库,要什么驱动。。
安卓无障碍实战课:点击查看
交流群:641526939
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2025-1-30 14:05 , Processed in 0.104376 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表