mysql主从复制

1、拓扑图

2、原理
从库生成两个线程,一个I/O线程,一个SQL线程;

i/o线程去请求主库 的binlog,并将得到的binlog日志写到relay log(中继日志) 文件中;

主库会生成一个 log dump 线程,用来给从库 i/o线程传binlog;

SQL 线程,会读取relay log文件中的日志,并解析成具体操作,来实现主从的操作一致,而最终数据一致;

 

3、如何安装第二个mysql
mysql5.7版安装教程

1、同mysql5.7版安装教程第一步

2、同mysql5.7版安装教程第二步

3、用管理员身份运行cmd,执行mysqld --install命令(指定服务名)

mysqld --install MySQL8.0.17MASTER --defaults-file=“D:\development-software\mysql\one-master-one-slave\mysql-8.0.17-winx64-master\my.ini”

4、修改注册表

HKEY_LOCAL_MACHINE–>SYSTEM–>CurrentControlSet–>Services
找到刚才创建的MySQL8.0.17MASTER,将ImagePath修改成如下

D:\development-software\mysql\one-master-one-slave\mysql-8.0.17-winx64-master\bin\mysqld    MySQL8.0.17MASTER

5、初始化

mysqld --defaults-file=D:\development-software\mysql\one-master-one-slave\mysql-8.0.17-winx64-master\my.ini --initialize --console

6、跳过密码登录

skip-grant-tables在8.0中已失效

可先停止mysql服务

在cmd中使用mysqld --console --skip-grant-tables --shared-memory

再另开cmd即可不用密码登录

7、修改密码

mysql忘记密码解决方案及三种方式修改密码

6、开启服务

net start MySQL8.0.17MASTER

7、naviat连接高版本mysql8.0报错2059解决办法

mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password

ALTER USER 'root'@'localhost' IDENTIFIED BY '密码' PASSWORD EXPIRE NEVER; #修改加密规则 
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码'; #更新一下用户的密码 
FLUSH PRIVILEGES; #刷新权限 

4、删除服务命令
sc delete MySQL8.0.17MASTER

5、搭建主从复制
1、在主库上新建用于主从复制的账号

//创建账号
CREATE USER `mysql.replication`@`localhost` PASSWORD EXPIRE NEVER;
//授权
GRANT Alter, Alter Routine, Create, Create Routine, Create Temporary Tables, Create User, Create View, Delete, Drop, Event, Execute, File, Grant Option, Index, Insert, Lock Tables, Process, References, Reload, Replication Client, Replication Slave, Select, Show Databases, Show View, Shutdown, Super, Trigger, Update ON *.* TO `mysql.replication`@`localhost`;
2、在主库上执行下面三个语句

ALTER USER 'root'@'localhost' IDENTIFIED BY '密码' PASSWORD EXPIRE NEVER;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码';
FLUSH PRIVILEGES;
执行完后,在分别在命令行和navicat用mysql.replication用户登录,都能登录之后,再往下进行

3、在从库执行stop slave

4、在从库执行(注意:这里有个坑,最好手动拼写;在主库执行show master status可查看master_log_file和master_log_pos的值)

change master to 
master_host='localhost',
master_port=3308,
master_user='mysql.replication',
master_password='ok',
master_log_file='mysql-bin.000029',
master_log_pos=155;

5、在从库执行start slave

6、验证:在从库执行show slave status\G,如果从库io线程和sql线程都是Running状态(即YES),表示主从复制成功
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值