接上一篇:企业实战_06_MyCat 常用的分片算法
https://gblfy.blog.csdn.net/article/details/118770261

文章目录

  • 一、 环境准备
    • 1. 主从复制搭建流程
    • 2. 服务器分布
  • 二、 MySql 主机节点操作如下
    • 2.1. 创建数据库
    • 2.2. 初始化表结构及数据
    • 2.3. 验证
    • 2.4. 数据备份
    • 2.5. 脚本同步
    • 2.6. 异常解决方案
  • 三、node2节点
    • 3.1. 创建order_db数据库
    • 3.2. 将bak_imooc.sql导入到order_db数据库中
  • 四、mysql主从复制账号创建
    • 4.1. 登录数据库
    • 4.2. 创建主从复制的账号
    • 4.3. 账号授权
  • 五、 创建复制链路
    • 5.1. 登陆数据库
    • 5.2. 查看复制链路帮助
    • 5.3. 建立复制的链路
    • 5.4. 查看链路
    • 5.5. 截图如下
  • 六、 常规主从复制和非常规主从复制的区别
    • 6.1. 常规主从复制
    • 6.2. 非常规主从复制
    • 6.3. 解决方案
  • 七、设置过滤链路
    • 7.1. 查看change replication filter命令帮助 数据库过滤
    • 7.2. 设置过滤链路 进行数据库名映射
    • 7.3. 查看链路
  • 八、启动复制链路,并监控
    • 8.1. 启动复制链路
    • 8.2. 查看链路
  • 九、主从复制验证
    • 9.1. 验证思路
    • 9.2. 登录node1节点
    • 9.3. 登录node2节点
一、 环境准备
1. 主从复制搭建流程
第1步 备份数据库并记录相关事务节点
第2步 在源(主机)数据库中,创建主从复制的用户
第3步 在新实例上恢复备份的数据库
第4步 在新实例上配置复制链路
第5步 如果主机上的库名和从机上的库名不一致时,需要建立过滤链路
第6步 在新实例上启动复制链路
2. 服务器分布

数据库架构升级为垂直分库,依次搭建mysql主从复制,一主一从、一主二从、一主三从环境

主机名 IP地址 角色 数据库
node1 192.168.92.101 MYSQL、mycat imooc_db(主机物理)
node2 192.168.92.102 MYSQL order_db(从机物理)
node3 192.168.92.103 MYSQL product_db(主机物理)
node4 192.168.92.104 MYSQL customer_db(从机物理)
二、 MySql 主机节点操作如下

声明:提前启动mysql

2.1. 创建数据库
mysql -uroot -p -e"create database imooc_db"
2.2. 初始化表结构及数据
  • 这里为了演示,找了一个点上项目的表和数据,需要初始化一下
mysql -uroot -p imooc_db < imooc_db.sql
链接 https://pan.baidu.com/s/1s2cFK-ZsQKSbpg8CtWdShw
提取码 n8bq
2.3. 验证
# 登录mysql
mysql -uroot -p
输入密码:123456# 查看数据库列表
show databases;# 使用imooc_db数据库
use imooc_db;# 查看当前imooc_db数据库下的表列表
show tables;

操作记录

[root@node1 ~]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.7.34 MySQL Community Server (GPL)Copyright (c) 2000, 2021, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| imooc_db           |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.01 sec)mysql> use imooc_db;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changed
mysql> show tables;
+-----------------------+
| Tables_in_imooc_db    |
+-----------------------+
| customer_balance_log  |
| customer_inf          |
| customer_level_inf    |
| customer_login        |
| customer_login_log    |
| customer_point_log    |
| order_cart            |
| order_customer_addr   |
| order_detail          |
| order_master          |
| product_brand_info    |
| product_category      |
| product_comment       |
| product_info          |
| product_pic_info      |
| product_supplier_info |
| region_info           |
| serial                |
| shipping_info         |
| warehouse_info        |
| warehouse_proudct     |
+-----------------------+
21 rows in set (0.00 sec)mysql> exit
Bye
[root@node1 ~]#
2.4. 数据备份

将imooc_db的表、数据、存储过程、触发器、事件备份成一个名称叫bak_imooc.sql的文件中

mysqldump --master-data=2 --single-transaction --routines --triggers --events -uroot -p imooc_db > bak_imooc.sql

异常解决方案(没遇到就跳过):
bash: mysqldump: command not found
mysqldump备份报Binlogging on server not active的解决

2.5. 脚本同步

将bak_imooc.sql同步到从机node2节点

[root@node1 ~]# scp bak_imooc.sql root@192.168.92.102:/root
2.6. 异常解决方案

mysqldump备份报Binlogging on server not active的解决

