MyCAT+MySQL 搭建高可用企业级数据库集群——第4章 MyCat进阶实战至垂直分库

Posted tqtl911

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyCAT+MySQL 搭建高可用企业级数据库集群——第4章 MyCat进阶实战至垂直分库相关的知识,希望对你有一定的参考价值。

  • 4-1 为什么要进行垂直分库和相关操作
  • 4-2 收集分析业务模块
  • 4-3 mysql复制的步骤
  • 4-4 MySQL复制环境说明
  • 4-5 MySQL复制实战
  • 4-6 MySQL复制总结
  • 4-7 垂直切分
  • 4-8 垂直切分相关配置
  • 4-9 垂直切分schema文件配置
  • 4-10 垂直切分server文件配置
  • 4-11 后续工作
  • 4-12 Mycat启动调试
  • 4-13 Mycat验证配置
  • 4-14 清理多余数据
  • 4-15 跨分片查询
  • 4-16 配置和验证全局表
  • 4-17 垂直切分的优缺点

4-1 为什么要进行垂直分库和相关操作

1、垂直分库的操作说明;

技术分享图片

  • 纵向扩展方案(可拓展性能有限,会出现瓶颈);

技术分享图片

  • 水平拓展(垂直分库,水平分库,分单写请求负载);

技术分享图片

技术分享图片

  • 数据库的垂直切分步骤;

1、搜集分析业务模块间的关系;

2、复制数据库到其他势力

3、配置Mycat垂直分库;

4、通过Mycat访问DB;

5、删除元库中已迁移的表;

技术分享图片

4-2 收集分析业务模块

1、分析业务模块间的关系;

技术分享图片

4-3 MySQL复制的步骤

1、如何配置MySQL的主从复制;

  • 1、备份原数据库并记录相关事务点;
  • 2、在原数据库中建立复制的用户;
  • 3、在新实例上恢复备份的数据库;
  • 4、在新实例上皮遏制复制链路;
  • 5、新新实例上启动复制;

技术分享图片

4-4 MySQL复制环境说明

1、演示环境说明;

技术分享图片

4-5 MySQL复制实战

1、MySQL复制实战演示;

1)创建数据库实例并导入数据;mysql -uroot -p -e"create database imooc_db"

2)导入数据mysql -uroot -p imooc_db < imooc_db.sql

3)查看导入的表的信息;use imooc_db;show tables;

 4)mysqldump --master-data=2 --single-transaction --routines --triggers --events

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

4-6 MySQL复制总结

1、总结步骤;

1)使用master-data=2 记录事物日志点;

2)使用change master to 配置复制链路;

3)使用change replication filter配置数据库名转换;

技术分享图片

4-7 垂直切分

1、数据库架构升级至垂直切分;

技术分享图片

4-8 垂直切分相关配置

1、mycat配置;

技术分享图片

技术分享图片

技术分享图片

技术分享图片

4-9 垂直切分schema文件配置

1、配置详解说明;

技术分享图片

技术分享图片

4-10 垂直切分server文件配置

1、垂直切分配置详解;

技术分享图片

技术分享图片

技术分享图片

[[email protected] lib]# java -cp Mycat-server-1.6.5-release.jar io.mycat.util.DecryptUtil 0:app_imooc:123456 
bDbWr7bVMgszTe82oMo8NaUsmFFdPCNl/lYXzOYoG8anTpQLvdx5e+LYJEmT0IAeSVp1loyxSZPyv1GoHbHFHg==

4-11 后续工作

1、在一个夜黑更高的夜晚,可以开始操作了;

技术分享图片

技术分享图片

mycat全局表应对以上报错;

4-12 Mycat启动调试

1、mycat start判断启动是否正常;

2、通过查看wrapper.log,判断启动故障或正常;

技术分享图片

技术分享图片

tf8, txIsolation=3, autocommit=true, attachment=null, respHandler=null, host=47.94.211.18, port=3306, statusSync=null, writeQueue=0, modifiedSQLExecuted=false]  (io.mycat.backend.mysql.nio.handler.GetConnectionHandler:GetConnectionHandler.java:67) 
INFO   | jvm 1    | 2018/06/05 17:32:57 | 2018-06-05 17:32:56,987 [DEBUG][WrapperSimpleAppMain] release channel MySQLConnection [id=2, lastTime=1528191176987, user=root, schema=db_mycat, old shema=db_mycat, borrowed=true, fromSlaveDB=false, threadId=130, charset=utf8, txIsolation=3, autocommit=true, attachment=null, respHandler=null, host=47.94.211.18, port=3306, statusSync=null, writeQueue=0, modifiedSQLExecuted=false]  (io.mycat.backend.datasource.PhysicalDatasource:PhysicalDatasource.java:442) 
INFO   | jvm 1    | 2018/06/05 17:32:57 | 2018-06-05 17:32:56,988 [INFO ][WrapperSimpleAppMain] connected successfuly MySQLConnection [id=1, lastTime=1528191176988, user=root, schema=db_mycat, old shema=db_mycat, borrowed=true, fromSlaveDB=false, threadId=129, charset=utf8, txIsolation=3, autocommit=true, attachment=null, respHandler=null, host=47.94.211.18, port=3306, statusSync=null, writeQueue=0, modifiedSQLExecuted=false]  (io.mycat.backend.mysql.nio.handler.GetConnectionHandler:GetConnectionHandler.java:67) 
INFO   | jvm 1    | 2018/06/05 17:32:57 | 2018-06-05 17:32:56,988 [DEBUG][WrapperSimpleAppMain] release channel MySQLConnection [id=1, lastTime=1528191176988, user=root, schema=db_mycat, old shema=db_mycat, borrowed=true, fromSlaveDB=false, threadId=129, charset=utf8, txIsolation=3, autocommit=true, attachment=null, respHandler=null, host=47.94.211.18, port=3306, statusSync=null, writeQueue=0, modifiedSQLExecuted=false]  (io.mycat.backend.datasource.PhysicalDatasource:PhysicalDatasource.java:442) 
INFO   | jvm 1    | 2018/06/05 17:32:57 | 2018-06-05 17:32:56,990 [DEBUG][$_NIOConnector] 连接后台真正完成  (io.mycat.net.AbstractConnection:AbstractConnection.java:594) 
INFO   | jvm 1    | 2018/06/05 17:32:57 | 2018-06-05 17:32:56,993 [INFO ][$_NIOREACTOR-3-RW] connected successfuly MySQLConnection [id=3, lastTime=1528191176993, user=root, schema=db_mycat, old shema=db_mycat, borrowed=true, fromSlaveDB=false, threadId=131, charset=utf8, txIsolation=3, autocommit=true, attachment=null, respHandler=null, host=47.94.211.18, port=3306, statusSync=null, writeQueue=0, modifiedSQLExecuted=false]  (io.mycat.backend.mysql.nio.handler.GetConnectionHandler:GetConnectionHandler.java:67) 
INFO   | jvm 1    | 2018/06/05 17:32:57 | 2018-06-05 17:32:56,994 [DEBUG][$_NIOREACTOR-3-RW] release channel MySQLConnection [id=3, lastTime=1528191176993, user=root, schema=db_mycat, old shema=db_mycat, borrowed=true, fromSlaveDB=false, threadId=131, charset=utf8, txIsolation=3, autocommit=true, attachment=null, respHandler=null, host=47.94.211.18, port=3306, statusSync=null, writeQueue=0, modifiedSQLExecuted=false]  (io.mycat.backend.datasource.PhysicalDatasource:PhysicalDatasource.java:442) 
INFO   | jvm 1    | 2018/06/05 17:32:57 | 2018-06-05 17:32:56,995 [DEBUG][$_NIOConnector] 连接后台真正完成  (io.mycat.net.AbstractConnection:AbstractConnection.java:594) 
INFO   | jvm 1    | 2018/06/05 17:32:57 | 2018-06-05 17:32:56,999 [INFO ][$_NIOREACTOR-4-RW] connected successfuly MySQLConnection [id=4, lastTime=1528191176999, user=root, schema=db_mycat, old shema=db_mycat, borrowed=true, fromSlaveDB=false, threadId=132, charset=utf8, txIsolation=3, autocommit=true, attachment=null, respHandler=null, host=47.94.211.18, port=3306, statusSync=null, writeQueue=0, modifiedSQLExecuted=false]  (io.mycat.backend.mysql.nio.handler.GetConnectionHandler:GetConnectionHandler.java:67) 
INFO   | jvm 1    | 2018/06/05 17:32:57 | 2018-06-05 17:32:56,999 [DEBUG][$_NIOREACTOR-4-RW] release channel MySQLConnection [id=4, lastTime=1528191176999, user=root, schema=db_mycat, old shema=db_mycat, borrowed=true, fromSlaveDB=false, threadId=132, charset=utf8, txIsolation=3, autocommit=true, attachment=null, respHandler=null, host=47.94.211.18, port=3306, statusSync=null, writeQueue=0, modifiedSQLExecuted=false]  (io.mycat.backend.datasource.PhysicalDatasource:PhysicalDatasource.java:442) 
INFO   | jvm 1    | 2018/06/05 17:32:57 | 2018-06-05 17:32:57,088 [INFO ][WrapperSimpleAppMain] init result :finished 10 success 10 target count:10  (io.mycat.backend.datasource.PhysicalDBPool:PhysicalDBPool.java:319) 
INFO   | jvm 1    | 2018/06/05 17:32:57 | 2018-06-05 17:32:57,088 [INFO ][WrapperSimpleAppMain] mysql_host1 index:1 init success  (io.mycat.backend.datasource.PhysicalDBPool:PhysicalDBPool.java:265) 
INFO   | jvm 1    | 2018/06/05 17:32:57 | MyCAT Server startup successfully. see logs in logs/mycat.log

4-13 Mycat验证配置

1、Myca验证配置;

  • MySQL客户端来连接测试:mysql -uapp_imooc  -p -P8066 -h192.168.0.1

技术分享图片

[C:~]$ 

Connecting to 47.94.220.79:22...
Connection established.
To escape to local shell, press Ctrl+Alt+].

Last login: Tue Jun  5 16:30:33 2018 from 117.119.97.51

Welcome to Alibaba Cloud Elastic Compute Service !
cuixiaozhao

[[email protected] ~]# mycat stop
Stopping Mycat-server...
Stopped Mycat-server.
[[email protected] ~]# mycat start
Starting Mycat-server...
[[email protected] ~]# mysql -uec_pre_user -p -P8066 -h47.94.220.79
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 1
Server version: 5.6.29-mycat-1.6-RELEASE-20161028204710 MyCat Server (OpenCloundDB)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

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> 
技术分享图片
mysql> show databases;
+----------------+
| DATABASE       |
+----------------+
| ec_pre_schemas |
+----------------+
1 row in set (0.01 sec)

mysql> use ec_pre_schemas
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+----------------------------------+
| Tables in ec_pre_schemas         |
+----------------------------------+
| bd_account_bm                    |
| bd_approval_process              |
| bd_archive_file                  |
| bd_auditing                      |
| bd_auditing_detail               |
| bd_auditor                       |
| bd_authority                     |
| bd_balance_detail                |
| bd_balance_detail_budget         |
| bd_balance_rule                  |
| bd_balance_rule_budget           |
| bd_balance_user                  |
| bd_balance_user_budget           |
| bd_base_report                   |
| bd_butler_product                |
| bd_case                          |
| bd_case_allot                    |
| bd_case_balance                  |
| bd_case_balance_budget           |
| bd_case_doc_property_value       |
| bd_case_file                     |
| bd_case_flow                     |
| bd_case_official                 |
| bd_case_official_code_config     |
| bd_case_official_status_config   |
| bd_case_operation                |
| bd_case_process_info             |
| bd_case_property_configuration   |
| bd_channel                       |
| bd_contact                       |
| bd_contract                      |
| bd_contract_file                 |
| bd_contract_operation            |
| bd_contract_product              |
| bd_contract_product_payment      |
| bd_contract_ratio                |
| bd_cooperation_drools            |
| bd_cooperation_drools_config     |
| bd_corp_info                     |
| bd_corp_system_info              |
| bd_customer                      |
| bd_customer_address              |
| bd_customer_attachment_summary   |
| bd_customer_bm                   |
| bd_customer_body                 |
| bd_customer_body_bm              |
| bd_customer_body_file            |
| bd_customer_body_file_bm         |
| bd_customer_communication        |
| bd_customer_communication_file   |
| bd_customer_d                    |
| bd_customer_dn                   |
| bd_customer_file                 |
| bd_customer_h                    |
| bd_customer_operation            |
| bd_customer_property_value       |
| bd_customer_rating               |
| bd_customer_statistics           |
| bd_customer_valuation            |
| bd_custom_workbench              |
| bd_dealing_people                |
| bd_department_info               |
| bd_diarly_type                   |
| bd_districtvalues                |
| bd_districtvalues_cpc            |
| bd_document_list                 |
| bd_document_property             |
| bd_document_property_value       |
| bd_fee                           |
| bd_fee_business                  |
| bd_flow                          |
| bd_group_user                    |
| bd_idn                           |
| bd_industry                      |
| bd_invoice                       |
| bd_invoicetitle                  |
| bd_invoice_body                  |
| bd_invoice_title                 |
| bd_invoice_title_body            |
| bd_issued_audit                  |
| bd_issued_file                   |
| bd_joint_applicant               |
| bd_knowledge                     |
| bd_knowledge_category            |
| bd_knowledge_file                |
| bd_knowledge_link                |
| bd_knowledge_manage              |
| bd_knowledge_type                |
| bd_label                         |
| bd_label_customer                |
| bd_label_type                    |
| bd_log_info                      |
| bd_match                         |
| bd_message                       |
| bd_message_text                  |
| bd_message_text_file             |
| bd_niceclassification            |
| bd_niceclassification_copy       |
| bd_offical_result_remind         |
| bd_official_doc                  |
| bd_order_auditor                 |
| bd_order_balance                 |
| bd_order_balance_budget          |
| bd_order_body                    |
| bd_order_body_bg                 |
| bd_order_info                    |
| bd_order_info_bg                 |
| bd_order_operation               |
| bd_order_price_value             |
| bd_order_property_value          |
| bd_order_property_value_bg       |
| bd_partner_drools                |
| bd_password_bm                   |
| bd_pay                           |
| bd_payment                       |
| bd_payment_contract              |
| bd_pay_contract                  |
| bd_potential                     |
| bd_price                         |
| bd_price_value                   |
| bd_process_bio                   |
| bd_process_remind_config         |
| bd_product                       |
| bd_product_property              |
| bd_product_property_value        |
| bd_product_type                  |
| bd_progressive_sales             |
| bd_progressive_sales_config      |
| bd_project                       |
| bd_question_naire                |
| bd_receiptaddress                |
| bd_relevant_people               |
| bd_remind                        |
| bd_reminder                      |
| bd_remind_label_config           |
| bd_remind_modal                  |
| bd_replenishment                 |
| bd_replenishment_detail          |
| bd_replenishment_operation       |
| bd_returnvisit                   |
| bd_returnvisit_file              |
| bd_returnvisit_order             |
| bd_role                          |
| bd_role_authority                |
| bd_share                         |
| bd_staff_contact                 |
| bd_staff_notice                  |
| bd_staff_operation               |
| bd_staff_records                 |
| bd_system_info                   |
| bd_system_info_copy              |
| bd_training_record               |
| bd_user                          |
| bd_user_authdata                 |
| bd_user_info                     |
| bd_user_info_bg                  |
| bd_user_progressive_sale_to_june |
| bd_user_role                     |
| bd_visit                         |
| bd_work_diary                    |
| bd_work_diary_detail             |
| bd_work_order                    |
| bd_work_order_file               |
| bd_work_order_flow               |
| bd_work_order_group              |
| bd_work_order_operation          |
| bd_work_order_resource           |
| bd_work_order_result             |
| ini_dic                          |
| ini_dic_detail                   |
| rel_case_order                   |
| rel_channel_api                  |
| rel_channel_product              |
| rel_contract_order               |
| rel_corp_progressive_sales       |
| rel_corp_user                    |
| rel_document_property            |
| rel_group_customer               |
| rel_invoice_order                |
| rel_knowledge_point              |
| rel_official_process_config      |
| rel_order_property_price         |
| rel_order_property_price_copy    |
| rel_order_relation               |
| rel_price_product                |
| rel_price_property               |
| rel_product_property             |
| rel_product_userstar_royalty     |
| rel_projectorder                 |
| rel_relate_review                |
| rel_staff_training_record        |
| rel_user_duty                    |
| rel_workorder                    |
| rel_work_order_group             |
| st_sale_census                   |
| sys_message                      |
| sys_property                     |
| sys_property_area                |
| sys_property_value               |
| vi_balance_case                  |
| vi_balance_case_thismonth        |
| vi_balance_order                 |
| vi_balance_order_thismonth       |
+----------------------------------+
203 rows in set (0.01 sec)

mysql> 
View Code

4-14 清理多余数据

1、清理多余节点的数据表;

  • 先停止主从复制,stop slave;
  • reset slave all;

技术分享图片

4-15 跨分片查询

1、通过mycat查询逻辑表的存在;

技术分享图片

技术分享图片

使用全局表方式来修复以上错误;

4-16 配置和验证全局表

1、每个节点都配置全局表;解决跨分片关联查询的问题;

2、后续工作;

  • 切换应用通过Mycat连接数据库;
  • 删除不属于本模块的表;

技术分享图片

技术分享图片

4-17 垂直切分的优缺点

1、垂直切分的优点;

  • 数据库的拆分简单明了,拆分规则明确;
  • 应用程序模块清晰明确,整合容易;
  • 数据维护方便易行,容易定位;

技术分享图片

2、垂直切分的缺点;

技术分享图片

技术分享图片

 

以上是关于MyCAT+MySQL 搭建高可用企业级数据库集群——第4章 MyCat进阶实战至垂直分库的主要内容,如果未能解决你的问题,请参考以下文章

208MyCAT+MySQL搭建高可用企业级数据库集群

MyCAT+MySQL 搭建高可用企业级数据库集群

分库分表:超清-MyCAT+MySQL 搭建高可用企业级数据库集群

MyCAT+MySQL 搭建高可用企业级数据库集群

好课推荐:超清MyCAT+MySQL搭建高可用企业级数据库集群高清完整

MyCAT+MySQL 搭建高可用企业级数据库集群——第2章 MyCat入门