乐趣区

关于mysql:windows-安装mysql多版本-主从复制

在 windows7 下装置 mysql 以下版本:
1、mysql-5.7.28
2、mysql-8.0.20:主库
3、mysql-8.0.20:从库

一、mysql-5.7.28 装置和启用

1.1 下载安装

免装置版本:https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.28-winx64.zip

装置版本:https://downloads.mysql.com/archives/community/

我应用的是免装置版本,把文件解压进去如下门路:F:mysqlmysql-5.7.28-winx64

1.2 配置信息

首先在 F:mysqlmysql-5.7.28-winx64 门路下新建 my.ini 文件,内容如下:

[mysqld]
# 设置服务端应用的字符集为 utf-8
character-set-server=utf8
# 设置 mysql 的端口号
port = 3306
# 设置 mysql 的装置目录(能看到 bin 即可)
basedir=F:\mysql\mysql-5.7.28-winx64
# 设置 mysql 数据库的数据的寄存目录(即 data 文件夹,必须是空目录)
datadir=F:\mysql\mysql-5.7.28-winx64\data
# 容许最大连接数
max_connections=2000
# 创立新表时将应用的默认存储引擎
default-storage-engine=INNODB
# 设置 mysql 以及数据库的默认编码
[mysql]
default-character-set=utf8
[mysql.server]
default-character-set=utf8
# 设置客户端默认字符集
[client]
port = 3306
default-character-set=utf8

留神:basedir 和 datadir 的门路不要呈现中文和空格。

1.3 装置及初始化

进入 F:mysqlmysql-5.7.28-winx64bin,按住 Shift+ 右键,抉择 ” 在此处关上命令窗口 ”,执行如下命令:

mysqld install

呈现 Service successfully installed. 示意装置胜利。接下来继续执行 mysqld –initialize –console

最初的 =WsstAcIc4oh 是数据库的初始化明码,记住它,前面须要用到它进行明码重置。

1.4 启动服务

持续在 CMD 执行如下命令:net start mysql

(net stop mysql 是进行服务,sc delete mysql 是删除服务)

同样在 bin 目录下,执行 mysqld -nt –install 用来开机时主动启动此服务。

1.5 重置明码
同样在 bin 目录下,执行:

mysql -uroot -p

而后输出初始密码。

进入 mysql 后,执行重置明码指令:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';

二、mysql-8.0.20 装置和启用

2.1 下载安装

免装置版本:https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.20-winx64.zip

下载后解压到门路:F:mysqlmysql-8.0.20-winx64

2.2 配置信息

首先在 F:mysqlmysql-8.0.20-winx64 门路下新建 data 文件夹和 my.ini 文件,内容如下:

[mysqld]
# 设置 3307 端口(原先的 mysql5 曾经占用 3306)
port=3307
# 设置 mysql 的装置目录(你本人的目录)
basedir=F:\mysql\mysql-8.0.20-winx64
# 设置 mysql 数据库的数据的寄存目录
datadir=F:\mysql\mysql-8.0.20-winx64\data
# 容许最大连接数
max_connections=200
# 容许连贯失败的次数。max_connect_errors=10
# 服务端应用的字符集默认为 UTF8
character-set-server=utf8
# 创立新表时将应用的默认存储引擎
default-storage-engine=INNODB
# 默认应用“mysql_native_password”插件认证
#mysql_native_password
default_authentication_plugin=mysql_native_password
[mysql]
# 设置 mysql 客户端默认字符集
default-character-set=utf8
[client]
# 设置 mysql 客户端连贯服务端时默认应用的端口
port=3307
default-character-set=utf8

留神:basedir 和 datadir 的门路不要呈现中文和空格。

2.3 敞开原先的 mysql 服务

WIN+ R 键输出 services.msc 关上服务,进行所有在运行中的 Mysql 服务。

2.4 装置及初始化

