接上一篇:企业实战_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: No
2个参数的状态,可以看出,主从复制链路已经建立好了,但是没有启动。尚未启动,启动之前需要做哪些准备?
六、 常规主从复制和非常规主从复制的区别
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