地址: https://www.mysql.com/downloads/
我解压了两份:
D:\DeveloperTools\mysql5.7.32\mysql-master-3309
D:\DeveloperTools\mysql5.7.32\mysql-slave-3310
my.ini文件内容如下
[client]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
server_id=3
log-bin=master-bin
binlog-format=ROW
#表示不需要备份的数据库为mysql
binlog-ignore-db=mysql
#设置免密码登录
#skip-grant-tables
# 设置3306端口
port = 3309
# 设置mysql的安装目录
basedir=D:\\DeveloperTools\\mysql5.7.32\\mysql-master-3309
# 设置 mysql数据库的数据的存放目录,MySQL 8+ 不需要以下配置,系统自己生成即可,否则有可能报错
datadir=D:\\DeveloperTools\\mysql5.7.32\\mysql-master-3309\\data
# 允许最大连接数
max_connections=20
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
新增文件夹data和my.ini文件
my.ini文件内容如下
[client]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
server_id=4
log-bin=slave-bin
binlog-format=ROW
#设置免密码登录
#skip-grant-tables
# 设置3306端口
port = 3310
# 设置mysql的安装目录
basedir=D:\\DeveloperTools\\mysql5.7.32\\mysql-slave-3310
# 设置 mysql数据库的数据的存放目录,MySQL 8+ 不需要以下配置,系统自己生成即可,否则有可能报错
datadir=D:\\DeveloperTools\\mysql5.7.32\\mysql-slave-3310\\data
# 允许最大连接数
max_connections=20
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
完成以上内容之后:
管理员身份打开命令行cmd 否则可能因为权限不足报错
具体步骤如下:
管理员权限打开控制台cmd,在mysql解压目录bin下执行以下命令:
mysqld --initialize --console
控制台输出初始化root密码
mysqld --install MysqlMaster --defaults-file="D:\DeveloperTools\mysql5.7.32\mysql-master-3309\my.ini"
启动和停止服务可以使用如下命令行,也可以通过windows服务管理页面启动和关闭
net start MysqlMaster
停止服务
net stop MysqlMaster
密码在初始化的时候控制台会输出
mysql -uroot -P3309 -pxxxx
alter user 'root'@'localhost' identified by '123456';
或者
update mysql.user set authentication_string=password("123456") where user="root";
有时候使用第二种方式会提示不能操作,建议使用第一种
刷新权限:
flush privileges;
也可以不创建,使用root,但是网上其他帖子说建议单独创建账号,我这里也没有多深究,就单独创建吧
create user 'lanchao'@'%' identified by '123456';
grant replication slave on *.* to 'lanchao'@'%' identified by '123456';
flush privileges;
show master status;
像操作主库一样进行初始化,安装,启动等操作
管理员权限打开控制台cmd,在mysql解压目录bin下执行以下命令:
3.1 初始化:
mysqld --initialize --console
3.2 注册服务
mysqld --install MysqlSlave --defaults-file="D:\DeveloperTools\mysql5.7.32\mysql-slave-3310\my.ini"
3.3 启动服务
net start MysqlSlave
3.4 连接mysql
mysql -uroot -P3310 -pxxx
3.5 修改密码:
alter user 'root'@'localhost' identified by '123456';
flush privileges;
3.6 创建用于同步的用户账号:
create user 'lanchao'@'%' identified by '123456';
flush privileges;
3.7 查看从库状态
show slavestatus;
如果两个文件一致,则修改slave从库的auto.cnf 使得两个库的值不一致
[auto]
server-uuid=049b7b4c-36c5-11eb-bbbf-e454e8d43410
change master to master_host='localhost',master_port=3309,master_user='lanchao',master_password='123456',master_log_file='master-bin.000002',master_log_pos=1236;
参数详解:
master_host: 主服务器的IP
master_user: 主服务器上新创建的用户名
master_password: 用户的密码
master_port: 主服务器的端口,如果未曾修改,默认即可。
master_log_file:主服务器二进制日志文件的名称,填写查看主服务器的master状态时显示的File值
master_log_pos:同步位置
start slave;
stop slave;
show slave status\G
注意,主从同步成功的标志:
IO线程和SQL线程都是成功运行的:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
以上完成即表示OK
现在可以使用进行测试,master的操作都会同步到从库