mysql做主从复制

一、定义

主从复制就是建立一个和主数据库完全一样的数据库环境,称为从数据库

二、作用

1、主数据库服务器出现故障后,从数据库可以继续提供服务
2、架构的扩展,业务量越来越大,I/O访问频率过高,单机无法满足,做多库的存储,降低磁盘I/O访问的频率,提高单个服务器的I/O性能
3、读写分离,使数据库支持更大的并发

三、原理

1、数据库有个bin-log的二进制文件,记录了所有的sql语句
2、将主数据库的bin-log文件的sql语句复制到从数据库
3、让从数据库的relay-log重做日志文件中再执行一次这些sql语句
具体围绕三个线程去操作:
主数据库创建一个线程发送二进制文件,从库中,创建一个I/O线程去请求读取主库里的二进制文件,读取之后,创建一个sql线程去执行

四、构建

1、Master主服务器的配置(ip:xx.xx.xx.x1)

a、编辑my.cnf(命令:find / -name my.cnf)

在[mysqld]中注释掉 bind-address = 127.0.0.1 不然mysql无法远程

#bind address = 127.0.0.1

注释掉 binlog_do_db 和 binlog_ignore_db ,则表示备份全部数据库
重启数据库

b、登录主服务器mysql创建从服务器用到的账号和权限

grant replication slave on *.* to 'masterbackup' @'xx.xx.xx.x2' identified by 'masterbackup;

新建密码为masterbackup的masterbackup 用户,并赋予replication slave 权限

c、查看主数据库的状态

主数据库状态
记录file和position,编写以下命令

change master to master_host='xx.xx.xx.x1',master_port=3306,master_user='masterbackup',master_password='masterbackup',master_log_file='mysql-bin.000007',master_log_pos=276;

2、Slave从服务器配置上的配置(xx.xx.xx.x2)

a、编辑my.cnf(命令查找文件位置:find / -name my.cnf)

在[mysqld]中

relay-log=slave-relay-bin
relay-log-index=slave-relay-bin.index

重启mysql服务器

b、重启

登录mysql,停止同步命令,stop slave,执行以下命令

change master to master_host='xx.xx.xx.x1',master_port=3306,master_user='masterbackup',master_password='masterbackup',master_log_file='mysql-bin.000007',master_log_pos=276;

重启数据同步 start slave

五、存在的问题

主从不同步的问题,从数据库读的延迟问题,优酷的解决方案是数据库分片,可以参考以下链接了解
读延迟问题解决方案

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值