MySQL主从同步

一、mysql主从同步


1.1 什么 是主从同步
实现数据自动同步的服务结构,结构中分为2种角色
主服务器:接收客户端访问的数据库服务器
从服务器:自动从主库服务器同步数据到本地的数据库服务器


1.2mysql主从同步工作原理
主库必须开binlog日志
从库I/O线程读取(复制)主库的binlog日志的SQL命令到本机的中继日志
从库SQL线程执行本机的中继日志里的SQL命令(重现主库数据操作)

1.3配置mysql主从同步
1)服务器角色
client 50
master 51
slave  52

注:本次实验需192.168.4.50~56共七台虚拟机

```````````````````````````````````````````````````````````````````````````
2)配置主服务器 51
启用binlog日志文件
]#vim /etc/my.cnf

[mysqld]
log_bin=master51(日志文件名)
server_id=51

binlog_format="mixed"  #指定日志格式,本次实验没有用,不用加
...
]#重启
]#mysql -uroot -p888888 -e "show master status"

]#ls /var/lib/mysql/master51.*

用户授权
mysql>grant replication slave on *.* to 用户名@"%" identified by "密码";

查看binlog日志信息
mysql>show master status;
+-----------------+----------+--------------+------------------+-------------------+
| File            | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-----------------+----------+--------------+------------------+-------------------+
| master51.000001 |      440 |              |                  |                   |
+-----------------+----------+--------------+------------------+-------------------+


-------------------------------------------------------------------------------------------------------------------

3)配置从服务器 52
指定server_id
]#vim /etc/my.cnf
[mysqld]
server_id=52     
]#重启


指定主服务器信息
mysql>change master to master_host="192.168.4.51(主服务器ip)",master_user="用户名(主服务器授权的用户)",master_password="密码(主服务器授权的密码)",master_log_file="master51.000001(binlog日志文件名)",master_log_pos=440(偏移量);

启动slave进程
mysql>show slave status;
mysql>start slave;
mysql>show slave status\G;
    Slave_IO_Running: Yes
    Slave_SQL_Running: Yes

##############################################################

[从库]排错:进去先看mysql>show slave status;     
 Slave_IO_Running: Connecting
 Slave_SQL_Running: Yes
Last_IO_Error:  报错信息....
Last_SQL_Error: 报错信息...

查主服务器是否有该用户
1.密码可能不对:
]#cat /var/lib/mysql/master.info(里面包含用户密码)
mysql>set password for 用户名@"%"=password("新密码");

mysql>stop slave;先关从服务
哪部分错了就改哪部分
mysql>cahnge master to master_user="用户",master_password="密码";
mysql>start slave;

mysql>show slave status;

 Slave_IO_Running: Yes
            Slave_SQL_Running: No

分析:从库执行中继日志文件中的改密码时用户不存在则报错,需在从库增该用户


-------------------------------------------------------------------
2.用户不存在:
 Slave_IO_Running: Connecting
 Slave_SQL_Running: Yes
Last_IO_Error:  报错信息....
Last_SQL_Error: 报错信息...
原因:在主库授权在从库指定的用户
再从库刷新,stop slave;  start slave;  show slave status;


3.用户名写错了
把进程停了,修改用户信息,再启进程
stop slave;
change master to master_user="",master_password="";
start slave;
show slave status\G

4.没有重置初始密码

5.binlog日志文件写错了(或文件前面多写了个空格)
stop slave 
change master to master_file="binlog日志文件";


############################################################

-------从库相关文件:
中继日志文件:/var/lib/mysql/host52(主机名)-relay-bin.index #索引文件
            /var/lib/mysql/host52(主机名)-relay-bin.编号
中继日志信息文件:/var/lib/mysql/relay-log.info
主库信息     :/var/lib/mysql/master.info
删了这类文件=主从还原


1.4验证配置
1)在主服务器添加访问数据的连接用户
create database db7;
grant all on db7.* to 用户名@"%" identitfied by "密码";


2)在客户端连接主服务器,对数据进行操作
mysql>mysql -u用户 -p密码 
3)在从服务器本机查看是否和主服务器的数据一致

二、mysql主从同步模式


2.1 mysql主从同步结构模式
一主一从
一主多从
主从从、主主结构 #通常不单用,和其他软件用做高可用集群

一主多从:1.给当前主服务器51   再配合置一台从服务器53
    2.在没有配置为从服务器之前,要有主服务器上的数据

mysql>source /root/db7.sql  #要在库里操作
    3.设置新增从库主机的server_id
    4.指定主服务器信息
]#mysql -h192.168.4.51 -u主库授权从库的用户名 -p密码 (仅验证是否可以登陆)
本地指定主库信息mysql>change master to masater_host="",master_user="",master_password="",
master_log_file="",master_log_pos=; 参考主服务器的binlog日志
    5.启动slave进程
mysql>start slave;
    6.查看进程信息
mysql>show slave status\G;
  Slave_IO_Running: Yes
  Slave_SQL_Running: Yes

    7.客户端测试
客户端连接主数据库访问数据,执行建库建表插入等操作
分别在从服务器本机查看数据
 


主从从:  给当前的从服务器52 配置1台从服务器54
    配置52(主兼从)
     启用binlog日志
]#vim /etc/my.cnf
log_bin=master52
server_id=52
log_slave_updates 允许链式复制
]#重启

     用户授权
mysql>show slave status\G; 查看原来的从服务状态Yes
mysql>grant replication slave on *.* to 用户名@"%" identified by "密码";
    查看binlog日志信息
mysql>show master status;
     

准备同步:
    完全备份库mysqldump -u -p 库> 文件
    拷贝到从服务器


    配置54(从)
    使用备份文件恢复数据
建库(与主库的完全备份的库名一致)
进库 source 备份数据的文件
    指定server_id
]#vim /etc/my.cnf
server_id=54
]#重启
    指定主库信息

mysql>change master to master_host="",master_user="",master_password="",
master_log_file="",master_log_pos= ;#可参考主库binlog日志信息

mysql> start slave;
mysql> show slave status\G
          Slave_IO_Running: Yes
             Slave_SQL_Running: Yes

    客户端测试
连接第一个主服务器执行操作
查看所有从服务器上的数据变化

主主结构  : 把数据库服务器55和56配为主主


2.2mysql主从复制模式
异步复制模式?
默认的
]主库接受到客户请求后,处理完事务后,立即将结果返给客户端,不去关系从库是否已经接收并处理
客户体验度高,访问从库可能没有数据


全同步复制模式?
]当主库执行完一次事务,且所有从库都接受并处理之后,才返回给客户端
客户体验度差,数据同步好

半同步模式?
]介于两种模式之间,主库执行一次事务后,等待至少一个从库接受并写到relay log中才返回给客户端

2.3 Mysql主从同步常用选项(/etc/my.cnf)
    2.3.1 用于主服务器的配置选项
        binlog_do_db=数据库名 [只允许同步的库]
        binlog_ignore_db=数据库名 [不允许同步的库]
    2.3.2 用于从服务器的配置选项
        log_slave_updates    [记录从库更新,允许链式复制]
        replicate_do_db=库    [仅同步的库]
        replicate_ignore_db=库    [仅不同步的库]
        relay_log=日志名    [自定义中继日志文件名]

 

主库配置选项,适用于master服务器

从库配置选项,适用于slave服务器

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
MySQL主从同步是一种数据复制机制,用于将一个MySQL数据库实例中的数据自动复制到其他MySQL数据库实例,从而实现数据的备份、负载均衡和故障恢复等功能。 在主从同步中,一个MySQL实例被配置为主服务器(Master),而其他实例被配置为从服务器(Slave)。主服务器负责接收和处理客户端的写操作,然后将这些操作记录到二进制日志(Binary Log)。从服务器连接到主服务器,并通过读取主服务器的二进制日志来复制这些操作。从服务器将这些操作应用到自己的数据上,以保持与主服务器数据的一致性。 配置MySQL主从同步需要进行以下步骤: 1. 确保主服务器和从服务器之间可以互相通信。 2. 在主服务器上开启二进制日志功能,并配置二进制日志文件的位置和名称。 3. 在主服务器上创建一个用于复制的用户,并为该用户授予复制权限。 4. 在从服务器上配置复制参数,包括指定主服务器的IP地址、连接用户名和密码等。 5. 启动从服务器,并连接到主服务器进行复制。 6. 监控主从同步过程,确保数据的一致性和同步性。 需要注意的是,在配置主从同步时,需要考虑网络延迟、带宽和硬件性能等因素,以确保同步过程的效率和稳定性。另外,主从同步只能复制数据更改操作(如插入、更新、删除),而不能复制结构变更操作(如创建表、修改表结构)。如果需要同步结构变更,可以使用其他工具或方法来实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值