文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Mysql——主从同步

2023-10-26 09:59

关注

、什么是Binlog?

Mysql的二进制日志可以是Mysql最重要的日志, 记录了所有的DDL和DML语句(除了数据查询语句之外的语句)语句,以事件形式记录,还包含语句所执行的消耗时间,Mysql的二进制日志是事务安全型的。

二进制日志包含两类文件:

1、二进制日志索引文件(文件后缀为".index")用于记录有所的二进制文件;

2、二进制日志文件(文件后缀为“.00000*”)记录了数据库所有的DDL和DML(除了数据查询语句之外的语句)

Binlog类型

Mysql Binlog种类有三种:Statement、Mixed、Row。

1、Statement:语句级,binlog会记录每次执行写操作的语句。

优点:节省空间。

缺点:有可能造成数据不一致。

2、row:行级,binlog会记录每次操作后每行记录的结果。

优点:保持数据的绝对一致性。

缺点:占用较大空间。

3、mixed:statement的升级版本,一定程度上解决了因为一些情况而造成的statement模式不一致问题,默认还是statement,在某些情况下,譬如:当函数中包含UUID()时,包含AUTO_INCREMENT字段的表被更新时;执行INSERT DELAYED语句时;用UDF时;会按照ROW的方式进行处理

优点:节省空间,同时兼顾了一定的一致性。

缺点:还有些极个别情况依旧会造成不一致,另外statement和mixed对于需要对binlog的监控的情况都不方便。

、主从同步机制

1、从数据库执行start slave,开启主从复制开关,slave服务器的IO线程请求从master服务器读取binlog(如果该线程追赶上了主库,会自动进入休眠状态)。

2、主数据库的更新SQL(update、insert、delete)被写到binlog,主库的binlog dump thread会把binlog的内容发送到从库。

3、从库启动之后,创建一个I/O线程,读取主库传过来的binlog内容并写到relaylog(会记录位置信息,一遍下次继续读取)。

4、从服务器的sql线程会实时检测relaylog中新增的日志内容,把relaylog解析成sql语句并执行。

四、主从同步配置
1、主数据库
1)登入MySQL,创建用于同步的账号(主数据库上创建)

[root@centos7-192.168.1.40 opt]# grant replication slave on *.* to replication@'从库IP地址/IP地址段' identified by '123456';

2)查看master状态,并记录File:xxx、Position:yyy

[root@centos7-192.168.1.40 opt]# show master status \G;

从数据库
1)登入MySQL,指定主数据库服务器信息

mysql>change master to master_host='192.168.1.40',    #主数据库IP地址master_user='replication',                            #主数据库上的同步账户账号master_password='starcor',                            #同步账号密码master_log_file='mysql-bin.000007',                   #日志文件(主库:show master status)master_log_pos=341;                                   #偏移位置(主/从库位置偏移了多少)

2)修改auto.cnf配置文件的server-uuid配置

mysql>show variables like 'datadir';        #查看auto.cnf存放路径+---------------+-------------------+| Variable_name | Value             |+---------------+-------------------+| datadir       | /data/mysql/data/ |+---------------+-------------------+1 row in set (0.01 sec)主从之间的server-uuid配置不能一致。

3)修改my.cnf配置文件的server-id配置
        主从之间的server-id配置不能一致。
4)启动slave程序g

mysql>start slave;

5)检查同步状态

mysql>show slave status \G;# 检查项Slave_IO_Running: Yes        #用于主从同步的线程IO线程是否在跑(Last_IO_Error:记录IO报错信息)Slave_SQL_Running: Yes        #从数据库的SQL执行线程是否在跑(Last_SQL_Error:记录SQL报错信息)

来源地址:https://blog.csdn.net/BiQing11/article/details/131352436

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