MySQL数据库的主从拷贝

 

下一篇:程序员全套学习视频免费领取
上一篇:删库后,除了跑路还能怎么办

主从拷贝就是要保持两个数据库的状态自动同步,对任何一个数据库的操作都自动应用到另一个数据库,始终保持两个数据库中的数据一致。

mysql主从拷贝的目的

1. 实现数据库负载平衡(读写分离)

2. 数据备份

3. 高可用性(主数据库宕机时切换从数据库)

实现原理

(1) master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events);

(2) slave将master的binary log events拷贝到它的中继日志(relay log);

(3) slave重做中继日志中的事件,将改变反映它自己的数据。

MySQL数据库的主从拷贝_第1张图片

前期准备

  • 保持主库和从库的数据一致性
  • 先将主数据库的连接都关闭,备份数据,
    并将备份导入从数据库。
  • 设置拷贝方式

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 [email protected] identified by 'slave‘

重启master,登陆后查看主库日志位置并记录

show master status;

MySQL数据库的主从拷贝_第2张图片

从库(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; //查看拷贝状态

MySQL数据库的主从拷贝_第3张图片

验证主从拷贝是否生效

在主库master拷贝的数据库中新建一张表

create table slave1 (a varchar(20),b decimal(8,4));

在从库中查看刚才在主库中创建的表

show create table slave_1;

MySQL数据库的主从拷贝_第4张图片

主库创建的表已经同步给从库了,说明主从拷贝配置完成。
精彩推荐:

1、这200G的学习资料15888元买的,免费分享给大家(实用)

2、程序员们平时都喜欢逛什么论坛

3、如何快速打好Java基础?

MySQL数据库的主从拷贝_第5张图片

你可能感兴趣的:(mysql)