首先下载压缩包,然后解压
创建my.ini配置文件,主数据库配置如下:
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[mysqld]
#设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=D:/java/tools/mysql-5.7.22-winx64
# 设置mysql数据库的数据的存放目录
datadir=D:/java/tools/mysql-5.7.22-winx64/data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
#wait_timeout = 60
#interactive_timeout = 60
从数据库配置如下:
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
# 设置端口
port = 3307
# 设置mysql的安装目录
basedir="D:/java/tools/mysql-slave"
# 设置mysql数据库的数据的存放目录
datadir="D:/java/tools/mysql-slave/data"
# 允许最大连接数
max_connections=20
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
以管理员身份进入到bin目录,初始化:
mysqld --initialize
密码在data下面的.err文件
这里有个注意的点,如果出现
这种错误是因为ini文件被编辑以后会变为其他编码格式,这时候改回ANSI,就编辑文本另存为时候改为这个编码
然后初始化成功以后
安装服务
mysqld -install slave,这里的slave是服务名,卸载服务则把install改为remove
net start slave 开启服务
注意这里因为我们用了另一个端口,所以在登陆时要指定端口登陆,如果是非本机ip则加上 -h,然后输入我们在err下的密码
mysql -u root -P 3307 -p
然后修改密码:
alter user 'root'@'localhost' identified by '123456';
然后配置主数据库,在mysqld节点下加上
server-id=1
log-bin=master-bin
log-bin-index=master-bin.index
重启服务,这里用net start net stop的方式重启
slave的mysqld节点上加上
server-id=2
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin
server-id是数据库的标识,log-bin代表开启二进制日志记录,log-bin-index代表开启索引,relay-log
从库后面也是打开相关的日志
更改配置后也要重启服务
当双方都开启日志记录后,就可以开始让从库识别自己的主库了
首先让主库创建一个授权给从库读取数据的账号,下面示例为账号为reader,密码为read,ip来源为本地,最后刷新权限
create user reader;
GRANT REPLICATION SLAVE ON *.* TO 'reader'@'127.0.0.1' IDENTIFIED BY 'read';
flush privileges;
此时的主库状态
然后从库配置主库,如果因为stop slave一段时间而更不上主库的日志内容,可以重新执行这句并指定新的日志文件及起始位置
change master to master_host='127.0.0.1',master_port=3306,master_user='reader',master_password='read',master_log_file='master-bin.000002',master_log_pos=799;
查看从库状态
show slave status \G;
此时开启主从同步
start slave
然后我们从主数据库新建一个数据库,此时从库没有任何数据库
当主数据库新建一个名为mptest的数据库以后,从库也新建了相关的库
此致配置完毕,代码层面的编写可以看一下我的另一篇文章