1. 去官网下载MySQL并解压(这个就不演示了)
5.7以上的版本是没有data和my.ini文件的,需要先创建my.ini。
2. 主库创建my.ini文件
[client]
# 端口号,默认是3306,同一个环境下不同的mysql实例端口号不能相同
port=3307
default-character-set=utf8
[mysqld]
#主库配置
server_id=1
log_bin=master-bin
log_bin-index=master-bin.index
# 设置为自己MYSQL的安装目录
basedir=D:/MySQL/master
# 设置为MYSQL的数据目录,data文件夹由mysql自动生成
datadir=D:/MySQL/master/data
port=3307
character_set_server=utf8
sql_mode=NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER
# 开启查询缓存
explicit_defaults_for_timestamp=true
3. 主库MySQL初始化、安装与密码修改(管理员身份运行CMD)
初始化
mysqld --initialize --user=mysql --console
初始化成功后会出现密码,记录下来
开始安装MySQL
mysqld install MySQL-master --defaults-file="D:\MySQL\master\my.ini"
MySQL-master是安装的服务名(可以自行设置,主从库的服务名记得不要起一样的)
defaults-file后面的是my.ini文件的目录(根据自己的目录进行设置)
安装成功后会一下字样
服务中是可以看到安装完的服务的
启动MySQL
名字是之前安装时的服务名
登录MySQL
mysql -u root -P3307 -p
输入之前记录下来的密码
修改初始密码
set password=password('新密码');
之后就可以使用Navicat进行操作了。
4. 从库MySQL初始化、安装与密码修改(管理员身份运行CMD)
只有my.ini的文件是不一样的,其他的操作一模一样。参考步骤3
[client]
port=3308
default-character-set=utf8
[mysqld]
#从库配置
server_id=2
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin
# 设置为自己MYSQL的安装目录
basedir=D:/MySQL/slave
# 设置为MYSQL的数据目录
datadir=D:/MySQL/slave/data
port=3308
character_set_server=utf8
sql_mode=NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER
#开启查询缓存
explicit_defaults_for_timestamp=true
5. 使用Navicat进行操作
连接MySQL
获取主库MySQL二进制文件信息
登录从库进行主从库关联
change master to
#ip
master_host='127.0.0.1',
#端口
master_port=3307,
#主库用户
master_user='root',
#主库密码
master_password='root',
#上一步操作主库获取到的File名称
master_log_file='master-bin.000002',
#上一步操作主库获取到的Position名称
master_log_pos=1621;
执行成功后开启后,从库执行start slave;命令
start slave;
然后从库执行show slave status;命令查看信息
show slave status;
以下两个配置都开启后即可实现主从复制
6. 主从复制原理
MySQL中有一个binlog文件。
binlog文件记录了数据库所有执行的DDL和DML语句(除了数据查询语句select、show等)。
-
主库会向从库推送自己的binlog
-
从库接收主库发送过来的binlog,并记录到relaylog中
-
从库读取relaylog中的信息并执行,完成同步
-
从库记录自己的binglog