创世魂 发表于 2025-1-22 23:15:27

MySQL主从同步保姆级教程

本帖最后由 创世魂 于 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(如果没有就自己创建一个)


# 设置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客户端默认字符集
default-character-set=utf8

# 设置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


# 设置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客户端默认字符集
default-character-set=utf8

# 设置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"执行命令运行服务:
net start MySQL3307

同样使用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。
第四行刷新命令。

主数据库继续执行命令。
show master STATUS;

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


切换从数据库执行命令。
#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;

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



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

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




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


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

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















兵三进一 发表于 2025-1-22 23:18:53

这回有保姆了:):):)

创世魂 发表于 2025-1-22 23:28:10

兵三进一 发表于 2025-1-22 23:18
这回有保姆了

不是特别保姆,但是也差不多。。

拒绝吃鱼的猫 发表于 2025-1-22 23:29:19

这个太棒了,刚说需要就来了.

兵三进一 发表于 2025-1-22 23:31:02

谢谢保姆,谢谢创创:):):)

仰望 发表于 2025-1-23 09:17:43

保姆还少了一步驱动:噜阿噜

创世魂 发表于 2025-1-23 18:17:42

仰望 发表于 2025-1-23 09:17
保姆还少了一步驱动:噜阿噜

这只是部署,又不是火山库连接数据库,要什么驱动。。
页: [1]
查看完整版本: MySQL主从同步保姆级教程