在此次配置中,由于资源有限,我只配置了两台阿里云服务器,如果再加服务器的话,和添加第二台的步骤一样。
(1)配置环境
两台阿里云服务器,服务器系统版本为Ubuntu16.04
服务器IP:
172.17.252.31
172.17.226.181
两台服务器上都装有mysql5.6
(2)安装过程
0.准备工作
可以开放阿里云服务器的22端口,然后输入命令
ssh root@IP
连接阿里云,在本地的终端上方便的对服务器进行一系列操作
1.添加必要依赖
apt-get install python-software-properties
apt-get install software-properties-common
如果安装不成功的话可以试一试执行命令sudo apt-get update
2.添加存储库密钥
为了保证软件包可信,需添加存储库密钥用于验证,命令如下:
apt-key adv --keyserver keyserver.ubuntu.com --recv BC19DDBA
然后使用
apt-get update
来更新apt包管理清单
3.添加Galera存储库
cd /etc/apt/sources.list.d
vim galera.list
在gelera.list文件中添加以下库内容:
deb http://releases.galeracluster.com/mysql-wsrep-5.6/ubuntu xenial main
deb http://releases.galeracluster.com/galera-3/ubuntu xenial main
4.继续配置源
cd /etc/apt/preferences.d
vim galera.pref
在galera.pref文件中添加如下配置:
Package: *
Pin: origin releases.galeracluster.com
Pin-Priority: 1001
之后再执行
apt-get update
5.在所有服务器上安装Mysql和Galera
sudo apt-get install galera-3 galera-arbitrator-3 mysql-wsrep-5.6
在安装过程中会为数据库设置密码
安装rsync依赖
sudo apt-get install rsync
(3)配置过程
1.在主节点172.17.252.31上设置如下:
cd /etc
vim my.cnf
在该文件中添加以下的内容:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
binlog_format=ROW
bind-address=0.0.0.0
#bind-address=127.0.0.1
default_storage_engine=innodb
innodb_autoinc_lock_mode=2
innodb_flush_log_at_trx_commit=0
innodb_buffer_pool_size=122M
wsrep_provider=/usr/lib/libgalera_smm.so
wsrep_provider_options="gcache.size=300M; gcache.page_size=300M"
wsrep_cluster_name="mycluster"
wsrep_cluster_address="gcomm://172.17.226.181,172.17.252.31"
wsrep_sst_method=rsync
[mysql_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[mysqld]
wsrep_cluster_name="mycluster"
wsrep_cluster_address="gcomm://172.17.226.181,172.17.252.31"
wsrep_node_name="mynode133"#是否加引号?
wsrep_node_address="172.17.226.181"#主节点IP
2.在第二个节点上设置如下:
cd /etc
vim my.cnf
在该文件中添加以下的内容:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
binlog_format=ROW
bind-address=0.0.0.0
#bind-address=127.0.0.1
default_storage_engine=innodb
innodb_autoinc_lock_mode=2
innodb_flush_log_at_trx_commit=0
innodb_buffer_pool_size=122M
wsrep_provider=/usr/lib/libgalera_smm.so
wsrep_provider_options="gcache.size=300M; gcache.page_size=300M"
wsrep_cluster_name="mycluster"
wsrep_cluster_address="gcomm://172.17.226.181,172.17.252.31"
wsrep_sst_method=rsync
[mysql_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[mysqld]
wsrep_cluster_name="mycluster"
wsrep_cluster_address="gcomm://172.17.226.181,172.17.252.31"
wsrep_node_name="mynode132"#是否加引号?
wsrep_node_address="172.17.252.31"#主节点IP
(4)启动集群
在所有服务器上执行一下命令来停止Mysql:
sudo systemctl stop mysql
执行以下的命令来显示数据库现在的状态:
sudo systemctl status mysql
显示状态为inactive,就说明数据库关闭成功。
1.打开主节点
sudo /etc/init.d/mysql start --wsrep-new-cluster
此命令运行结束之后,主节点注册成为集群的一部分,可以使用一下命令来查看:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"
输出如下所示:
+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| wsrep_cluster_size | 1 |
+--------------------+-------+
2.打开第二个节点
启动Mysql:
sudo systemctl start mysql
再执行以下命令:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"
随着每个节点上线,簇的大小会发生变化:
+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| wsrep_cluster_size | 2 |
+--------------------+-------+
(5)测试复制
先在第一个节点创建一个表,并写入数据
mysql -u root -p -e 'CREATE DATABASE playground;
CREATE TABLE playground.equipment ( id INT NOT NULL AUTO_INCREMENT, type VARCHAR(50), quant INT, color VARCHAR(25), PRIMARY KEY(id));
INSERT INTO playground.equipment (type, quant, color) VALUES ("slide", 2, "blue");'
在第二个节点上可以读取上述写入的值:
mysql -u root -p -e 'SELECT * FROM playground.equipment;'
如果复制正常的话,会有如下的结果:
+----+-------+-------+-------+
| id | type | quant | color |
+----+-------+-------+-------+
| 1 | slide | 2 | blue |
+----+-------+-------+-------+
至此,一个小小的集群就搭建完毕了。