Windows环境
MySQL-5.7.21
官网下载MySQL5.7.21.zip压缩包,解压缩 并复制出来三份 分别为m1 s1 m2 s2
其中 m1 -s1 这两个数据库我们要使用mycat做成分库分表,具体步骤请查看我的上一篇博客:
Mycat 使用记录(一)分库分表
然后我们现在要实现的是m2 --->m1 s2--->s1
首先:在这四个包下分别创建data目录 和my.ini文件
打开my.ini文件 添加如下参数
[mysqld]
log_bin = log
basedir = D:\\tools\\DB\\test-mysql\\m1
datadir = D:\\tools\\DB\\test-mysql\\m1\\data
port = 3310
character_set_server=utf8
server_id = 20
binlog-do-db=m2
[mysqld] log_bin = log
# 替换为自己的解压路径 basedir = D:\\tools\\DB\\mysql-5.7.21-winx64\\m1 datadir = D:\\tools\\DB\\mysql-5.7.21-winx64\\m1\\data port = 3307 character_set_server=utf8 server_id = 10 binlog-do-db=m2
注意 每个my.ini文件中的port和server_id不可重复
binlog-do-db=m2 表示要复制的数据库
同样在m2的my.ini文件中 binlog-do-db=m1
初始化MySQL实例
以管理员身份(不然会提示权限错误)运行命令提示符,cd至m1/bin目录下,执行mysqld install m1 --defaults-file="D:\Program Files\mysql-m1\my.ini",提示服务安装成功。接着初始化数据,执行mysqld --defaults-file="D:\Program Files\mysql-m1\my.ini" --initialize,稍等片刻,执行成功没有任何提示。另外三个库也以此类推安装并初始化。
然后运行服务
重置mysql的root用户密码
第一种:
密码默认生成在data目录下xxx.err文件中有一行A temporary password is generated for root@localhost:xxx,就是密码了,然后cd到bin目录下执行命令,mysql -P3306 -uroot -pxxx,登录进去。
执行以下命令修改root用户密码为123456,依次类推修改另外三个库的。
注:mysql -P 一定要加上,指定对应的端口号,不然是默认的3306
alter user 'root'@'localhost' identified by 'youpassword';
第二种:
在my.ini文件中添加skip-grant-tables 然后重启服务
在登陆MySQL 时候 mysql -P3310 -uroot -proot 密码随便输入就好 就可以跳过密码验证 登陆进去
随后修改密码 sql跟第一种的语句一样
密码修改完后 记得把
skip-grant-tables去掉 然后重启服务
配置权限
在主库中 创建一个从库用来登陆的用户
grant replication slave on *.* to slave@localhost identified by "123456";
然后查看master信息
记住file 和position
打开m2 登陆后 配置master信息
change master to master_host='127.0.0.1',master_port=3310,master_user='slave',master_password='123456',master_log_file='log.000003',master_log_pos=690;
开启并查看状态
在展示信息中 如果看到
则证明配置成功!
检测主从复制
在主库中 创建m2数据库
创建一张user表
插入一条数据
切换到从库 查看主从复制是否生效
可以看到 数据库和表都被同步复制过来
至此 配置MySQL主从复制完成 s1--->s2的复制 按如上步骤配置即可