来源:未知 时间:2015-12-16 15:03 作者:xxadmin 阅读:次
[导读] 集群介绍: Galera是一个MySQL(也支持MariaDB,Percona)的同步多主集群软件,目前只支持InnoDB引擎。 主要功能: 同步复制 真正的multi-master,即所有节点可以同时读写数据库 自动的节点成员...
集群介绍: Galera是一个MySQL(也支持MariaDB,Percona)的同步多主集群软件,目前只支持InnoDB引擎。 主要功能: 同步复制 真正的multi-master,即所有节点可以同时读写数据库 自动的节点成员控制,失效节点自动被清除 新节点加入数据自动复制 真正的并行复制,行级 用户可以直接连接集群,使用感受上与MySQL完全一致 优势: 因为是多主,所以不存在Slave lag(延迟) 不存在丢失交易的情况 同时具有读和写的扩展能力 更小的客户端延迟 节点间数据是同步的,而Master/Slave模式是异步的,不同slave上的binlog可能是不同的 实现技术: Galera集群的复制功能基于Galera library实现,为了让MySQL与Galera library通讯,特别针对MySQL开发了wsrep API。
实践操作:负载均衡集群搭建
1 .下载mariadb集群 wget http://mirrors.opencas.cn/mariadb/mariadb-galera-10.0.17/bintar-linux-x86_64/mariadb-galera-10.0.17-linux-x86_64.tar.gz 2. 添加mariadb用户和组 groupadd mariadb useradd -g mariadb mariadb 3. 将下载的文件拷贝到目录/usr/src下 4. 解压并拷贝解压后的文件到/usr/local/mysql下 root@ubuntu:/usr/src# tar -zxvf mariadb-galera-10.0.17-linux-x86_64.tar.gz root@ubuntu:/usr/local# cp -R mariadb-galera-10.0.17-linux-x86_64 /usr/local/mysql 5. 修改文件夹的所属用户和组 root@ubuntu:/usr/local# chown -R mariadb:mariadb mysql/ 6. 安装mariadb字典数据库,确保数据库安装成功 mariadb@ubuntu:/usr/local/mysql$ ./scripts/mysql_install_db 在数据库中创建一个专门用来在各节点间进行复制的节点 7. 配置集群中节点1的启动参数文件,my1.cnf 主要在[mysqld]选项下面,加入如下配置: log-bin=mysql-bin binlog_format = ROW server-id = 1 innodb_autoinc_lock_mode = 2 wsrep_provider = /usr/local/mysql/lib/libgalera_smm.so wsrep_cluster_name = "my_mariadb_cluster" wsrep_cluster_address="gcomm://" wsrep_node_name = "cluster_node1" wsrep_node_address = 127.0.0.1:4406 启动节点1: ./bin/mysqld --defaults-file=my1.cnf --wsrep-new-cluster 8. 配置集群中节点2的启动参数文件,my2.cnf 主要在[mysqld]选项下面,加入如下配置: log-bin=mysql-bin binlog_format = ROW datadir = /usr/local/mysql/data1 server-id = 2 innodb_autoinc_lock_mode = 2 wsrep_provider = /usr/local/mysql/lib/libgalera_smm.so wsrep_cluster_name = "my_mariadb_cluster" wsrep_cluster_address="gcomm://127.0.0.1:4406" wsrep_node_name = "cluster_node2" wsrep_node_address = 127.0.0.1:4407 9. 配置集群中节点3的启动参数文件,my3.cnf 主要在[mysqld]选项下面,加入如下配置: log-bin=mysql-bin binlog_format = ROW datadir = /usr/local/mysql/data2 server-id = 3 innodb_autoinc_lock_mode = 2 wsrep_provider = /usr/local/mysql/lib/libgalera_smm.so wsrep_cluster_name = "my_mariadb_cluster" wsrep_cluster_address="gcomm://127.0.0.1:4407" wsrep_node_name = "cluster_node3" wsrep_node_address = 127.0.0.1:4408
10. 检查并测试集群是否启动成功 观察命令show status like 'wsrep%'; 的输出信息,看是否有3个节点。 连接到集群中的任何一个节点: ./bin/mysql --host 127.0.0.1 --port 3307 -umycluster -p123456 在test数据库下创建一个表goods create table goods (id int(11) not null, name varchar(20)); 插入一条记录: insert into goods(id,name) value(1,'iphone7'); 然后登录到另外一个节点检查刚才创建的表和记录是否存在: ./bin/mysql --host 127.0.0.1 --port 3306 -umycluster -p12345 MariaDB [test]> select * from goods; +----+---------+ | id | name | +----+---------+ | 1 | iphone7 | +----+---------+ 我们看到记录已经存在,再次证明集群已经搭配好。 11.配置haproxy 下载:wget http://down1.chinaunix.net/distfiles/haproxy-1.4.21.tar.gz 编译:make TARGET=linux26 PREFIX=/usr/local/haproxy 安装:make install PREFIX=/usr/local/haproxy 在/usr/local/haproxy下添加配置文件haproxy.cfg 修改配置文件内容如下: global log 127.0.0.1 local0 log 127.0.0.1 local1 notice #log loghost local0 info maxconn 4096 user haproxy #所属运行的用户 group haproxy #所属运行的组 nbproc 1 pidfile /usr/local/haproxy/haproxy1.pid #debug #quiet defaults log global option tcplog option dontlognull retries 3 option redispatch maxconn 4096 timeout connect 50000ms timeout client 50000ms timeout server 50000ms listen mariadb-galera bind 127.0.0.1:3399 #客户端监听端口 mode tcp balance leastconn #最少连接的负载均衡算法 server db1 127.0.0.1:3306 check server db1 127.0.0.1:3307 check server db1 127.0.0.1:3308 check 启动haproxy: ./sbin/haproxy -f haproxy.cfg 根据最少连接的负载均衡算法,haproxy将读写请求重定向到最少连接的数据库服务器上。 检查haproxy是否配置正确: 先连接上: mariadb@ubuntu:/usr/local/mysql$ ./bin/mysql --host 127.0.0.1 --port 3399 -umycluster -p123456 #注意连接端口为3399,是haproxy服务器的监听端口 插入一条记录试试:insert into goods(id,name) value (2,'lumia'); Query OK, 1 row affected (0.19 sec) 成功,说明haproxy配置ok |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com