一、 环境准备
主库: master
os: win7
ip: 196.6.8.163
database: mysql-8.0.12-winx64
port: 3306
从库: slave
os: win7
ip: 196.6.8.163
database: mysql-8.0.13-winx64
port: 3307
注:因为虚拟机出现问题,不能在多个机器上配置,因此在一台机器上安装两
个版本来配置主从复制。
二、 数据库安装
- 主库:
1. 在 mysql-8.0.12-winx64 文件夹下新建 my.ini 文件,内容如下:
[mysqld]
# 以下内容手动添加
[client]
port=3306
default-character-set=utf8
[mysqld]
#主库配置
server_id=1
log_bin=master-bin
log_bin-index=master-bin.index
#端口
port=3306
character_set_server=utf8
#解压目录
basedir=E:\MySQL\mysql-8.0.12-winx64
#解压目录下 data 目录
datadir=E:\MySQL\mysql-8.0.12-winx64\data
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[WinMySQLAdmin]
E:\MySQL\mysql-8.0.12-winx64\bin\mysqld.exe
my.ini
2. 创建数据库使用数据目录
(1) 管理员权限 cmd 进入 bin 目录
(2) 执行: mysqld –initialize-insecure
3. 安装 master 服务
(1) 执行:
mysqld –install master –defaults-file=” E:\MySQL\mysql-8.0.12-winx64\my.ini”
(2) 开启服务,执行: net start master
4. 修改 root 密码:
(1) 登录: mysql –u root –p
(2) Use mysql
(3) ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
(4) 远程登录配置: update user set host ='%' where user ='root';
(5) 保存: flush privileges;
5. 创建连接从库用户
(1) Show databases;
(2) Use mysql;
(3) 创建用户:
CREATE USER '用户名'@'host 名称' IDENTIFIED WITH mysql_native_password BY '密码';
(4) 给用户授权: GRANT ALL PRIVILEGES ON *.* TO '用户名'@'host 名称';
(5) 刷新权限: FLUSH PRIVILEGES;
- 从库:
6. 在 mysql-8.0.12-winx64 文件夹下新建 my.ini 文件,内容如下:
[mysqld]
# 以下内容手动添加
[client]
port=3307
default-character-set=utf8
[mysqld]
#主库配置
server_id=2
log_bin=master-bin
log_bin-index=master-bin.index
#端口
port=3307
character_set_server=utf8
#解压目录
basedir=E:\MySQL\mysql-8.0.13-winx64
#解压目录下 data 目录
datadir=E:\MySQL\mysql-8.0.13-winx64\data
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[WinMySQLAdmin]
E:\MySQL\mysql-8.0.13-winx64\bin\mysqld.exe
my.ini
7. 创建数据库使用数据目录
(1) 管理员权限 cmd 进入 bin 目录
(2) 执行: mysqld –initialize-insecure
8. 安装 master 服务
(1) 执行:
mysqld –install slave –defaults-file=” E:\MySQL\mysql-8.0.13-winx64\my.ini”
(2) 开启服务,执行: net start master
9. 修改 root 密码:
(1) 登录: mysql –u root –p
(2) Use mysql
(3) ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
(4) 远程登录配置: update user set host ='%' where user ='root';
(5) 保存: flush privileges;
三、 主从连接配置
- 主库:
1. 显示 file 和 position,执行: show master status
- 从库:
1. 关掉 slave 执行: stop slave;
2. 执行:
change master to
master_host='196.6.8.193',
master_port=3306,
master_user='link',
master_password='mysql',
master_log_file='master-bin.000002',(mater 显示的 file)
master_log_pos=8050;(master 显示的 position)
3. 启动从库: start slave
4. 显示连接结果: show slave status \G;
如果 Slave_IO_State 字段显示 Waiting for master to send event 说明成功
-----------------------分隔符-------------------------------------
(https://www.cnblogs.com/naruto123/p/8138708.html)
https://www.cnblogs.com/wyt007/p/10767770.html