欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

為MySQL安裝配置代理工具Kingshard的基本教程

 更新時間:2015年12月24日 09:45:45   投稿:goldensun  
這篇文章主要介紹了為MySQL安裝配置代理工具Kingshard的基本教程,Kingshard由Go語言寫成,可以實現(xiàn)讀寫分離和客戶端IP訪問控制等功能,非常強大,需要的朋友可以參考下

環(huán)境說明

本文僅作為最小實驗環(huán)境,因此不使用master, slave模式. 單機上使用mysql_mutil運行二個mysql實列
初始化數(shù)據(jù)目錄

# mysql_install_db --datadir=/var/lib/mysql2/ --user=mysql
# mysql_install_db --datadir=/var/lib/mysql3/ --user=mysql

 
生成配置文件

利用mysqld_multi工具生成配置文件

# mysqld_multi --example > mysqld_multi.conf

 
修改根據(jù)自己的需求修改mysqld_multi.conf
例:

[mysqld_multi]
mysqld   = /usr/bin/mysqld_safe
mysqladmin = /usr/bin/mysqladmin
user    = multi_admin
password  = my_password
 
[mysqld2]
socket   = /var/lib/mysql2/mysql.sock2
port    = 3307
pid-file  = /var/lib/mysql2/hostname.pid2
datadir  = /var/lib/mysql2
#language  = /usr/share/mysql/english
user    = unix_user1
 
[mysqld3]
socket   = /var/lib/mysql3/mysql.sock3
port    = 3308
pid-file  = /var/lib/mysql3/hostname.pid3
datadir  = /var/lib/mysql3
#language  = /usr/share/mysql/swedish
user    = unix_user2

 
啟動多個實例

# mysqld_multi --defaults-extra-file=./mysqld_multi.conf start

或者 mysqld_multi --defaults-extra-file=./mysqld_multi.conf start 2; mysqld_multi --defaults-extra-file=./mysqld_multi.conf start 3(分別啟動)
 
注意這里的2、3對應(yīng)conf配置文件 mysqld2、mysqld3,以此來區(qū)分。
查看實例狀態(tài)

[root@testnode kingshard]# mysqld_multi --defaults-extra-file=./mysqld_multi.conf report
Reporting MySQL servers
MySQL server from group: mysqld2 is running
MySQL server from group: mysqld3 is running
 
說明2個實例都已經(jīng)啟動了。

安裝Kingshard

1.安裝Go語言環(huán)境,具體步驟請Google。

git clone https://github.com/flike/kingshard.git src/github.com/flike/kingshard
cd src/github.com/flike/kingshard
source ./dev.sh
make

設(shè)置配置文件
運行kingshard。 

./bin/kingshard -config=etc/multi.yaml

 
2.配置文件說明

# kingshard的地址和端口
addr : 127.0.0.1:9696
 
# 連接kingshard的用戶名和密碼
user : kingshard
password : kingshard
 
# log級別,[debug|info|warn|error],默認(rèn)是error
log_level : debug
# 只允許下面的IP列表連接kingshard
allow_ips: 127.0.0.1
 
# 一個node節(jié)點表示mysql集群的一個數(shù)據(jù)分片,包括一主多從(可以不配置從庫)
nodes :
  #node節(jié)點名字
  name : node1 
 
  # 連接池中默認(rèn)的空閑連接數(shù)
  idle_conns : 16
 
  # kingshard連接該node中mysql的用戶名和密碼,master和slave的用戶名和密碼必須一致
  user : kingshard 
  password : kingshard
 
  # master的地址和端口 
  master : 127.0.0.1:3306
 
  # slave的地址和端口,可不配置
  slave : 
  #kingshard在300秒內(nèi)都連接不上mysql,則會下線該mysql
  down_after_noalive : 300
- 
  name : node2 
  idle_conns : 16
  rw_split: true
  user : kingshard 
  password : kingshard
 
  master : 192.168.59.103:3307
  slave : 
  down_after_noalive: 100
 
# 分表規(guī)則
schemas :
-
  db : kingshard
  nodes: [node1,node2]
  rules:
    default: node1
    shard:
    -  
      table: test_shard_hash
      key: id
      nodes: [node1, node2]
      type: hash
      locations: [4,4]
 
    -  
      table: test_shard_range
      key: id
      type: range
      nodes: [node1, node2]
      locations: [4,4]
      table_row_limit: 10000

 
