MySQL主从备份结构和模式

目录

〔1〕MySQL主从同步

〔2〕原理

〔3〕主从同步结构类型

〔4〕一主一从结构构建

〔5〕一主多从构建

〔6〕主从从构建

〔7〕主从结构数据库数据复制模式

〔8〕半同步复制配置


〔1〕MySQL主从同步

  • 实现数据自动同步的服务机构,自动备份
  • 主服务器:接受客户端的访问连接
  • 从服务器:自动同步主服务器数据

〔2〕原理

  • 主数据库(主库),启用binlog,所有SQL操作记录在日志中,当binlog有新增的日志,则通知从数据库(从库)的IO线程来读取
  • IO线程读取主库binlog新增日志写入到本机的中继日志(relay-log)中,SQL线程再从中继日志中读取新增的数据写入到数据库

〔3〕主从同步结构类型

  • 一主一从:A<--B
  • 一主多从: A<--B A<--C
  • 主从从: A<--B<--C
  • 互为主从: A<-->B

注意:

    • 新安装的数据库,随机密码登录后修改密码
      • grep password /var/log/mysqld.log //查看随机密码,用该密码登录mysql
      • update mysql.user set authentication_string=password("新密码") where user="root" and host="localhost";
    • /etc/my.cnf配置文件中设置密码策略0,验证长度为6,便于创建授权用户时设置密码,否则可能出错

 

 

〔4〕一主一从结构构建

  • 主库配置
    • 启用binlog
      • vim /etc/my.conf 添加 log-bin=master51 server_id=51
      • systemctl restart mysqld
    • 创建授权用户
      • 从库连接主库使用
        • grant replication slave on *.* to repluser@'%' identified by '123456';
      • 客户端测试用户
        • grant all on db5.* to userone@'%' identified by '123456';
      • 查看binlog日志信息
        • 可以看到当前使用的日志名,位置偏移量
        • show master status;
  • 从库配置
    • 指定从库sever_id
      • /etc/my.cnf 添加server_id=52
      • systemctl restart mysqld
    • 从库与主库数据一致保证
      • --master-data 选项作用:记录当前备份数据对应的日志名称以及最新偏移量位置,以便从库知道从主库日志文件中什么位置读取数据
      • 主库备份数据,并传给从库
        • mysqldump -uroot -p123456 --master-data db5 > db5.sql
        • scp db5.sql root@192.168.4.52:
      • 从库建库,并导入
        • mysql -uroot -p123456 -e "create database db5"
        • mysql -uroot -p123456 db5 < db5.sql
    • 指定主库信息
      • 查看备份文件中主库的日志文件名和位置偏移量
        • grep master db5.sql
      • 配置信息
mysql>change master to master_host="192.168.4.51", //主库IP地址 
master_user="repluser", master_password="123456", //主库授权用户,密码 
master_log_file="master51.000001", //主库日志文件 
master_log_pos=154; //主库日志位置偏移量
      • 启动从库服务
        • start slave;
      • 查看slave状态,检查IO和SQL线程是否正常运行
        • show slave status;
      • 服务启动后,数据库中生成相关文件
        • 主库信息:master.info
        • 中继日志信息: relay-log.info
        • 中继日志: 主机名-relay-bin.xxxxxx
        • 索引文件: 主机名-relay-bin.index
  • 测试用户客户端登录主库,对数据库db5增删改查操作,查看从库同步效果

 

〔5〕一主多从构建

  • 每个从库配置文件配置server_id,重启mysql服务
  • 将主库的数据备份并传给所有从库,备份添加选项--master-data
  • 每个从库创建对应备份数据的数据库,然后导入
  • 查看备份数据文件中的日志名,位置偏移量,grep master db5.sql
  • 每个从库都使用change master指定主库信息:ip,user,password,log_file,log_pos
  • 启动slave,并检查IO,SQL线程运行状态,确认同步服务正常
  • 客户端测试

 