进入 F:mysqlmysql-8.0.20-winx64bin,按住 Shift+ 右键,抉择 ” 在此处关上命令窗口 ”,执行如下命令:

mysqld --initialize --console

最初的_t:KDa)PP7nV 是数据库的初始化明码,记住它,前面须要用到它进行明码重置。

接下来继续执行

mysqld --install MySQL8

若呈现 Service successfully installed. 示意装置胜利。

2.5 启动服务

持续在 CMD 执行如下命令:

net start mysql8

(net stop mysql8 是进行服务,sc delete mysql8 是删除服务)

同样在 bin 目录下,执行

mysqld -nt --install

用来开机时主动启动此服务。

2.6 重置明码

同样在 bin 目录下,执行:

mysql -uroot -p

而后输出初始密码。

进入 mysql 后,执行重置明码指令:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';

三、mysql- 8 的主从配置

装置前请进行所有正在运行中的数据库服务,详见 2.3 操作步骤。

另外数据库的版本号尽量放弃雷同,如下图,我应用 mysql-8.0.20-winx64 作为主数据库,mysql-8.0.20-winx64- 2 作为从数据。

不论是主数据库还是从数据库,装置配置的步骤跟下面第二步安顿 mysql8 是相似的。

1、别离配置 my.init 文件:

Master 主数据库的 my.ini 配置,新增如下内容:

[mysqld]
# 主库配置
server_id=1log-bin=mysql-bin

# 须要同步的数据库
binlog-do-db=demo

Slave 从数据的 my.ini 配置,新增如下内容:

[mysqld]# 从库配置
server_id=2
log-bin=mysql-bin

#须要同步的数据库
binlog-do-db=demo

因为是在同一个 windows 环境下装置多个 mysql 服务,故每个 mysql 服务的端口号不能反复。而且 my.ini 配置文件外面的 server_id 也不能同名。

2、注册不同的服务名称

因为操作步骤 2.5 中生成了服务名称:mysql8。我打算用它来当作主数据库,故应用 sc delete mysql8 先删除掉,之前为主数据库注册一个容易记住的新名称。

进入 F:mysqlmysql-8.0.20-winx64bin 目录下执行:

mysqld --install MySQL8-master

同样的 F:mysqlmysql-8.0.20-winx64-2bin 目录下执行:

mysqld --install MySQL8-slave

3、开启主从同步

1、首先进入 master,创立一个给 slave 的拜访账号

账号 admin01,明码 admin123456

CREATE USER admin01@'%' IDENTIFIED WITH 'mysql_native_password' BY 'admin123456';
GRANT REPLICATION SLAVE ON *.* TO admin01@'%';
FLUSH PRIVILEGES;
2、查看 master 的状态:
show master status\G;

File 的值为 mysql-bin.000004。这个值能够在 my.ini 中指定:log_bin-index=master-bin.index,没有指定的话则由零碎主动生成。

3、登录 slave 从库,进入 mysql 后输出以下指令,用于从库设置主库的连贯信息:
CHANGE MASTER TOMASTER_HOST='192.168.0.212',
MASTER_PORT=3307,
MASTER_USER='admin01',
MASTER_PASSWORD='admin123456',
MASTER_LOG_FILE='mysql-bin.000004',
MASTER_LOG_POS=832;

阐明:

MASTER_HOST:主数据库的主机 ip
MASTER_PORT:主数据库的端口,不设置则默认是 3306
MASTER_USER:主数据库被授予同步复制权限的用户名
MASTER_PASSWORD:对应的用户明码
MASTER_LOG_FILE:在主数据库执行命令 show master status 查问到的二进制日志文件名称
MASTER_LOG_POS:在主数据库执行命令 show master status 查问到的地位 Position 的值

4、开启主从同步:start slave;

查看主从同步状态:

show slave status\G;

如果呈现 Slave_IO_State 为 Waiting for master to send event,以及 Slave_IO_Running 和 Slave_SQL_Running 为 Yes,则示意从库已同步主库胜利。

退出移动版