三、node2节点
3.1. 创建order_db数据库
# 创建order_db数据库
mysql -uroot -p -e"create database order_db"
3.2. 将bak_imooc.sql导入到order_db数据库中
mysql -uroot -p order_db < bak_imooc.sql
四、mysql主从复制账号创建

在MySql主机node1节点上,创建mysql 主从复制的账号

4.1. 登录数据库
 mysql -uroot -p #输入密码:123456
4.2. 创建主从复制的账号
 create user 'im_repl'@'192.168.92.%' identified by '123456';
4.3. 账号授权

给主从复制的账号赋予操作所有对象的replication slave权限

 grant replication slave on *.* to 'im_repl'@'192.168.92.%';
五、 创建复制链路

在node2节点操作

5.1. 登陆数据库
mysql -uroot -p
5.2. 查看复制链路帮助
\h change master to
5.3. 建立复制的链路
change master to master_host='192.168.92.101',master_user='im_repl',master_password='123456',MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=154;
  • master_host:主节点的ip
  • master_user:在主节点创建数据复制同步的用户
  • master_password:主从复制用户的密码
  • MASTER_LOG_FILE:同步开始的时间点(开始同步的文件名,开始复制日志的事务点),这个记录在备份同步的文件中
[root@node2 ~]# more bak_imooc.sql # 内容
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=154;


异常解决方案(没遇到则跳过):
Slave is not configured or failed to initialize properly. You must at least set --server-id

5.4. 查看链路
show slave status \G
5.5. 截图如下


Slave_IO_Running: No 和Slave_SQL_Running: No2个参数的状态,可以看出,主从复制链路已经建立好了,但是没有启动。尚未启动,启动之前需要做哪些准备?

六、 常规主从复制和非常规主从复制的区别
6.1. 常规主从复制
  • 主机上的数据库名和从机上的数据库名是一致的。
  • 举个栗子:
    主机上的数据库名叫gblfy_db,从机上的数据库名也叫gblfy_db。

声明:如果主从数据库名都一致的话,可以直接启动复制链路,跳过设置过滤链路。

6.2. 非常规主从复制

在垂直拆分中,当主从复制中,主机上的数据库名和从机上的数据库名不一致,从机上的数据库名,按照我们的业务模块名来命名的,应该做哪些操作呢?

举个栗子:
主机上的数据库名叫imooc_db,从机上的数据库名,根据业务模块来命令的叫order_db。

6.3. 解决方案

使用change replication filter设置即可,通过过滤链路把数据库名进行映射

七、设置过滤链路
7.1. 查看change replication filter命令帮助 数据库过滤
\h change replication filter
7.2. 设置过滤链路 进行数据库名映射
# 主从数据库名映射change replication filter replicate_rewrite_db=((imooc_db,order_db));
7.3. 查看链路
# 查看链路show slave status \G# 日志显示过滤链路
Replicate_Rewrite_DB: (imooc_db,order_db)

注:现在已经建立好了过滤,通过率把数据库名进行了重新命名

八、启动复制链路,并监控
8.1. 启动复制链路
start slave;
8.2. 查看链路
show slave status \G


正常如下图,都是yes才对

0)
注:如果遇到mysql主从复制之异常解决— Slave_IO_Running: NO,请:
mysql主从复制之异常解决— Slave_IO_Running: NO

到目前为止,一主一从的复制链路已经创建完成,那如何验证复制链路是否将数据同步到从机上呢?

九、主从复制验证
9.1. 验证思路
案例思路:
1. 登录主机上数据库,在主机上新增或者修改一个表的数据,会自动主从复制
2. 登录从机上数据库,查看在主机上修改一个表的数据,在从机上是否也被更改
3. 如果更改则说明复制链路成功,能正常进行主从复制功能;否则,查看日志,定位异常信息及制定解决方案
9.2. 登录node1节点
#登录数据路
mysql -uroot -p# 显示当前mysql中的所有数据库
show databases;# 使用指定数据库
use imooc_db;# 显示当前使用数据库中的所有的表
show tables;# 查看region_info 的数据
select * from region_info ;
注:显示没有数据# 新增一条数据
INSERT INTO `region_info` VALUES (1, 0, '中国', 0);# 再次查看region_info 的数据
select * from region_info ;

9.3. 登录node2节点
#登录数据路
mysql -uroot -p# 显示当前mysql中的所有数据库
show databases;# 使用指定数据库
use order_db;# 显示当前使用数据库中的所有的表
show tables;# 查看region_info 的数据
select * from region_info ;

从上面截图可以看出,在node1节点的imooc_db的region_info表中添加的一条数据,node2节点的order_db的region_info表中也同步了这条数据,目前,一主一从的mysql环境搭建完成。

