环境说明
本文仅作为最小实验环境,因此不使用master, slave模式. 单机上使用mysql_mutil运行二个mysql实列
初始化数据目录
# 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 |
修改根据自己的需求修改mysqld_multi.conf
例:
[mysqld_multi]mysqld = /usr/bin/mysqld_safemysqladmin = /usr/bin/mysqladminuser = multi_adminpassword = my_password [mysqld2]socket = /var/lib/mysql2/mysql.sock2port = 3307pid-file = /var/lib/mysql2/hostname.pid2datadir = /var/lib/mysql2#language = /usr/share/mysql/englishuser = unix_user1 [mysqld3]socket = /var/lib/mysql3/mysql.sock3port = 3308pid-file = /var/lib/mysql3/hostname.pid3datadir = /var/lib/mysql3#language = /usr/share/mysql/swedishuser = 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对应conf配置文件 mysqld2、mysqld3,以此来区分。
查看实例状态
[root@testnode kingshard]# mysqld_multi --defaults-extra-file=./mysqld_multi.conf report |
Reporting MySQL serversMySQL server from group: mysqld2 is runningMySQL server from group: mysqld3 is running |
安装Kingshard
1.安装Go语言环境,具体步骤请Google。
git clone https://github.com/flike/kingshard.git src/github.com/flike/kingshardcd src/github.com/flike/kingshardsource ./dev.shmake |
设置配置文件
运行kingshard。
./bin/kingshard -config=etc/multi.yaml |
2.配置文件说明
# kingshard的地址和端口addr : 127.0.0.1:9696 # 连接kingshard的用户名和密码user : kingshardpassword : kingshard # log级别,[debug|info|warn|error],默认是errorlog_level : debug# 只允许下面的IP列表连接kingshardallow_ips: 127.0.0.1 # 一个node节点表示mysql集群的一个数据分片,包括一主多从(可以不配置从库)nodes : #node节点名字 name : node1 # 连接池中默认的空闲连接数 idle_conns : 16 # kingshard连接该node中mysql的用户名和密码,master和slave的用户名和密码必须一致 user : kingshard password : kingshard # master的地址和端口 master : 127.0.0.1:3306 # slave的地址和端口,可不配置 slave : #kingshard在300秒内都连接不上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 # 分表规则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 |