windows配置mysql主从复制
随着业务的发展,用户越来越多,访问量越来越大,需要解决读取效 率低的问题:mysql主从复制,读写分离,可以解决此问题,主库负责写入数据,从库负责读取数据
一:准备环境:
1:两台服务器或单机windows
2: mysql安装软件
mysql5.7 x64,其他版本也可以,这里以单机为例,多台服务器类同
二:单机配置mysql主从复制步骤:
1:配置主库
2:配置从库
3: 验证和测试
三:实验步骤
windows7 + mysql5.7
(一):配置主库
1: 配置mysql服务并建测试库test
mysql安装后,配置系统mysql服务
C:\soft\db\mysql-5.7.10-winx64\bin\mysqld install mysql --defaults-file=C:/soft/db/mysql-5.7.10-winx64/my.ini
drop database test;
create database test;
2:停主库
net stop mysql
3:配置my.ini
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[mysqld]
#设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=C:/soft/db/mysql-5.7.10-winx64
# 设置mysql数据库的数据的存放目录
datadir=C:/soft/db/mysql-5.7.10-winx64/data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
#=======主从复制配置(主库)============
#主库和从库需要不一致,唯一的ID编号 1-32,手动设定
server_id=1
#二进制文件存放路径,存放在根目录data
log-bin=mysql-bin
#需要复制的库,多个库用逗号分隔,如果不配置所有库参与复制
binlog-do-db=test
#不需要复制的库
#binlog-ignore-db=mysql
#=======主从复制配置============
4:启动主库
net start mysql
5: 建用户授权
用户用于从库同步主库的数据
grant replication slave,reload,super on *.* to 'myslave'@'localhost' identified by 'myslave';
myslave分别表示用户名、密码
6:刷新权限
flush privileges
7: 显示主库状态
记录File和Position,后面有用
(二):配置从库
1: 配置从库服务及建测试库(同主库)
复制主库,放到其他路径下,
如从库和主库在一台机器上,则端口需要不一样(my.ini)
D:\soft\db\mysql2\bin\mysqld --defaults-file=D:/soft/db/mysql2/my.ini mysql2
drop database test;
create database test;
2:停服务
net stop mysql2 #mysql2是服务名
3:配置从库
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[mysqld]
#设置3306端口
port = 3307
# 设置mysql的安装目录
basedir=D:/soft/db/mysql2
# 设置mysql数据库的数据的存放目录
datadir=D:/soft/db/mysql2/data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
#=======主从复制配置(从库)============
#主库和从库需要不一致,唯一的ID编号 1-32,手动设定
server_id=2
#需要复制的库,多个库用逗号分隔,如果不配置所有库参与复制
replicate-do-db=test
#=======主从复制配置============
4: 重启从库
net start mysql2
5: 从库执行
从库连接到主库同步master_log_file和master_log_pos分别是之前记录的File,Position
change master to master_host='127.0.0.1',master_user='myslave',master_password='myslave',master_port=3306,master_log_file='mysql-bin.000001',master_log_pos=154;
6: 重启同步服务
stop slave; 执行start slave;
(三):验证和测试
验证前需要确保主库和从库都存在相同库
1: 主库执行
create table t1(tid int,tname varchar(30));
insert into t1 values(1,‘t1’);
insert into t1 values(2,‘t2’);
insert into t1 values(3,‘t3’);
commit;
2:从库验证
四:实验经验
1:windows单机安装多个mysql,需要端口不一致
2:同步过程中,可能报如下错误
Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs;
因为从库是主库拷贝,停从库,删除\data\auto.cof文件,重启则可以了
3:单机多mysql,命令行登陆,最好加上端口号,否则可能一直登陆同一mysql