下一篇:企业实战_08_MyCat 搭建Mysql 一主二从复制环境
https://gblfy.blog.csdn.net/article/details/118651265

企业实战_07_MyCat 搭建Mysql 一主一从复制环境相关推荐

  1. 企业实战_08_MyCat 搭建Mysql 一主二从复制环境

    接上一篇:企业实战_07_MyCat 搭建Mysql 一主一从复制环境 https://gblfy.blog.csdn.net/article/details/118640210 文章目录 一.解决同 ...

  2. 企业实战_09_MyCat 搭建Mysql 一主三从复制环境

    接上一篇:企业实战_08_MyCat 搭建Mysql 一主二从复制环境 https://gblfy.blog.csdn.net/article/details/118651265 文章目录 一.解决同 ...

  3. MySQL一主一从复制搭建(Windows XP环境)--相同主机或不同主机

    MySQL一主一从复制搭建(Windows XP环境) 搭建完成后的健康检查: MySQL监控检查结果.zip 主库: 从库: --- Windows XP环境下实现主从复制 192.168.1.29 ...

  4. 搭建mysql一主一备

    一.master主机上部署===== 1.上传镜像文件mysql5.7.tar到/home目录下. 2.若无docker,先安装docker工具. 安装docker 进入到/home/sec-inst ...

  5. 后端搭建MySQL_Docker前后端分离实战之搭建MYSQL集群

    这门慕课实战对想了解Docker的人很有帮助.感谢神思者l大佬 renren-fast 后台:SpringBoot+SSM+Shiro+swagger(API调试)+Redis+JWT(单点登录) L ...

  6. 企业实战_06_MyCat 常用的分片算法

    接上一篇:企业实战_05_MyCat用户密码加密 https://gblfy.blog.csdn.net/article/details/100056536 下一篇:企业实战_07_MyCat 搭建M ...

  7. 企业实战_10_MyCat Mysql 主复制总结

    接上一篇:企业实战_09_MyCat 搭建Mysql 一主三从复制环境 https://gblfy.blog.csdn.net/article/details/118652450 使用master-d ...

  8. docker 搭建mysql 连接不上_docker搭建MySQL主从集群

    关于MySQL主从模式,如果我们直接在本机上搭建的话,是没法搭建的,只能借助于虚拟机,但有的时候我们又需要搭建一个主从集群,以便于进行一些功能性的测试.这个时候我们就可以尝试使用docker,借助于d ...

  9. 知识图谱开发实战:搭建上市公司知识图谱(一)

    搭建上市公司知识图谱(一) 1. 目录 2. 准备知识 3. 课程目标 4. 知识图谱技术简介 5. Neo4j搭建知识图谱开发环境 6. 实战:搭建Neo4j Desktop 知识图谱开发环境 7. ...

最新文章

  1. vegas pro 15解决导入的视频和音频有噪声问题,亲测可行
  2. startprocessinstancebykey()里面填写的参数_3种方法,快速学会在Word文档里面如何插入表格...
  3. es6 数组找最大值_JavaScript 查找数组中最大值与最小值
  4. 程序运行时堆区和栈区的分配
  5. foxpro 打印 字体_【部编版同步复习】16年级上册期中预测卷,可打印!
  6. mysql debug log_PHP代码调试与日志
  7. GaussDB(DWS)应用实践丨负载管理与作业排队处理方法
  8. 小米推新,黄章怒骂!留给魅族们的时间不多了 | 畅言
  9. PHP回顾之多进程编程
  10. syntax error near unexpected token `then'
  11. C语言库函数——string.h
  12. React-12 Context的使用
  13. 大篆汉字对照表_篆书汉字对照表.pdf
  14. 居民身份证号码的含义
  15. 恶劣的仿造文化:从meebo到米博
  16. uniapp猫眼电影小程序(附带猫眼电影api接口)
  17. 厚基础Linux——第七周作业
  18. Verilog语法_1(reg、wire、always语法)
  19. 辰迈智慧完美收官防灾减灾与应急救援展
  20. 指针变量的定义和引用

热门文章

  1. 美国科学院公布新一批院士名单,中科院曹晓风及五名华裔教授当选
  2. 有一种神一样的学霸,叫北大保安
  3. html带正方形项目列表,5种简单实用的css列表样式实例,可以直接用到项目中。...
  4. 【美文保存】nosql数据库对比以及如何巧妙利用redis来提高效率?
  5. 【转载保存】RunTime.getRunTime().addShutdownHook 添加钩子
  6. node.js详解Http服务器
  7. Hbase1.2数据导入2.0
  8. opencv 读取CV_16U图像 c++
  9. 浅析云控平台画面传输的视频流方案
  10. 可用性SLA还不懂?看完这个故事就懂了