美文网首页
mysql主从复制

mysql主从复制

作者: wuzsheng | 来源:发表于2020-02-25 23:43 被阅读0次

环境

172.16.144.22(master)
172.16.144.168(slave)
系统:centos7.7
创建个数据库,演示对已有的数据进行数据同步
在master中create database wu;

在主服务器开启二进制日志并设置编号

vim  /etc/my.cnf.d/server.cnf
[mysqld]
log-bin=master-bin\\开启二进制
log-bin-index=master-bin.index \\二进制索引文件,保存所有binlog文件列表
server-id=1  \\设置服务器唯一编号
sync_binlog=1(确保binlog日志写入以后与硬盘同步)
binlog_format=mixed(bin-log日志文件格式,设置为mixed,可以防止主键重复)
binlog-do-db=zhi(表示同步的库为zhi) #只同步该库

log-bin 不设置的话,默认值  hostname-bin。修改主机名,binlog文件名也会随之改变。但索引文件log-bin-index会获取正确的值。(只是binlog文件序列中途改名会混乱)
log-bin-index 没赋值,默认值与binlog文件同名。索引文件名会随主机名的改变而改变。改变主机名在重启,将找不到索引文件。而认为索引文件不存在,导致二进制日志为空。
service mysql  restart
service iptables stop


创建复制账号数据复制时,从服务器都需要使用账户与密码连接MySQL主服务器
且必须有replication slave权限
grant replication slave,replication client on *.*  to  root@'172.16.144.168 '  identified  by  'cnhope';
有replication slave权限能够获取master上的二进制日志,就没啥了。
可执行show master/slave status 

从服务器设置服务器编号

vim  /etc/my.cnf.d/server.cnf
[mysqld]
#relay-log-index=slave-relay-bin.index
#relay-log=slave-relay-bin  //作用跟上面的一样
server-id=2  \\(主机唯一的标识码,不能重复)
log-bin=mysql-bin(开启二进制日志系统)
slave-skip-errors=all(跳过所有的错误,继续执行复制操作)
replicate-do-db=zhi(需要同步的数据库名字,和Master要一致)

获取主服务器二进制日志信息

myql  -uroot –pcnhope
flush tables with read lock;  \\设置对所有数据库表只读
【图1】
show master status;
unlock tables; \\解锁
1.png

配置从服务器连接主服务器进行数据复制

MariaDB [(none)]>stop slave;
MariaDB [(none)]> change master to 
    -> master_host=' 172.16.144.22',
    -> master_user='wu',
    -> master_password='cnhope',
    -> master_log_file='Jacob-bin.000004',  \\主服务器二进制日志位置
-> master_log_pos=327;
MariaDB [(none)]> start slave;  \\开启主从连接
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> show slave status\G; \\查看从服务器状态
2.png
3.png

验证数据同步

在master创建create database zhi; slave同步
Master创建其他库,则不同步

问题

1

在centos7.7版本10.4.10-MariaDB中在/etc/my.cnf填写
[mysql]
log_bin=mysql-bin
log-bin-index=master-bin.index
启动成功但 不生效 mysql时提示该字段不生效
该字段要在/etc/my.cnf.d/server.cnf配置才生效

2

Start slave或者change master to厖报错时
reset slave; 再重新change master to 设置即可

3

vim /etc/my.cnf.d/server.cnf
[mysqld]
datadir=/var/lib/mysql
mysql在启动时没有指定配置文件时会使用/etc/my.cnf配置文件

关闭进程
ps –ef |grep mysql

知识点

优点支持myisam和innodb存储引擎
二进制日志:记录服务器数据库上所有变更。
记录数据库中表的更改(执行完毕的语句才会被写入二进制日志)

show binlog events\G;
或者
show binlog events in 'master-bin.000001'\G


Log_name:存储事件的文件名(一个事件只能存储在一个文件中)
Pos:事件在文件中的开始位置
Event_type:事件类型
Server_id:创建服务器ID
End_log_pos:事件在文件中的结束位置
Info:事件信息的可读文本

前两个组成事件二进制日志位置
当前正在写入的二进制日志文件:
show master status\G



Stop slave 停止slave
Reset slave 重置slave
flush tables with read lock;
刷新所有表并锁定数据库,防止在检查binlog 位置之前数据库发生改变

相关文章

  • MySQL如何配置主从复制,如何修复主从复制出现的异常?

    MySQL如何配置主从复制,如何修复主从复制出现的异常? 一、什么是Mysql主从复制 MySQL主从复制是其最重...

  • MySQL-主从复制&读写分离

    零、本文纲要 一、MySQL主从复制 主从复制 主从复制过程 配置主从复制 二、MySQL读写分离 读写分离 Sh...

  • Mysql 主从复制

    Mysql 主从复制 MySQL Replication 主从复制(也称 AB 复制)允许将来自一个MySQL数据...

  • 主从复制 & MHA

    一,mysql主从复制 (1)场景一(主从复制 _ 全新环境下) (2)场景二(主从复制 _ mysql已经使用一...

  • mysql主从复制

    构建MySQL主从复制 MySQL的主从复制和mysql的读写分离两者有着紧密联系,数据的读写分离实在主从复制的基...

  • Spring Data JPA 使用主从数据源

    Mysql 配置主从复制 参考:Mysql主从复制-半同步复制[https://www.jianshu.com/p...

  • MySQL集群篇

    1 集群之主从复制 1.1 主从复制概述 MySQL主从复制也可以称为MySQL主从同步,它是构建数据库高可用集群...

  • 深度探索MySQL主从复制原理

    概要 MySQL Replication (MySQL 主从复制) 是什么? 为什么要主从复制以及它的实现原理是什...

  • 【转】MySQL 8.0复制改进

    1 - MySQL主从复制模型 我们从最基本的主从复制模型开始说起,下图是最经典的MySQL主从复制架构图: My...

  • mysql主从代理

    mysql主从复制+读写分离 环境: mysql主:193.168.1.1 mysql从:193.168.1.2 ...

网友评论

      本文标题:mysql主从复制

      本文链接:https://www.haomeiwen.com/subject/kzbkchtx.html