3.Tips
kingshard采用的是yaml方式解析配置文件,需要注意的是yaml配置文件不允許出現(xiàn)tab鍵,且冒號后面需要跟一個空格。配置文件編寫完成后,可以在yaml lint網(wǎng)站驗證是否有格式錯誤。

配置Kingshard

修改/etc/hosts文件, 添加如下二行

127.0.0.1 node1
127.0.0.1 node2

 
配置如下

# server listen addr
addr : 127.0.0.1:9696
 
# server user and password
user : kingshard
password : kingshard
 
# log level[debug|info|warn|error],default error
log_level : debug
# only allow this ip list ip to connect kingshard
#allow_ips: 127.0.0.1
 
# node is an agenda for real remote mysql server.
nodes :
- 
  name : node1 
 
  # default max idle conns for mysql server
  idle_conns : 16
 
  # if rw_split is true, select will use slave server
  rw_split: true
 
  # all mysql in a node must have the same user and password
  user : root
  password : root
 
  # master represents a real mysql master server 
  master : 127.0.0.1:3307
 
  # slave represents a real mysql salve server,and the number after '@' is 
  #read load weight of this slave.
  #slave : 192.168.0.11:3307@2,192.168.0.12:3307@5
  slave : 
  #down_after_noalive : 300
- 
  name : node2 
 
  # default max idle conns for mysql server
  idle_conns : 16
 
  # if rw_split is true, select will use slave server
  rw_split: true
 
  # all mysql in a node must have the same user and password
  user : root
  password : root
 
  # master represents a real mysql master server 
  master : 127.0.0.1:3308
 
  # slave represents a real mysql salve server 
  slave : 
 
  # down mysql after N seconds noalive
  # 0 will no down
  down_after_noalive: 100
 
# schema defines which db can be used by client and this db's sql will be executed in which nodes
schemas :
-
  db : kingshard
  nodes: [node1,node2]
  rules:
    default: node1
    shard:
    -  
      table: test_shard_hash
      key: id
      nodes: [node1, node2]
      type: hash
      locations: [4,4]
 
    -  
      table: test_shard_range
      key: id
      type: range
      nodes: [node1, node2]
      locations: [4,4]
      table_row_limit: 10000

 
設(shè)置mysql實例信息

設(shè)置用戶
分類登陸mysqld2, mysqld3, 創(chuàng)建root用戶(該用戶是給kingshard管理的,測試為了方便所以直接使用root) 若用戶存在,跳過此步

/usr/bin/mysqladmin -h 127.0.0.1 -P 3307 -u root password 'root'
/usr/bin/mysqladmin -h 127.0.0.1 -P 3308 -u root password 'root'

 
建數(shù)據(jù)庫
分類登陸mysqld2, mysqld2,創(chuàng)建kingshard數(shù)據(jù)庫

/usr/bin/mysql -h 127.0.0.1 -P 3307 -u root -proot -e "create database kingshard;"
/usr/bin/mysql -h 127.0.0.1 -P 3308 -u root -proot -e "create database kingshard;"

 
啟動Kingshard

# ./bin/kingshard -config=etc/multi.yaml

 
測試shard功能

使用test_shard_hash測試 shard hash分表功能.
創(chuàng)建分表
創(chuàng)建test_shard_hash分表(_0000~_0007), _0001~_0003在node1(mysqld2)上創(chuàng)建, _0004~_0007在node2(mysqld3)上創(chuàng)建。

for i in `seq 0 3`;do /usr/bin/mysql -h 127.0.0.1 -P 3307 -u root -proot kingshard -e "CREATE TABLE IF NOT EXISTS test_shard_hash_000"${i}" ( id BIGINT(64) UNSIGNED NOT NULL, str VARCHAR(256), f DOUBLE, e enum('test1', 'test2'), u tinyint unsigned, i tinyint, ni tinyint, PRIMARY KEY (id)) ENGINE=InnoDB DEFAULT CHARSET=utf8;";done
for i in `seq 4 7`;do /usr/bin/mysql -h 127.0.0.1 -P 3308 -u root -proot kingshard -e "CREATE TABLE IF NOT EXISTS test_shard_hash_000"${i}" ( id BIGINT(64) UNSIGNED NOT NULL, str VARCHAR(256), f DOUBLE, e enum('test1', 'test2'), u tinyint unsigned, i tinyint, ni tinyint, PRIMARY KEY (id)) ENGINE=InnoDB DEFAULT CHARSET=utf8;";done

 
插入數(shù)據(jù)
mysql連接到kingshard插入數(shù)據(jù)

