Mysql主从复制是一个异步的复制过程,底层是基于Mysql数据库自带的二进制日志功能。就是一台或多台Mysql数据库(slave,即从库)从另一台Mysql数据库(master,即主库)进行日志的复制然后再解析日志并应用到自身,最终实现从库的数据和主库的数据保持一致。Mysql主从复制是Mysql数据库自带功能,无需借助第三方工具。
环境
master(主库):
mysql 8.0.28
win10系统
端口号 3307
slave(从库):
mysql 8.0.27
win 10系统
端口号3306
主库配置:
(1)修改my.ini配置文件
# server_type=3
[mysqld]
port=3307 #服务器端口号
server-id=1 #主库标识id,要与从库不同
log-bin=mysql-bin
binlog_do_db=backup #要备份的数据库1
binlog_do_db=ry_demo #要备份的数据库2
(2)创建远程连接账号,并且给Slave用户授予REPLICATION SLAVE(主从复制)权限
# 创建用户
CREATE USER 'Slave'@'%' IDENTIFIED BY '123456';
# 赋予权限
grant all privileges on *.* to 'Slave'@'%';
# 刷新权限
FLUSH PRIVILEGES;
(3)登录mysql数据库,执行下面sql,记录下结果 中File和Position的值
show master status;
(执行完主库就不动了,为了查询结果 中File和Position的值)
从库配置:
(1)修改my.ini配置文件
[mysqld]
server-id=113 #从库id不能和主库一样
replicate-do-db=backup #要同步的数据库1
replicate-do-db=ry_demo #要同步的数据库2
(2)重启mysql服务
(3)配置主从连接
1、停止slave:
stop slave;
2、配置连接
CHANGE MASTER TO MASTER_HOST = '远程地址', MASTER_USER = 'Slave(配置创建的用户)',MASTER_PASSWORD = '123456',MASTER_PORT = 3307,MASTER_LOG_FILE='iZbp1i9kk9cqhpZ-bin.000060(刚才记录的File)',MASTER_LOG_POS=3661(刚才记录的Position的值,不加引号);
3、重新启动
start slave;
4、登录mysql数据库,执行下面sql,查看从数据库的状态
show replica status\G
至此,可以去数据库增加数据检察结果 。
新增一条:
本地主机已经数据同步过来
总结:
在使用mysql主从复制依然发现还有比较多的bug,比如:
1、如果从库数据人为更改了,那主从复制连接就断开失效,也就是从库数据不能更改,
2、mysql5与mysql8版本不同,使用简单的123456作为密码,依然会出错,这得找到错误日志,去网上找解决方法
3、。。。。。。