mysql的主从配置参考了不少文章,有的讲的很模糊,有的讲的是老版本,与当下流行的版本有很大出入,配置的过程中各种报错,在把一个一个的坑填完后,这里总结一份比较详细的正确配置步骤。
环境:
操作系统为64位windows10,mysql版本为5.7
主(master):192.168.94.23 端口:3308
从(slave):192.168.94.23 端口:3309
将事先下载好的5.7版本的mysql,复制两份,分别重命名mysql2(主库)和mysql3(从库),
官网下载地址:https://dev.mysql.com/downloads/
一、 安装主库
1、 在mysql1根目录下找到my.ini,如果根目录下没有这个文件,就新建一个,注意文件编码格式为ANSI,内容如下:
[mysqld]
#skip-grant-tables
#设置字符集为utf8
loose-default-character-set=utf8
basedir=E:\mysql2
datadir=E:\mysql2\data
port=3308
#设置数据库编码
character-set-server=utf8
#设置最大连接数
max_connections=2000
max_allowed_packet=10m
[client]
#设置客户端字符集
loose-default-character-set=utf8
2、 在mysql2的bin目录下,先初始化,然后安装mysql2服务,安装成功会有成功的提示,默认用户为root,密码为空,然后在上面my.ini文件里的第一行的#注释去掉,然后停止服务再重启,登陆,切换到mysql,修改默认密码,最后再重启一下mysql2服务,授予用户root,远程登陆权限,如果授权失败,需要重置用户,就重置一下用户,最后查询一下用户,如下图,到这里主库的安装准备工作完成了。
安装过程中用到的命令:
初始化
mysqld –initialize
安装mysql
mysqld install mysql2
登陆
mysql –u root –p –P 3308 –h 127.0.0.1
切换数据库
use mysql
修改默认密码
update user set authentication_string=PASSWORD(‘root’) where User=‘root’;
重置用户
alter user user() identified by “root”;
授予用户远程登陆权限
grant all privileges on . to ‘root’@’%’ identified by “root” WITH GRANT OPTION;
查询用户
select user,host from mysql.user;
二、 安装从库
从库的安装准备工作同主库
三、 主从配置
1、主库配置:完成第一步、第二步的主库和从库的准备工作后,先登陆主库,创建名称为abcd的数据库,在主库的my.ini文件中的[client]上一行加入,如下配置
server-id=1
log-bin=mysql-bin
binlog-do-db=abcd
,然后重启主库mysql2服务,接着再为从库创建一个用于从主库同步数据的用户zmgx,并授予从库读取权限,刷新权限,查看主库的状态,并记下File和Position的值,配置从库的时候会用到。如图:
3、 从库配置:
先登陆从库,创建名称为abcd的数据库,与主库一模一样,在从库的my.ini文件中的[client]上一行加入如下配置:
server-id=2
,然后重启从库mysql3服务,然后在从库中关闭同步服务,重新设置同步服务,
在主库中记下的file和Position的值就是在这个时候要用到的,然后重新启动同步服务,刷新权限,并查看从库状态,如图,表示主从同步设置成功
配置过程中用到的命令:
登陆主库
mysql -u root -p -P 3308 -h 192.168.94.23
创建名称为abcd的数据库
create database abcd default charset utf8 collate utf8_general_ci;
切换数据库
use abcd;
创建用户
create user ‘zmgx’@‘192.168.94.23’ identified by ‘zmgx’;
授予从库权限
grant replication slave on . to ‘zmgx’@‘192.168.94.23’ identified by ‘zmgx’;
刷新权限
flush privileges;
查询主库状态:
show master status\G;
关闭同步
stop slave;
设置主从同步
change master to master_host=‘192.168.94.23’,master_port=3308,master_user=‘zmgx’,master_password=‘zmgx’,master_log_file=‘mysql-bin.000001’, master_log_pos=154;
开启同步
start slave;
刷新权限
flush privileges;
查看从库状态
show slave status\G;
四、 验证
登陆主库,创建一个student表,
并插入一条数据,
切换到abcd库,
查询一下,主库已经有了插入的数据
登陆从库,切换到abcd库,然后查询student表,发现插入主库的数据已经同步到从库,验证说明上述配置成功、有效。
用到的命令:
创建student表
create table student(name varchar(10));
插入一条数据
Insert into student(name) values(‘java’);
切换数据库
Use abcd;
查询student
Select * from student;
原文地址:https://www.cnblogs.com/sqlservertongbu/p/11013581.html