准备环境

节点 IP
db1 192.168.100.10
db2 192.168.100.30
mycat 192.168.100.50

配置过程

  1. # 主机名
  2. [root@localhost ~]# hostnamectl set-hostname mycat
  3. [root@localhost ~]# su
  4. # 配置hosts文件
  5. [root@mycat ~]# vim /etc/hosts
  6. 192.168.100.50 mycat
  7. 192.168.100.10 db1
  8. 192.168.100.30 db2
  9. # 配置本地yum源
  10. [root@mycat ~]# mv /etc/yum.repos.d/* /media/
  11. [root@mycat ~]# vim /etc/yum.repos.d/local.repo
  12. [mariadb]
  13. name=mariadb
  14. baseurl=file:///opt/gpmall-repo
  15. gpgcheck=0
  16. enabled=1
  17. [centos]
  18. name=centos
  19. baseurl=file:///opt/centos
  20. gpgcheck=0
  21. enabled=1
  22. [root@mycat ~]# mount /opt/CentOS-7-x86_64-DVD-1511.iso /opt/centos/
  23. mount: /dev/loop0 is write-protected, mounting read-only
  24. # 安装jdk
  25. [root@mycat ~]# yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel
  26. [root@mycat ~]# java -version
  27. openjdk version "1.8.0_222"
  28. OpenJDK Runtime Environment (build 1.8.0_222-b10)
  29. OpenJDK 64-Bit Server VM (build 25.222-b10, mixed mode)
  30. # db1、db2节点授权
  31. mysql> grant all privileges on *.* to root@'%' identified by "000000";
  32. Query OK, 0 rows affected (0.00 sec)
  33. # 安装mycat
  34. [root@mycat ~]# tar -zxf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /usr/local/
  35. [root@mycat ~]# chmod -R 777 /usr/local/mycat
  36. [root@mycat ~]# echo export MYCAT_HOME=/usr/local/mycat/ >> /etc/profile
  37. [root@mycat ~]# source /etc/profile
  38. # 修改配置文件
  39. [root@mycat ~]# vim /usr/local/mycat/conf/schema.xml
  40. <?xml version="1.0"?>
  41. <!DOCTYPE mycat:schema SYSTEM "schema.dtd">
  42. <mycat:schema xmlns:mycat="http://io.mycat/">
  43. <schema name="USERDB" checkSQLschema="true" sqlMaxLimit="100" dataNode="dn1"></schema>
  44. <dataNode name="dn1" dataHost="localhost1" database="test" />
  45. <dataHost name="localhost1" maxCon="1000" minCon="10" balance="3" dbType="mysql" dbDriver="native" writeType="0" switchType="1" slaveThreshold="100">
  46. <heartbeat>select user()</heartbeat>
  47. <writeHost host="hostM1" url="192.168.100.10:3306" user="root" password="000000">
  48. <readHost host="hostS1" url="192.168.100.50:3306" user="root" password="000000" />
  49. </writeHost>
  50. </dataHost>
  51. </mycat:schema>
  52. # 80行左右修改
  53. [root@mycat ~]# chown root:root /usr/local/mycat/conf/schema.xml
  54. <property name="password">000000</property>
  55. <property name="schemas">USERDB</property>
  56. # 最下面删除
  57. [root@mycat ~]# /usr/local/mycat/bin/mycat start
  58. Starting Mycat-server...
  59. [root@mycat ~]# netstat -ntlp
  60. Active Internet connections (only servers)
  61. Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
  62. tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1095/sshd
  63. tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2221/master
  64. tcp 0 0 127.0.0.1:32000 0.0.0.0:* LISTEN 12070/java
  65. tcp6 0 0 :::9066 :::* LISTEN 12070/java
  66. tcp6 0 0 :::59094 :::* LISTEN 12070/java
  67. tcp6 0 0 :::22 :::* LISTEN 1095/sshd
  68. tcp6 0 0 ::1:25 :::* LISTEN 2221/master
  69. tcp6 0 0 :::1984 :::* LISTEN 12070/java
  70. tcp6 0 0 :::8066 :::* LISTEN 12070/java
  71. tcp6 0 0 :::38310 :::* LISTEN 12070/java
  72. # 测试
  73. [root@mycat mycat]# yum install -y MariaDB-client
  74. [root@mycat mycat]# mysql -h127.0.0.1 -P8066 -uroot -p000000
  75. MySQL [(none)]> show databases
  76. -> ;
  77. +----------+
  78. | DATABASE |
  79. +----------+
  80. | USERDB |
  81. +----------+
  82. 1 row in set (0.002 sec)
  83. MySQL [(none)]> use USERDB
  84. Database changed
  85. MySQL [USERDB]> create table company(id int not null primary key,name varchar(50),addr varchar(255));
  86. Query OK, 0 rows affected (0.180 sec)
  87. MySQL [USERDB]> show tables;
  88. +----------------+
  89. | Tables_in_test |
  90. +----------------+
  91. | company |
  92. +----------------+
  93. 1 row in set (0.002 sec)
  94. MySQL [USERDB]> insert into company values(1,"facebook","usa");
  95. Query OK, 1 row affected (0.040 sec)
  96. MySQL [USERDB]> select * from company
  97. -> ;
  98. +----+----------+------+
  99. | id | name | addr |
  100. +----+----------+------+
  101. | 1 | facebook | usa |
  102. +----+----------+------+
  103. 1 row in set (0.048 sec)
  104. [root@mycat ~]# mysql -h127.0.0.1 -P9066 -uroot -p000000 -e 'show @@datasource;'
  105. +----------+--------+-------+----------------+------+------+--------+------+------+---------+-----------+------------+
  106. | DATANODE | NAME | TYPE | HOST | PORT | W/R | ACTIVE | IDLE | SIZE | EXECUTE | READ_LOAD | WRITE_LOAD |
  107. +----------+--------+-------+----------------+------+------+--------+------+------+---------+-----------+------------+
  108. | dn1 | hostM1 | mysql | 192.168.100.10 | 3306 | W | 0 | 10 | 1000 | 116 | 0 | 2 |
  109. | dn1 | hostS1 | mysql | 192.168.100.30 | 3306 | R | 0 | 7 | 1000 | 115 | 4 | 0 |
  110. +----------+--------+-------+----------------+------+------+--------+------+------+---------+-----------+------------+

至此,读写分离配置结束