基礎環境
關閉防火牆selinux
systemctl stop firewalld
setenforce 0
(1)修改主機名
# hostnamectl set-hostname db1
# hostnamectl set-hostname db2
# hostnamectl set-hostname mycat
(2)修改主機映射檔案
[root@db1 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.200.33 db1
192.168.200.44 db2
192.168.200.55 mycat
(3)配置yum源
[root@db1 ~]# cat /etc/yum.repos.d/local.repo
[mariadb]
name=mariadb
baseurl=file:///opt/gpmall-repo
gpgcheck=0
enabled=1
[centos]
name=centos
baseurl=file:///opt/centos
mycat節點
1.安裝java環境
# yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel -y
2.關閉防火牆
iptables -F
iptables -X
iptables -Z
iptables-save
db1和db2節點安裝mariadb服務
# yum install mariadb mariadb-server -y
# systemctl start mariadb && systemctl enable mariadb
初始化mariadb資料庫并設定密碼123456
# mysql_secure_installation
配置主節點db1虛拟機的資料庫配置檔案my.cnf
# vi /etc/my.cnf
[mysqld]
log_bin = mysql-bin #記錄記錄檔
binlog_ignore_db = mysql #不同步 MySQL 系統資料庫
server_id = 18 #資料庫叢集中的每個節點 id 都要不同,一
般使用 IP 位址的最後段的數字,例如 172.16.51.18,server_id 就寫 18
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
重新開機服務
systemctl restart mariadb
開放主節點db1的資料庫權限
在主節點 db1 虛拟機上使用 mysql 指令登入 MariaDB 資料庫,授權在任何用戶端機器上
可以以 root 使用者登入到資料庫。
# mysql -uroot -p123456
grant all privileges on *.* to root@'%' identified by "123456";
在主節點 db1 資料庫上建立一個 user 使用者讓從節點 db2 連接配接,并賦予從節點同步主節點
資料庫的權限,指令如下:
grant replication slave on *.* to 'user'@'db2' identified by '123456';
配置從節點db2同步主節點db1
change master to
master_host='db1',master_user='user',master_password='123456';
配置完畢主從資料庫之間的連接配接資訊之後,開啟從節點服務。使用 show slave status\G; 命 令并檢視從節點服務狀态,如果 Slave_IO_Running 和 Slave_SQL_Running 的狀态都為 YES,從節點服務開啟成功。
start slave;
show slave status\G;
驗證主從資料庫的同步功能
db1的資料庫
create database test;
use test
create table company(id int not null primary key,name varchar(50),addr
varchar(255));
insert into company values(1,"facebook","usa");
db2資料庫驗證
show databases;
select * from test.company;
mycat節點讀寫分離中間件
安裝 Mycat 服務
# tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C
/usr/local/
賦予目錄權限
# chown -R 777 /usr/local/mycat/
在/etc/profile 系統變量檔案中添加 Mycat 服務的系統變量,并生效變量。
# echo export MYCAT_HOME=/usr/local/mycat/ >> /etc/profile
# source /etc/profile
[root@mycat ~]# cat /usr/local/mycat/conf/schema.xml
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="USERDB" checkSQLschema="true" sqlMaxLimit="100"
dataNode="dn1"></schema>
<dataNode name="dn1" dataHost="localhost1" database="test" />
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="3" dbType="mysql"
dbDriver="native" writeType="0" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="hostM1" url="172.16.51.18:3306" user="root" password="123456">
<readHost host="hostS1" url="172.16.51.30:3306" user="root" password="123456"/>
</writeHost>
</dataHost>
</mycat:schema>
[root@mycat ~]# chown root:root /usr/local/mycat/conf/schema.xml
**編輯 mycat 的通路使用者 修改/usr/local/mycat/conf/目錄下的 server.xml 檔案,修改 root 使用者的通路密碼與資料庫, 密碼設定為 123456,通路 Mycat 的邏輯庫為 USERDB,指令如下:
[root@mycat ~]# cat /usr/local/mycat/conf/server.xml
在配置檔案的最後部分,
<user name="root">
<property name="password">123456</property>
<property name="schemas">USERDB</property>
删除如下:
<user name="user">
<property name="password">user</property>
<property name="schemas">TESTDB</property>
<property name="readOnly">true</property>
</user>
啟動mycat服務
[root@mycat ~]# /bin/bash /usr/local/mycat/bin/mycat star
netstat -ntlp
驗證資料庫叢集服務讀寫分離功能 (1)用 Mycat 服務查詢資料庫資訊 先在 Mycat 虛拟機上使用 Yum 安裝 mariadb-client 服務。
[root@mycat ~]# yum install -y MariaDB-client
在 Mycat 虛拟機上使用 mysql 指令檢視 Mycat 服務的邏輯庫 USERDB,因為 Mycat 的邏 輯庫 USERDB 對應資料庫 test(在部署主從資料庫時已安裝),是以可以檢視庫中已經建立的 表 company。指令如下。
[root@mycat ~]# mysql -h127.0.0.1 -P8066 -uroot -p123456
use USERDB
show tables;
insert into company values(2,"bastetball","usa");
select * from company;
驗證 Mycat 服務對資料庫讀寫操作分離
[root@mycat ~]# mysql -h127.0.0.1 -P9066 -uroot -p123456 -e 'show @@datasource;'