保障4-0601任务打卡

6月1日任务:
17.1 MySQL主从介绍
17.2 准备工作
17.3 配置主
17.4 配置从
17.5 测试主从同步
扩展部分
不停库不锁表在线主从配置
http://seanlook.com/2015/12/14/mysql-replicas/
主从不同步
http://www.rfyy.net/archives/2309.html
http://blog.51cto.com/storysky/259280
主主
关于 auto_increment https://blog.csdn.net/leshami/article/details/39779509
http://www.cnblogs.com/ygqygq2/p/6045279.html
mysql-proxy 实现读写分离
http://blog.51cto.com/zzclinux/1980487
mysql-proxy类似的产品有:
mycat 基于阿里的开源软件cobar,官网 www.mycat.io
https://my.oschina.net/ruoli/blog/1789370
mycat实现分库分表
https://www.cnblogs.com/joylee/p/7513038.html
atlas 出自于360,不维护不更新了 https://blog.csdn.net/AnPHPer/article/details/80566385
mysql环形主从
http://ask.apelearn.com/question/11437
mysql架构演变 http://www.aminglinux.com/bbs/thread-8025-1-1.html
MHA架构
http://blog.51cto.com/xiaoshuaigege/2060768
比较复杂的mysql集群架构 http://ask.apelearn.com/question/17026

17.1 MySQL主从介绍

1,简介

  • MySQL主从又叫做Replication、AB复制。
  • 简单讲就是A和B两台机器做主从后。
  • 在A上写数据,另外一台B也会跟着写数据,两者数据实时同步的。
  • MySQL主从是基于binlog的,主上须开启binlog才能进行主从。

2,主从过程大致有3个步骤

  • 1)主将更改操作记录到binlog里
  • 2)从将主的binlog事件(sql语句)同步到从本机上并记录在relaylog里
  • 3)从根据relaylog里面的sql语句按顺序执行

3,主从的原理

  • 主上有一个log dump线程,用来和从的I/O线程传递binlog。
  • 从上有两个线程,其中I/O线程用来同步主的binlog并生成relaylog。
  • 另外一个SQL线程用来把relaylog里面的sql语句落地

4,MySQL主从原理图

17-1.png

5,mysql主从的应用场景

  • 1,用作数据备份。来对抗各种事故,比如服务器宕机等。
  • 2,分流读取压力。不仅可以从主上读,也可以在从上读。

17.2 准备工作

安装sql的简单步骤

  • 下载一个二进制包
  • 解压
  • 把解压目录移动到/usr/local/mysql下。
  • 移动目录时可能出现的问题:mysql目录已存在。所以移动目录前要确认目标目录的情况。
  • 初始化./scripts/myssql_install_db --user=mysql --datadir=/data/mysql
  • 初始化时注意事项:mysql用户已建立,/data/mysql目录已存在
  • 更改/etc/my.cnf.把datadir和mysql.sock文件都指定好。
  • 把启动脚本复制到/etc/init.d下名字叫mysqld
  • 启动服务/etc/init.d/mysqld start
  • 加入开机启动chkconfig mysqld on

关于mysql启动报错的一种可能性

  • /data/mysql目录下的文件或目录所有者不属于mysql用户造成的。
  • 解决方法chown -R mysql:mysql /data/mysql

17.3 配置主

1,修改my.cnf

  • 在[mysqld]下添加server-id=101和log_bin=xymysql1
  • 修改完毕后要重启mysql
/etc/init.d/mysqld restart
  • 这时/data/mysql/目录下应该出现了以xymysql1为前缀的文件。
  • xymysql1.index为文件的索引。xymysql1.数字的文件为binlog。
  • 主从同步就是依靠这些文件来进行的。

2,制做一个测试用的库

  • zrlog库里有一些内容。
  • 所以,我们把这个库里的内容恢复到一个新建的库里,用来实验
  • 备份zrlog库
mysqldump -uroot -p79823871 zrlog > /tmp/zrlog.sql
  • 新建实验用库
mysql -uroot -p79823871 -e "create database xytest"
  • 将备份的zrlog.sql内容导入xytest库中
mysql -uroot -p79823871 xytest < /tmp/zrlog.sql
  • 这样就得到了两个相同的库

3,创建一个负责主从同步的用户

  • 进入mysql 输入以下语句
grant replication slave on *.* to 'repl'@slave_ip identified by 'password';
flush tables with read lock;
show master status;
  • replication slave就是同步权限
  • repl就是同步用户
  • slave_ip就是从服务器的ip
  • flush tables with read lock;锁表,后就不会继续写入内容了。
  • 输入show master status;后记录File和Position的内容。后边有用

4,备份数据库

  • 把除了mysql以外的数据库都做一个备份
mysqldump -uroot -p79823871 mysql2 > /tmp/mysql2.sql
mysqldump -uroot -p79823871 xytest > /tmp/xytest.sql
mysqldump -uroot -p79823871 zrlog > /tmp/zrlog.sql
  • 后边会将会用到这三个库

17.4 配置从

1,修改my.cnf文件

  • 在[mysqld]下添加server-id=102,要求和主不一样
  • 从不需要配置log_bin
  • 修改完配置文件后,启动或者重启mysqld服务

2,把备份的库导入从数据库

  • 用scp命令把备份文件复制过来