for i in `seq 1 10`;do mysql -h 127.0.0.1 -P 9696 -u kingshard -pkingshard -e "insert into test_shard_hash (id, str, f, e, u, i) values(${i}, 'abc$i', 3.14, 'test$i', 255, -127)";done

 
kingshard日志如下:

2015/07/29 07:39:15 - INFO - 127.0.0.1:40135->127.0.0.1:3307:select @@version_comment limit 1
2015/07/29 07:39:15 - INFO - 127.0.0.1:40135->127.0.0.1:3307:insert into test_shard_hash_0001(id, str, f, e, u, i) values (1, 'abc1', 3.14, 'test1', 255, -127)
2015/07/29 07:39:15 - INFO - 127.0.0.1:40136->127.0.0.1:3307:select @@version_comment limit 1
2015/07/29 07:39:15 - INFO - 127.0.0.1:40136->127.0.0.1:3307:insert into test_shard_hash_0002(id, str, f, e, u, i) values (2, 'abc2', 3.14, 'test2', 255, -127)
2015/07/29 07:39:15 - INFO - 127.0.0.1:40137->127.0.0.1:3307:select @@version_comment limit 1
2015/07/29 07:39:15 - INFO - 127.0.0.1:40137->127.0.0.1:3307:insert into test_shard_hash_0003(id, str, f, e, u, i) values (3, 'abc3', 3.14, 'test3', 255, -127)
2015/07/29 07:39:15 - INFO - 127.0.0.1:40138->127.0.0.1:3307:select @@version_comment limit 1
2015/07/29 07:39:15 - INFO - 127.0.0.1:40138->127.0.0.1:3308:insert into test_shard_hash_0004(id, str, f, e, u, i) values (4, 'abc4', 3.14, 'test4', 255, -127)
2015/07/29 07:39:15 - INFO - 127.0.0.1:40139->127.0.0.1:3307:select @@version_comment limit 1
2015/07/29 07:39:15 - INFO - 127.0.0.1:40139->127.0.0.1:3308:insert into test_shard_hash_0005(id, str, f, e, u, i) values (5, 'abc5', 3.14, 'test5', 255, -127)
2015/07/29 07:39:15 - INFO - 127.0.0.1:40140->127.0.0.1:3307:select @@version_comment limit 1
2015/07/29 07:39:15 - INFO - 127.0.0.1:40140->127.0.0.1:3308:insert into test_shard_hash_0006(id, str, f, e, u, i) values (6, 'abc6', 3.14, 'test6', 255, -127)
2015/07/29 07:39:15 - INFO - 127.0.0.1:40141->127.0.0.1:3307:select @@version_comment limit 1
2015/07/29 07:39:15 - INFO - 127.0.0.1:40141->127.0.0.1:3308:insert into test_shard_hash_0007(id, str, f, e, u, i) values (7, 'abc7', 3.14, 'test7', 255, -127)
2015/07/29 07:39:15 - INFO - 127.0.0.1:40142->127.0.0.1:3307:select @@version_comment limit 1
2015/07/29 07:39:15 - INFO - 127.0.0.1:40142->127.0.0.1:3307:insert into test_shard_hash_0000(id, str, f, e, u, i) values (8, 'abc8', 3.14, 'test8', 255, -127)
2015/07/29 07:39:15 - INFO - 127.0.0.1:40143->127.0.0.1:3307:select @@version_comment limit 1
2015/07/29 07:39:15 - INFO - 127.0.0.1:40143->127.0.0.1:3307:insert into test_shard_hash_0001(id, str, f, e, u, i) values (9, 'abc9', 3.14, 'test9', 255, -127)
2015/07/29 07:39:15 - INFO - 127.0.0.1:40144->127.0.0.1:3307:select @@version_comment limit 1
2015/07/29 07:39:15 - INFO - 127.0.0.1:40144->127.0.0.1:3307:insert into test_shard_hash_0002(id, str, f, e, u, i) values (10, 'abc10', 3.14, 'test10', 255, -127)

 
通過kingshard的日志可以看到數(shù)據(jù)插入時根據(jù)不同的hash值,插入到不同的子表里面去了。


