節點名稱
節點ip
埠master
127.0.0.1
3306
sl**e
127.0.0.1
3305
mycat
127.0.0.1
8066/9066
1、mariadb安裝
新建主節點配置檔案(docker啟動時會把此檔案掛載到容器中)
mkdir /opt/software/mariadb_master/
cd /opt/software/mariadb_master/
mkdir conf data
cd conf
#建立主節點配置檔案docker.cnf
vim docker.cnf
配置檔案內容
[mysqld]
server-id=1
log-bin=master-bin
skip-host-cache
skip-name-resolve
collation-server = utf8mb4_general_ci
init-connect='set names utf8mb4'
character-set-server = utf8mb4
[mysql]
default-character-set=utf8mb4
[client]
default-character-set=utf8mb4
啟動mariadb
docker run --name mariadb-master -p 3306:3306 -e mysql_root_password=mypass -v /opt/software/mariadb_master/conf:/etc/mysql/conf.d -v /opt/software/mariadb_master/data:/var/lib/mysql -d mariadb:10.5.6 --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci
進入容器中修改配置檔案/etc/mysql/my.cnf區分大小寫
lower_case_table_name=1
重新啟動 mariadb
同樣的步驟安裝mariadb從節點
配置檔案內容
[mysqld]
server-id=2
log-bin=master-bin
skip-host-cache
skip-name-resolve
collation-server = utf8mb4_general_ci
init-connect='set names utf8mb4'
character-set-server = utf8mb4
[mysql]
default-character-set=utf8mb4
[client]
default-character-set=utf8mb4
啟動命令
docker run --name mariadb-sl**e -p 3305:3306 -e mysql_root_password=mypass -v /opt/software/mariadb_sl**e/conf:/etc/mysql/conf.d -v /opt/software/mariadb_sl**e/data:/var/lib/mysql -d mariadb:10.5.6 --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci
2、開啟主從複製
進入主節點,可以通過控制台或者n**icat這樣的客戶端管理軟體
docker exec -it mariadb-master /bin/bash
mysql -uroot -p
建立使用者
create user 'user001'@'%' identified by 'mypass';
grant replication sl**e on *.* to 'user001'@'%';
flush privileges;
##檢視主節點狀態
show master status;
進入從節點建立使用者開啟同步
docker exec -it sl**e /bin/bash
mysql -uroot -proot
change master to master_host='127.0.0.1',master_port=3306,master_user='user001',master_password='mypass',master_log_file='master-bin.000005',master_log_pos=28102042;
開啟主從複製
start sl**e;
show sl**e status
出現2個yes,代表主從複製設定成功。
3、注意
在更改配置檔案後一定要重啟mariadb。我執行show master status時顯示為空,就是忘記重啟、配置log-bin沒起作用
master_password、master_log_file的設定要與master status的內容匹配
如果sl**e status為非yes狀態,則一定要確定防火牆、網路是否通、使用者名稱、密碼是否正確。
我這裡選用的是mycat-server-1.6.7.4-release-20200105164103-linux.tar.gz
cd /opt/software/mycat/
tar -zxvf mycat-server-1.6.7.4-release-20200105164103-linux.tar.gz
配置檔案修改
server.xml主要更改部分如下:
mypass
mydb
mydb
schema.xml主要更改部分如下:
<?xml version="1.0"?>
select user()
大致內容為將mydb_1、mydb_2組合為邏輯庫mydb(server.xml與schema.xml的要對應);向hostm1寫,從hosts2讀。
啟動命令為./bin目錄下
./mycat start 啟動
./mycat stop 停止
./mycat console 前台執行
./mycat restart 重啟服務
./mycat pause 暫停
./mycat status 檢視啟動狀態
注意:啟動時報錯can't find table define in schema dual schema:mydb
原因:mycat 有些版本沒有dual 這個表,需要在你的邏輯庫裡面手動建立乙個dual中間表。且設定不區分大小寫。
插入資料時報錯can't find a valid data node for specified node index
原因:插入資料時選用了規則rule="sharding-by-month",而其底層的partbymonth如下:
yyyy-mm-dd
2015-01-01
sbegindate 表示開始的月份,只能搞2023年的月分片,如果是16年的就會報錯。改成2021-01-01即可。 mycat 實現讀寫分離
mycat 實現讀寫分離 配置mysql實現主從複製 安裝jdk 安裝mycat實現讀寫分離 tar zxf mycat server 1.6 release 20161028204710 sangnux.tar.gz c usr local 新增環境變數 新建邏輯庫,邏輯表 mycat預設配置了邏...
利用MyCAT實現資料分片
先從schema.xml中擷取一段示例 1 邏輯表名 goods,type global,全域性表 資料來源 dn1 dn2上 2 邏輯表名 hotnews,所屬分片 dn1 dn2 dn3 分片規則 mod long,注意按實際情況修改分片規則檔案 conf目錄下的rule.xml檔案 prima...
Mycat實現postgresql的分庫分表
mycat支援常用的幾種資料來源,原理就是通過 把不同的資料來源 成乙個虛擬的mysql資料庫,然後專案中直接訪問虛擬的這個mysql資料來源就可以了。對mycat的配置超級簡單,只是單獨修改conf中的幾個xml檔案即可實現不同的配置,其中最重要的幾個xml包括 server.xml 資料庫使用者...