mysql主从复制学习记录

xiaoxiao2021-03-01  20

什么是主从复制

 对MySQL-A数据库的操作,在数据库执行后,都会写入本地的日志系统A中。

 假设,实时的将变化了的日志系统中的数据库事件操作,在MYSQL-A的3306端口,通过网络发给MYSQL-B。

 MYSQL-B收到后,写入本地日志系统B,然后一条条的将数据库事件在数据库中完成。

 那么,MYSQL-A的变化,MYSQL-B也会变化,这样就是所谓的MYSQL的复制,即MYSQL replication。

简单一句话概括:主数据库变化将生成日志文件放在本地,从数据库通过网络请求拿到数据库日志文件写到自己的库中,保证数据一致

主从复制问题:即便不考虑网络的因素,MYSQL-A的数据库操作是可以并发的执行的,但是MYSQL-B只能从日志中读一条一条执行下。因此MYSQL-A的写操作很频繁,MYSQL-B很可能跟不上。

解决办法:清除所有数据,重新同步

主从复制的作用:1数据防丢失2备份3读写分离4数据库负载均衡5高可用

主从复制用法

1,服务器准备

192.168.200.141  主服务器 master

192.168.200.142  从服务器slave

2,修改主服务器配置文件

2.1编辑文件

vi /etc/my.cnf 新增以下内容 server_id=141 ###服务器id log-bin=mysql-bin ###开启日志文件

2.2重启数据库

service mysqld stop service mysqld start

2.3主服务器给从服务器账号授权

GRANT REPLICATION SLAVE ON *.* to 'mysync'@'%' identified by 'q123456'; //一般不用root帐号,“%”表示所有客户端都可能连,只要帐号,密码正确,此处可用具体客户端IP代替,如192.168.145.226,加强安全。

2.4登录主服务器的mysql,查询master的状态

2.5查看ID是否生效

3,修改从服务器配置文件

server_id=142 log-bin=mysql-bin binlog_do_db=pboss

剩下步骤效验和主服务器不变,不过多截图

3.1启动同步

stop slave change master to master_host='192.168.200.141',master_user='mysync',master_password='q123456', master_log_file='mysql-bin.000002',master_log_pos=521; start slave

host为主数据库IP,user和pass为主数据库授权账号密码,下面两个参数为主服务器执行

show master status;

所得到的参数

4检查从服务器复制功能状态

SHOW SLAVE STATUS

从服务器执行这个命令

若这两个参数均为yes,则成功,此时更改主数据库,从数据库数据相应变化,但更改从数据库,主数据库不变

 

遇到问题:

1..若是报错Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work

原因:数据库为copy的,所以数据库的UUID为一样的

解决办法:将/usr/local/mysql/auto.cnf文件删除,按上面重启数据库方法重启数据库即可

2..给账号分配权限

grant all privileges on *.* to 'root'@'172.27.185.1' identified by 'root';

一般不建议用root权限账号,这个是需要IP地址的授权,安全性更高

转载请注明原文地址: https://www.6miu.com/read-4550185.html

最新回复(0)