查看數(shù)據(jù)

[root@testnode kingshard]# mysql -h 127.0.0.1 -P 9696 -u kingshard -pkingshard -e "select * from test_shard_hash where id in (2, 3, 4, 5)"
+----+------+------+-------+------+------+------+
| id | str | f  | e   | u  | i  | ni  |
+----+------+------+-------+------+------+------+
| 2 | abc2 | 3.14 | test2 | 255 | -127 | NULL |
| 3 | abc3 | 3.14 |    | 255 | -127 | NULL |
| 4 | abc4 | 3.14 |    | 255 | -127 | NULL |
| 5 | abc5 | 3.14 |    | 255 | -127 | NULL |
+----+------+------+-------+------+------+------+

 
注意kingshard不支持 select * from test_hard_hash查詢, 只支持帶條件的查詢。

相關(guān)文章

  • macOS 下的 MySQL 8.0.17 安裝與簡易配置教程圖解

    macOS 下的 MySQL 8.0.17 安裝與簡易配置教程圖解

    這篇文章主要介紹了macOS 下的 MySQL 8.0.17 安裝與簡易配置教程,本文圖文并茂給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-09-09
  • Mysql數(shù)據(jù)庫中數(shù)字相減 出現(xiàn)負數(shù)時sql 語句報錯的問題

    Mysql數(shù)據(jù)庫中數(shù)字相減 出現(xiàn)負數(shù)時sql 語句報錯的問題

    這篇文章主要介紹了Mysql數(shù)據(jù)庫中數(shù)字相減 出現(xiàn)負數(shù)時sql 語句報錯的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • MySQL基礎(chǔ)教程之DML語句詳解

    MySQL基礎(chǔ)教程之DML語句詳解

    DML 語句是指對數(shù)據(jù)庫中表的記錄進行的操作,下面這篇文章主要給大家介紹了關(guān)于MySQL基礎(chǔ)教程之DML語句的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2021-12-12
  • mysql decimal數(shù)據(jù)類型轉(zhuǎn)換的實現(xiàn)

    mysql decimal數(shù)據(jù)類型轉(zhuǎn)換的實現(xiàn)

    這篇文章主要介紹了mysql decimal數(shù)據(jù)類型轉(zhuǎn)換的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • mysql缺少my.ini文件的解決方法

    mysql缺少my.ini文件的解決方法

    使用的這么長時間的mysql,有一天我突然需要使用mysql?的配置文件my.ini時發(fā)現(xiàn)沒有這個文件并且這個文件不是被隱藏了,所以本文給大家介紹了mysql缺少my.ini文件的解決方法,需要的朋友可以參考下
    2023-12-12
  • Linux下mysql5.6.33安裝配置教程

    Linux下mysql5.6.33安裝配置教程

    這篇文章主要為大家詳細介紹了Linux下mysql5.6.33安裝配置方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • Mysql中的NULL和Empty String

    Mysql中的NULL和Empty String

    這篇文章主要介紹了Mysql中的NULL和Empty String知識,需要的朋友可以參考下
    2017-12-12
  • MYSQL字符集設(shè)置的方法詳解(終端的字符集)

    MYSQL字符集設(shè)置的方法詳解(終端的字符集)

    這篇文章主要給大家介紹了關(guān)于MYSQL字符集設(shè)置(終端的字符集)的相關(guān)資料,文中通過圖文介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • mysql如何查詢當(dāng)前數(shù)據(jù)庫中不為空的表

    mysql如何查詢當(dāng)前數(shù)據(jù)庫中不為空的表

    這篇文章主要介紹了mysql如何查詢當(dāng)前數(shù)據(jù)庫中不為空的表問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • MYSQL數(shù)據(jù)庫主從同步設(shè)置的實現(xiàn)步驟

    MYSQL數(shù)據(jù)庫主從同步設(shè)置的實現(xiàn)步驟

    本文主要介紹了MYSQL數(shù)據(jù)庫主從同步設(shè)置的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03

最新評論