下一篇:程序员全套学习视频免费领取
上一篇:删库后,除了跑路还能怎么办
主从拷贝就是要保持两个数据库的状态自动同步,对任何一个数据库的操作都自动应用到另一个数据库,始终保持两个数据库中的数据一致。
mysql主从拷贝的目的
1. 实现数据库负载平衡(读写分离)
2. 数据备份
3. 高可用性(主数据库宕机时切换从数据库)
实现原理
(1) master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events);
(2) slave将master的binary log events拷贝到它的中继日志(relay log);
(3) slave重做中继日志中的事件,将改变反映它自己的数据。
前期准备
- 保持主库和从库的数据一致性
- 先将主数据库的连接都关闭,备份数据,
并将备份导入从数据库。 - 设置拷贝方式
mysql拷贝方式主要有三种:基于SQL语句的复制(SBR),基于行的复制(RBR),混合模式复制(MBR)。对应binlog的格式:STATEMENT,ROW,MIXED。我们选用SBR方式。在mysql的配置文件my.cnf中,配置binlog_format = STATEMENT
- 开通防火墙,保证主库能连接到从库
主库(master)配置
配置文件my.cnf中添加配置:
server-id=1
log-bin=mysql-bin
binlog-do-db=需要拷贝的库
创建拷贝数据用户
grant replication slave on *.* to slave@192.168.183.132 identified by 'slave‘
重启master,登陆后查看主库日志位置并记录
show master status;
从库(slave)配置
配置my.cnf文件:
server-id=2
log-bin=mysql-bin
log-slave-updates //如果从库要把数据拷贝到下一个
重启slave,设置主从拷贝
stop slave; //关闭slave拷贝
change master to master_host = '192.168.183.131' , master_user='slave', master_password='slave', master_log_file='mysql-bin.000004',master_log_pos=120; //在从库上设置主库信息
start slave; // 启动slave拷贝
show slave status \G; //查看拷贝状态
验证主从拷贝是否生效
在主库master拷贝的数据库中新建一张表
create table slave1 (a varchar(20),b decimal(8,4));
在从库中查看刚才在主库中创建的表
show create table slave_1;
主库创建的表已经同步给从库了,说明主从拷贝配置完成。
精彩推荐: