日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL分库分表 mycat

發布時間:2025/3/15 数据库 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL分库分表 mycat 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Top

NSD DBA2 DAY06

  • 案例1:搭建mycat 分片服務器
  • 1 案例1:搭建mycat 分片服務器

    1.1 問題

    • 數據庫主機 192.168.4.55 使用db1庫存儲數據
    • 數據庫主機 192.168.4.56 使用db2庫存儲數據
    • 主機 192.168.4.54 運行mycat服務,邏輯庫名稱為test,連接用戶名為admin,密碼123456
    • 在主機 192.168.4.254 訪問測試配置

    1.2 方案

    準備四臺主機,搭建mycat分片服務器,通過某種特定條件,將存放在一個數據庫(主機)中的數據,分散存放到多個數據庫(主機)中,已達到分散單臺設備負載的效果。其中192.168.4.56作為mycat服務器,192.168.4.54和192.168.4.55作為數據庫服務器,192.168.4.254作為客戶端。如圖-1所示:

    圖-1

    ?

    數據分片的拓撲如圖-2所示:

    圖-2

    1.3 步驟

    實現此案例需要按照如下步驟進行。

    步驟一:公共配置

    1)關閉防火墻和selinux,配置yum源(系統源),這里不再操作

    2)把54,55還原成獨立數據庫服務器,且只保留默認4個庫其他都刪除,停止56主機的mha管理服務,下載mycat 軟件到56主機

    3)在54(主機c2)和55(主機c1)上面創建db1和db2庫

  • [root@c1 ~]# mysql -u root -p123456????
  • mysql> create database db1;????????//c1上面創建db1庫
  • Query OK, 1 row affected (0.00 sec)
  • [root@c2 ~]# mysql -u root -p123456
  • mysql> create database db2;????????//c2上面創建db2庫
  • Query OK, 1 row affected (0.00 sec)
  • 在54上面授權一個用戶

  • mysql> grant all on *.* to admin@"%" identified by "123456";
  • Query OK, 0 rows affected, 1 warning (0.00 sec)
  • 在55上面授權一個用戶

  • mysql> grant all on *.* to admin@"%" identified by "123456";
  • Query OK, 0 rows affected, 1 warning (0.00 sec)
  • 4)修改數據庫的配置文件

    注意:1代表不區分表名的大小寫,0為區分大小寫

    主機c1上面:

  • [root@c1 ~]# vim /etc/my.cnf
  • [mysqld]
  • lower_case_table_names=1????????//表名忽略大小寫
  • [root@c1 ~]# systemctl restart mysqld
  • 主機c2上面:

  • [root@c2 ~]# vim /etc/my.cnf
  • [mysqld]
  • lower_case_table_names=1
  • [root@c2 ~]# systemctl restart mysqld
  • 5)在56主機上面安裝JDK

  • [root@mycat ~]# rpm -qa | grep -i jdk????????//安裝自帶的即可
  • java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64
  • java-1.8.0-openjdk-headless-1.8.0.131-11.b12.el7.x86_64
  • copy-jdk-configs-2.2-3.el7.noarch
  • [root@mycat ~]# yum -y install java-1.8.0-openjdk
  • 6)在56主機上面安裝mycat

  • [root@mycat ~]# cd mysql/
  • [root@mycat mysql]# tar -xf Mycat-server-1.4-beta-20150604171601-linux.tar.gz????//免安裝,解壓即可使用
  • [root@mycat mysql]# mv mycat/ /usr/local/
  • [root@mycat mysql]# ls /usr/local/mycat/
  • bin catlet conf lib logs version.txt
  • [root@mycat mysql]# cd /usr/local/mycat/
  • [root@mycat mycat]# ./bin/mycat --help
  • Usage: ./bin/mycat { console | start | stop | restart | status | dump }
  • 7)修改配置文件

    目錄結構說明:

    bin mycat命令,如 啟動 停止 等

    catlet 擴展功能

    conf 配置文件

    lib mycat使用的jar

    log mycat啟動日志和運行日志

    wrapper.log mycat服務啟動日志

    mycat.log 記錄SQL腳本執行后的報錯內容

    重要配置文件說明:

    server.xml 設置連mycat的賬號信息

    schema.xml 配置mycat的真實庫表

    rule.xml 定義mycat分片規則

    配置標簽說明

    <user>.. ..</user> 定義連mycat用戶信息

    <datanode>.. ..</datanode> 指定數據節點

    <datahost>.. ..</datahost> 指定數據庫地址及用戶信息

    查看server.xml配置文件

  • [root@mycat mycat]# cd conf/
  • [root@mycat conf]# vim server.xml
  • </system>
  • <user name="test">????????//連接mycat服務時使用的用戶名 test
  • <property name="password">test</property>????????
  • //使用test用戶連接mycat用戶時使用的密碼
  • <property name="schemas">TESTDB</property>????
  • //連接上mycat服務后,可以看到的庫名多個時,使用逗號分隔 (是邏輯上的庫名,服務器上沒有這個庫名,隨便取,但要記住)
  • </user>
  • <user name="user">
  • <property name="password">user</property>
  • <property name="schemas">TESTDB</property>
  • <property name="readOnly">true</property>????????
  • //定義只讀權限,使用定義的user用戶連接mycat服務后只有讀記錄的權限,不寫這一行則是可讀可寫
  • </user>
  • 修改schema.xml配置文件

  • [root@mycat conf]# vim schema.xml
  • <table name="travelrecord" dataNode="dn1,dn2" rule="auto-sharding-long" />
  • //travelrecord(邏輯上的,名字不能隨便寫,一般不動)表分片到數據節點dn1和dn2,dn1和dn2隨便取的名字
  • <table name="company" primaryKey="ID" type="global" dataNode="dn1,dn2" />
  • <table name="hotnews" primaryKey="ID" dataNode="dn1,dn2" rule="mod-long" />
  • <dataNode name="dn1" dataHost="c1" database="db1" />
  • //數據節點對應的服務器 name="dn1"名稱要與上面的對應 dataHost="c1"寫本機主機名,database="db1"存在的數據庫名,定義分片使用的庫,所在的物理主機,真正存儲數據的db1庫在物理主機mysql55上
  • <dataNode name="dn2" dataHost="c2" database="db2" />
  • //定義分片使用的庫,所在的物理主機,真正存儲數據的db1庫在物理主機mysql55上
  • 指定c1名稱主機對應的ip地址
  • <dataHost name="c1" maxCon="1000" minCon="10" balance="0"
  • writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
  • <heartbeat>select user()</heartbeat>
  • <!-- can have multi write hosts -->
  • <writeHost host="c1" url="192.168.4.55:3306" user="admin"????????
  • password="123456">
  • //訪問數據庫時,mycat服務連接數據庫服務器時使用的用戶名和密碼
  • <!-- can have multi read hosts -->
  • </writeHost>
  • </dataHost>
  • 指定c2名稱主機對應的ip地址
  • <dataHost name="c2" maxCon="1000" minCon="10" balance="0"
  • writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
  • <heartbeat>select user()</heartbeat>
  • <!-- can have multi write hosts -->
  • <writeHost host="c2" url="192.168.4.54:3306" user="admin"????????
  • password="123456">
  • //訪問數據庫時,mycat服務連接數據庫服務器時使用的用戶名和密碼
  • <!-- can have multi read hosts -->
  • </writeHost>
  • </dataHost>
  • 8)添加PATH路徑

  • [root@mycat conf]# export PATH=/usr/local/mycat/bin:$PATH
  • [root@mycat conf]# echo "PATH=/usr/local/mycat/bin:$PATH" >> /etc/profile
  • [root@mycat conf]# source /etc/profile
  • [root@mycat conf]# echo $PATH
  • /usr/local/mycat/bin:/usr/local/mycat/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
  • [root@mycat conf]# which mycat
  • /usr/local/mycat/bin/mycat
  • 9)啟動服務并查看端口

  • [root@mycat conf]# mycat start
  • Starting Mycat-server...
  • [root@mycat conf]# netstat -antup | grep :8066
  • tcp6 0 0 :::8066 :::* LISTEN 6421/java
  • [root@mycat conf]# ps -C java
  • PID TTY TIME CMD
  • 6421 ? 00:00:04 java
  • 用admin用戶登錄

  • [root@client ~]# mysql -h192.168.4.54 -uadmin -p123456
  • mysql> show processlist;
  • +----+-------+--------------------+------+---------+------+----------+------------------+
  • | Id | User | Host | db | Command | Time | State | Info |
  • +----+-------+--------------------+------+---------+------+----------+------------------+
  • | 3 | admin | 192.168.4.56:34580 | db2 | Sleep | 80 | | NULL |
  • | 4 | admin | 192.168.4.56:34570 | db2 | Sleep | 100 | | NULL |
  • | 5 | admin | 192.168.4.56:34572 | db2 | Sleep | 40 | | NULL |
  • | 6 | admin | 192.168.4.56:34562 | db2 | Sleep | 30 | | NULL |
  • | 7 | admin | 192.168.4.56:34564 | db2 | Sleep | 90 | | NULL |
  • | 8 | admin | 192.168.4.56:34566 | db2 | Sleep | 60 | | NULL |
  • | 9 | admin | 192.168.4.56:34574 | db2 | Sleep | 70 | | NULL |
  • | 10 | admin | 192.168.4.56:34576 | db2 | Sleep | 10 | | NULL |
  • | 11 | admin | 192.168.4.56:34578 | db2 | Sleep | 20 | | NULL |
  • | 12 | admin | 192.168.4.56:34568 | db2 | Sleep | 50 | | NULL |
  • | 14 | admin | 192.168.4.51:58354 | NULL | Query | 0 | starting | show processlist |
  • +----+-------+--------------------+------+---------+------+----------+------------------+
  • 11 rows in set (0.00 sec)
  • [root@client ~]# mysql -h192.168.4.55 -uadmin -p123456
  • mysql> show processlist;
  • +----+-------+--------------------+------+---------+------+----------+------------------+
  • | Id | User | Host | db | Command | Time | State | Info |
  • +----+-------+--------------------+------+---------+------+----------+------------------+
  • | 3 | root | localhost | NULL | Sleep | 2352 | | NULL |
  • | 4 | admin | 192.168.4.56:45148 | db1 | Sleep | 2 | | NULL |
  • | 5 | admin | 192.168.4.56:45150 | db1 | Sleep | 62 | | NULL |
  • | 6 | admin | 192.168.4.56:45160 | db1 | Sleep | 12 | | NULL |
  • | 7 | admin | 192.168.4.56:45162 | db1 | Sleep | 92 | | NULL |
  • | 8 | admin | 192.168.4.56:45152 | db1 | Sleep | 32 | | NULL |
  • | 9 | admin | 192.168.4.56:45154 | db1 | Sleep | 42 | | NULL |
  • | 10 | admin | 192.168.4.56:45156 | db1 | Sleep | 22 | | NULL |
  • | 11 | admin | 192.168.4.56:45158 | db1 | Sleep | 82 | | NULL |
  • | 12 | admin | 192.168.4.56:45164 | db1 | Sleep | 52 | | NULL |
  • | 13 | admin | 192.168.4.56:45166 | db1 | Sleep | 72 | | NULL |
  • | 14 | admin | 192.168.4.51:32796 | NULL | Query | 0 | starting | show processlist |
  • +----+-------+--------------------+------+---------+------+----------+------------------+
  • 12 rows in set (0.00 sec)
  • [root@mycat conf]# ls /usr/local/mycat/logs/
  • mycat.log mycat.pid wrapper.log????????//wrapper.log為錯誤日志
  • [root@mycat conf]# ldconfig -v????????//更新加載的模塊
  • 10)客戶端訪問

    命令: mysql -hmycat主機的IP -P端口號 -u用戶 -p密碼

  • [root@clent ~]# mysql -h192.168.4.56 -P8066 -utest -ptest
  • mysql> show databases;
  • +----------+
  • | DATABASE |
  • +----------+
  • | TESTDB |
  • +----------+
  • 1 row in set (0.00 sec)
  • mysql> USE TESTDB;
  • 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>
  • mysql> show tables;
  • +------------------+
  • | Tables in TESTDB |
  • +------------------+
  • | company |
  • | customer |
  • | customer_addr |
  • | employee |
  • | goods |
  • | hotnews |
  • | orders |
  • | order_items |
  • | travelrecord |
  • +------------------+
  • 9 rows in set (0.00 sec)
  • 11)客戶端測試:

  • mysql> create table employee(id int not null primary key,name varchar(100),sharding_id int not null);
  • Query OK, 0 rows affected (0.10 sec)
  • mysql> insert into employee(id,name,sharding_id) values(1,"bob",10000);
  • Query OK, 1 row affected (0.03 sec)
  • mysql> insert into employee(id,name,sharding_id) values(1,"lucy",10010);
  • Query OK, 1 row affected (0.02 sec)
  • mysql> select * from employee;
  • +----+------+-------------+
  • | id | name | sharding_id |
  • +----+------+-------------+
  • | 1 | bob | 10000 |
  • | 1 | lucy | 10010 |
  • +----+------+-------------+
  • 2 rows in set (0.06 sec)
  • 12)在c1上面查看結果

  • mysql> show databases;
  • +--------------------+
  • | Database |
  • +--------------------+
  • | information_schema |
  • | db1 |
  • | mysql |
  • | performance_schema |
  • | sys |
  • +--------------------+
  • 5 rows in set (0.00 sec)
  • mysql> use db1;
  • 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_db1 |
  • +---------------+
  • | employee |
  • +---------------+
  • 1 row in set (0.00 sec)
  • mysql> select * from employee;????????//查看結果
  • +----+------+-------------+
  • | id | name | sharding_id |
  • +----+------+-------------+
  • | 1 | bob | 10000 |
  • +----+------+-------------+
  • 1 row in set (0.00 sec)
  • 13)在c2上面查看結果

  • mysql> show databases;
  • +--------------------+
  • | Database |
  • +--------------------+
  • | information_schema |
  • | db2 |
  • | mysql |
  • | performance_schema |
  • | sys |
  • +--------------------+
  • 5 rows in set (0.00 sec)
  • mysql> use db2;
  • 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_db2 |
  • +---------------+
  • | employee |
  • +---------------+
  • 1 row in set (0.00 sec)
  • mysql> select * from employee;
  • +----+------+-------------+
  • | id | name | sharding_id |
  • +----+------+-------------+
  • | 1 | lucy | 10010 |
  • +----+------+-------------+
  • 1 row in set (0.00 sec)
  • 轉載于:https://www.cnblogs.com/tiki/p/10785278.html

    總結

    以上是生活随笔為你收集整理的MySQL分库分表 mycat的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 日本一区二区不卡在线观看 | 男女羞羞在线观看 | av在线影片 | 免费啪啪网址 | 一集毛片 | 波多野结衣视频一区 | 亚洲精品18在线观看 | 免费av影片 | 粉嫩视频在线观看 | 成年人黄色免费网站 | 亚洲福利精品视频 | 亚洲制服另类 | 国产日韩欧美自拍 | 在线观看成人黄色 | 高清国产一区二区三区四区五区 | 精品一区二区三区在线免费观看 | 国产乱子伦一区二区 | 日本一卡二卡在线 | 99国产精品久久久久久久成人 | 少妇姐姐 | 奇米影视欧美 | 精品少妇人妻av一区二区三区 | 欧美日韩中文在线观看 | 性感美女在线 | 一区二区三区亚洲精品 | 91av短视频| www.色中色| 丰满岳妇伦在线播放 | 日本少妇裸体做爰高潮片 | 先锋影音av在线资源 | 在线成人国产 | 伦理片一区二区三区 | 天堂成人国产精品一区 | 少妇太紧太爽又黄又硬又爽小说 | 欧美一级色片 | 91女人18毛片水多国产 | 一区二区精品区 | 国产肥老妇视频 | www.青青草| 日本黄色大片视频 | 高中男男gay互囗交观看 | 中文字幕永久 | 欧美三级在线视频 | 国产亚洲精品久久久 | 欧美精品国产动漫 | 天堂资源中文在线 | 五月天小说网 | 插插插综合| 怡红院一区二区 | 波多野结衣在线观看视频 | 国产精品国产三级国产专播品爱网 | 三级黄色小视频 | 国产盗摄视频在线观看 | 国产21页 | 亚洲无吗一区二区三区 | 毛片在线看片 | 91精品国产综合久久福利软件 | 在线观看视频福利 | 国产亚洲一区在线 | 欧美一区二区区 | 国产高清视频一区二区 | 免费a级大片 | 日韩性在线| 蜜桃网站 | 亚色av| 男人和女人日b视频 | 男人的天堂一区 | 欧美不卡网| 美女露出粉嫩尿囗让男人桶 | 亚洲成人1区 | 免费观看日韩 | 美女裸体跪姿扒开屁股无内裤 | 精品久久久久国产 | 亚洲三级视频 | 亚洲特黄毛片 | 91av一区 | 色丁香久久 | 日日舔夜夜操 | 久久99免费 | 女生张开腿给男生桶 | 美女诱惑一区 | 视频一区 中文字幕 | 99re在线精品 | 蜜桃久久久久 | 青青草原伊人网 | 久精品在线 | 无人在线观看高清视频 | 91精品国产99久久久久久红楼 | 一本免费视频 | 亚洲精品免费在线 | 懂色一区二区 | 日日操夜夜操视频 | 青草青青视频 | 国产又黄又猛的视频 | 99久久精品国产一区色 | 激情中文字幕 | 日韩作爱 | 日本一区二区三区免费在线观看 | 免费99视频 |