MySQL 主从复制
简介
MysSQL主从复制是一个异步的复制过程,底层是基于Mysql数据库自带的二进制日志功能。就是一台或多台AysQL数据库(slave,即从库)从另一台MysQL数据库(master,即主库)进行日志的复制然后再解析日志并应用到自身,最终实现从库的数据和主库的数据保持一致。MySQL主从复制是MysQL数据库自带功能,无需借助第三方工具。
MysQL复制过程分成三步:
- master将改变记录到二进制日志( binary log)
- slave将master的binary log拷贝到它的中继日志(relay log)
- slave重做中继日志中的事件,将改变应用到自己的数据库中
配置前提条件
提前准备好两台安装mysql的服务器
配置master
-
修改MySQL 配置文件
[mysqld] log-bin=mysql-bin #[必须]启用二进制日志 server-id=100 #[必须]服务器唯一ID
-
重启服务
systemctl restart mysql
-
登录MySQL ,创建用户并赋予该用户
**REPLICATION SLAVE**
权限use mysql; # 查看用户 select host, user from user; # 创建用户 CREATE USER '用户名'@'%' IDENTIFIED BY '密码'; # 再查看用户 -- 是否创建成功 select host, user from user; # 赋予权限 grant REPLICATION SLAVE on *.* to '用户名'@'%'; # 刷新权限 flush privileges;
-
执行
show master status
记录file值和Position的值—然后不要做任何操作
配置slave 从库
-
修改配置文件
[mysqld] server-id=101 #[必须]服务器唯一ID
-
重启MySQL服务
systemctl restart mysql
-
执行一下sql
change master to master_host='IP地址',master_port=3306,master_user='用户名',master_password='密码' ,master_log_file='mysql-bin.000003',master_log_pos=441; start slave
-
执行
show slave status\G
查看状态
修改MySQL加密规则
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
成功运行会显示
Query OK, 0 rows affected (0.01 sec)
第二步在命令界面输入,后面的数字即为要修改的密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
如果出现
1396 - Operation ALTER USER failed for 'root'@'%'
错误提示可改为
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
最后输入完成更改
flush privileges;