〔6〕主从从构建

  • 新建192.168.4.0网段中53,54,55主机做数据库服务器,53是54的主服务器,54是55的主服务器54是53的从服务器,55是54的从服务器,因此,53只做主服务器,55只做从服务器,54既是做主服务器也做从服务器.此时数据库都是原始的,一样.

 

  • 步骤一:53主机做主服务器
    • 启用binlog: vim /etc/my.cnf 添加两行
      • og-bin=db53 server_id=53
      • systemctl restart mysqld
    • 创建授权用户,从库连接主库的授权用户
      • grant relication slave on *.* to repluser@'%' identified by '123456';
    • 查看当前binlog日志文件名和位置偏移
      • show master status; //假如偏移位置为725

 

  • 步骤二: 54主机做从/主服务器
    • 启用binlog: vim /etc/my.cnf 添加三行
      • log-bin=db54 server_id=54
      • log_slave_updates //允许级联复制
      • systemctl restart mysqld
    • 创建授权用户,从库连接主库的授权用户
      • grant relication slave on *.* to repluser@'%' identified by '123456';
    • 指定53主机为主库
mysql>change master to master_host="192.168.4.53", //主库IP地址 
master_user="repluser", master_password="123456", //主库授权用户,密码 
master_log_file="master53.000001", //主库日志文件 
master_log_pos=725; //主库日志位置偏移量725
    • 启动服务
      • start slave; //起从服务
      • show slave status; //查看从服务,检查IO,SQL线程运行是否为YES,不是则排错
    • 查看当前binlog日志文件名和位置偏移
      • show master status; //假如偏移位置为1410

 

  • 步骤三: 55主机做从服务器
    • 设置server_id : vim /etc/my.cnf 添加一行
      • server_id=55
      • systemctl restart mysqld
    • 指定54主机为主库
mysql>change master to master_host="192.168.4.54", //主库IP地址 
master_user="repluser", master_password="123456", //主库授权用户,密码 
master_log_file="master54.000001", //主库日志文件 
master_log_pos=1410; //主库日志位置偏移量1410
    • 启动服务
      • start slave; //起从服务
      • show slave status; //查看从服务,检查IO,SQL线程运行是否为YES,不是则排错
  • 步骤四: 测试
    • 53主机数据库中建库,建表,插入数据,在54,55 数据库中都能查询到数据

 

〔7〕主从结构数据库数据复制模式

  • 异步复制(Asynchronous replication)
    • 主库执行完一次事务后,立即将结果返回给客户端,并不关心从库是否接收并处理成功.
  • 全同步复制(Fully synchronous replication)
    • 主库执行一次事务,需等所有从库都执行该事务后才将结果返回客户端.
  • 半同步复制(Semisynchronous replication)
    • 主库执行一次事务,至少一个从库执行事务后,写到relay-log中才将结果返回客户端.

 

〔8〕半同步复制配置

  • 查看数据库是否允许动态加载插件模块
    • show variables like 'have_dynamic_loading'; //默认允许
  • 加载插件模块
    • 主服务器半同步复制插件
      • install plugin rpl_semi_sync_master SONAME "semisync_master.so";
    • 从服务器半同步复制插件
      • install plugin rpl_semi_sync_slave SONAME "semisync_slave.so";
    • 查看插件激活状态
      • select plugin_name,plugin_status from information_schema.plugins
      • where plugin_name like "%semi%";
    • 查看半同步复制服务启动状态,默认关闭
      • show variables like "rpl_semi_sync_%_enabled";
    • 启动半同步复制服务,临时设置,马上生效
      • set global rpl_semi_sync_master_enabled=1;
      • set global rpl_semi_sync_slave_enabled=1;
  • 永久启动半同步复制服务
    • 修改/etc/my.cnf
    • 只做主服务器,则添加主服务器半同步复制插件
      • plugin-load="rpl_semi_sync_master=semisync_master.so"
      • rpl_semi_sync_master_enabled=1
    • 只做从服务器,则添加从服务器半同步复制插件
      • plugin-load="rpl_semi_sync_slave=semisync_slave.so"
      • rpl_semi_sync_slave_enabled=1
    • 既做主又做从的服务器,两种插件都添加
      • plugin-load="pl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
      • rpl_semi_sync_master_enabled=1
      • rpl_semi_sync_slave_enabled=1

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值