Hello,今天领导叫我们架构服务器,也给我们画了一些图告诉我们应该怎么架设。
不多说先上图,这里使用的阿里云的2台经典网络和2台专有网络进行搭建的。大概架构如下图。
一.这里简单的说明下,经典网络和专有网络的区别。
1.经典网络:阿里云统一分配的内网地址和公网地址,不能绑定弹性IP。
2.专有网络:能够绑定弹性IP,自己分配路由和交换机,隔离阿里网段,更加安全。
大概的购买配置是下面这样滴。
关于ClassicLink的配置问题,也就是解决经典网络和专有网络互通的问题,自己去阿里云学习下。这里就不多介绍。
这里贴出一个链接:help.aliyun.com/openSearchKnowledgeList.html
二.配置过程。
这里我们的4台服务器采用的是ubuntu 16.04.
1.我们的预期,是想做到master 为主,slave为从数据库,master里面也加一个redis,web走mater进行客户端交互,console读写分离。
2.redis的安装过程超级简单。
sudo apt-get install redis-server
3.现在来配置主从数据库
这里的列子.
(1).主从配置。
masterIP:192.168.1.22
slaveIP:192.168.2.33
(2).主数据库。
编辑 etc/mysql/mysql.conf.d/mysqld.cnf
bind-address = 192.168.1.22 #your master ip
server-id = 1 #在master-slave架构中,每台机器节点都需要有唯一的
server-id log_bin = /var/log/mysql/mysql-bin.log #开启binlog
重新service mysql restart
登录到数据库。
mysql> CREATE USER 'slave1'@'192.168.2.33' IDENTIFIED BY 'slavepass';
Query OK, 0 rows affected (0.00 sec)
##为slave1赋予REPLICATION SLAVE权限。
mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave1'@'192.168.2.33';
Query OK, 0 rows affected (0.00 sec)
先加上读锁。
。mysql> FLUSH TABLES WITH READ LOCK;
Query OK, 0 rows affected (0.00 sec)
再查看状态信息
mysql> SHOW MASTER STATUS;
如下图
然后再关闭读锁。
UNLOCK TABLES;
再把主数据库的数据dump下来保持主从数据库一直。
mysql -u root -p < /home/ubuntu/dbdump.sql
接着我用filezilla导入slave数据库。
(3).从数据库配置。
编辑 etc/mysql/mysql.conf.d/mysqld.cnf
bind-address = 192.168.2.33 #your slave ip
server-id = 2 #master-slave结构中,唯一的
server-id log_bin = /var/log/mysql/mysql-bin.log #开启binlog
然后再重启Mysql service mysql restart
然后再导入刚才从master导入的数据库。
mysql -u root -p < /home/ubuntu/dbdump.sql
(4).建立连接。
mysql> STOP SLAVE;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> CHANGE MASTER TO
-> MASTER_HOST='192.168.1.22',
-> MASTER_USER='slave1',
-> MASTER_PASSWORD='slavepass',
-> MASTER_LOG_FILE='mysql-bin.000001',
-> MASTER_LOG_POS=613;
Query OK, 0 rows affected, 2 warnings (0.01 sec)
mysql> START SLAVE;
Query OK, 0 rows affected (0.00 sec)
(5).一些解释。
MASTER_LOG_FILE='mysql-bin.000001'与MASTER_LOG_POS=613的值,是从上面的SHOW MASTER STATUS得到的。
OK了。
(6).最后可以把从数据库里面slave1这个权限设置成只读权限。
msyql>grant select on laravel.* to slave1@ 192.168.1.22 ’’
这里的laravel就是主数据库建立过来,然后从数据库用slave1进行只能select查询就OK了。
(7).附上原文链接。