scp 192.168.19.101:/tmp/*.sql /tmp/
  • 创建备份过的库
mysql -uroot -p79823871 -e "create database mysql2"
mysql -uroot -p79823871 -e "create database xytest"
mysql -uroot -p79823871 -e "create database zrlog"
  • 使用备份文件恢复这几个库
mysql -uroot -p79823871 mysql2 < /tmp/mysql2.sql
mysql -uroot -p79823871 xytest < /tmp/xytest.sql
mysql -uroot -p79823871 zrlog < /tmp/zrlog.sql

3,启动从服务器的主从同步

  • 进入数据库
mysql -uroot
  • 停止从
stop slave;
  • 创建主从关系
change master to master_host='', master_user='repl', master_password='', master_log_file='', master_log_pos=xx,
  • master_host指主服务器ip。这里默认端口3306。如果用了其他端口使用master_port指定
  • master_user同步服务使用的mysql用户
  • master_password用户密码
  • master_log_file和master_log_pos就是在主服务器上执行show master status;显示的内容。
  • 启动从
start slave;
  • 查看主从状态
show slave stauts\G

查看主从同步是否正常

  • 从上执行
mysql -uroot
show slave stauts\G
  • 看是否有
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
  • 还需关注
Seconds_Behind_Master: 0  //为主从延迟的时间
 Last_IO_Errno: 0
 Last_IO_Error:
 Last_SQL_Errno: 0
 Last_SQL_Error:

  • 这些error一般会提示错误的原因。

Slave_IO_Running: no的原因

  • 由于是克隆过来的机器,所以两台机器的mysql的UUID冲突了。
  • 这时需要停止mysql服务
  • 把/data/mysql/auto.cnf删除或改名
  • 启动mysql服务即可

4,解除主服务器的锁表状态

  • 在主服务器的mysql里执行
unlock tables

17.5 测试主从同步

1,my.cnf关于主从配置的参数。

  • 主服务器:
    Binlog-do-db= //仅同步指定的库
    Binlog-ignore-db= //忽略指定的库
  • 从服务器
    replicate_do_db= //仅同步指定的库(不安全)
    replicate_ignore_db= //忽略指定的库(不安全)
    replicate_do_table= //仅同步指定的表(不安全)
    replicate_ignore_table= //忽略指定的表(不安全)
    replicate_wild_do_table= //如aming.%, 支持通配符%
    replicate_wild_ignore_table=
  • 尽量避免直接使用do或者ignore,使用wild_do或wild_ignore更安全。

2,测试

  • 主上删除表,查看从服务器相同的表是否存在。
    主上执行drop table db;
    从上执行show tables;和主的show tabels;对比
  • 主上清空表,查看从服务器相同的表是否还有内容。
    主上执行truncate table db;
    从上执行select count(*) from db;
    这个命令是查询表内有多少行的,如果行数相同,说明成功。
  • 主从同步的原理是在从服务器上重新执行一次在主服务器上的操作。
  • 所以,在从服务器上的任何形式的增删改都会导致主从不同步。
  • 如果想修复这种情况,只能重新在保证两方数据一致的情况下进行主从同步。

直播笔记

xtrabackup --> innobackupex

  • xtrabackup是一种备份方式。
  • innobackupex是前者的带innodb引擎备份的支持。

几篇和mysql主从有关的文章 关键词 GTID

https://blog.csdn.net/xiaoyi23000/article/details/80521423
https://blog.csdn.net/u013399093/article/details/70568837
https://www.cnblogs.com/abobo/p/4242417.html

了解几个关键词

  • 读写分离
  • 分库分表
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本火锅店点餐系统采用Java语言和Vue技术,框架采用SSM,搭配Mysql数据库,运行在Idea里,采用小程序模式。本火锅店点餐系统提供管理员、用户两种角色的服务。总的功能包括菜品的查询、菜品的购买、餐桌预定和订单管理。本系统可以帮助管理员更新菜品信息和管理订单信息,帮助用户实现在线的点餐方式,并可以实现餐桌预定。本系统采用成熟技术开发可以完成点餐管理的相关工作。 本系统的功能围绕用户、管理员两种权限设计。根据不同权限的不同需求设计出更符合用户要求的功能。本系统中管理员主要负责审核管理用户,发布分享新的菜品,审核用户的订餐信息和餐桌预定信息等,用户可以对需要的菜品进行购买、预定餐桌等。用户可以管理个人资料、查询菜品、在线点餐和预定餐桌、管理订单等,用户的个人资料是由管理员添加用户资料时产生,用户的订单内容由用户在购买菜品时产生,用户预定信息由用户在预定餐桌操作时产生。 本系统的功能设计为管理员、用户两部分。管理员为菜品管理、菜品分类管理、用户管理、订单管理等,用户的功能为查询菜品,在线点餐、预定餐桌、管理个人信息等。 管理员负责用户信息的删除和管理,用户的姓名和手机号都可以由管理员在此功能里看到。管理员可以对菜品的信息进行管理、审核。本功能可以实现菜品的定时更新和审核管理。本功能包括查询餐桌,也可以发布新的餐桌信息。管理员可以查询已预定的餐桌,并进行审核。管理员可以管理公告和系统的轮播图,可以安排活动。管理员可以对个人的资料进行修改和管理,管理员还可以在本功能里修改密码。管理员可以查询用户的订单,并完成菜品的安排。 当用户登录进系统后可以修改自己的资料,可以使自己信息的保持正确性。还可以修改密码。用户可以浏览所有的菜品,可以查看详细的菜品内容,也可以进行菜品的点餐。在本功能里用户可以进行点餐。用户可以浏览没有预定出去的餐桌,选择合适的餐桌可以进行预定。用户可以管理购物车里的菜品。用户可以管理自己的订单,在订单管理界面里也可以进行查询操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值