设为首页 收藏本站
查看: 1339|回复: 0

[经验分享] Xtradb+Haproxy高可用数据库集群(一)xtradb部署篇

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-8-13 09:53:16 | 显示全部楼层 |阅读模式
部署xtradb cluster时,建议使用3台及以上服务器。原因有二:
  1、默认情况下,如果一个同伴死去或者两个节点之间的通信不稳定,两个节点都将不接受查询。当然这个可以通过添加忽略仲裁来解决:
set globalwsrep_provider_options=”pc.ignore_quorum=true”;

  2、当宕掉的那台启动时,会进行同步,负责提供数据的节点角色变为Donor, Donor会有一定的时间无法写入。断开情况如下:
    Mysqldump        适合小库
    Rsync             复制时间内断开,速度快
    XtraBackup        短时间内断开,速度略慢

节点信息
node #1
hostname:percona1
IP:192.168.70.71

node #2
hostname:percona2
IP:192.168.70.72

node #3
hostname:percona3
IP:192.168.70.73

前提条件:
三个节点都安装了centos系统
   防火墙放通了端口:3306,4444,4567和4568
   关闭selinux

安装percona xtradb集群先安装percona官方源
安装epel源,以便安装依赖包socat
安装xtradb
yum installPercona-XtraDB-Cluster-56

官网安装参考地址:
https://www.percona.com/doc/percona-xtradb-cluster/5.6/installation/yum_repo.html

配置节点官网参考地址:
https://www.percona.com/doc/percona-xtradb-cluster/5.6/howtos/virt_sandbox.html

配置第一个节点第一个节点的/etc/my.cnf配置内容如下:
[mysqld]

datadir=/var/lib/mysql
user=mysql

# Path to Galeralibrary
wsrep_provider=/usr/lib64/libgalera_smm.so

# Clusterconnection URL contains the IPs of node#1, node#2 and node#3
wsrep_cluster_address=gcomm://192.168.70.71,192.168.70.72,192.168.70.73

# In order forGalera to work correctly binlog format should be ROW
binlog_format=ROW

# MyISAM storageengine has only experimental support
default_storage_engine=InnoDB

# This changeshow InnoDB autoincrement locks are managed and is a requirement for Galera
innodb_autoinc_lock_mode=2

# Node #1address
wsrep_node_address=192.168.70.71

# SST method
wsrep_sst_method=xtrabackup-v2

# Cluster name
wsrep_cluster_name=my_centos_cluster

# Authenticationfor SST method
wsrep_sst_auth="sstuser:s3cret"

在此之后,第一个节点可以启动以下命令:
[iyunv@percona1 ~]#/etc/init.d/mysql bootstrap-pxc
如果在centos7上运行本教程,系统服务如下:
[iyunv@percona1 ~]#  systemctl start mysql@bootstrap.service

此命令将启动集群初步wsrep_cluster_address设置为gcomm://。这样的集群将自举以防后面的节点或MySQL重新开始,这不需要改变该配置文件。

第一个节点启动后,集群状态检测:
mysql> show status like 'wsrep%';
+----------------------------+--------------------------------------+
| Variable_name              |Value                                |
+----------------------------+--------------------------------------+
| wsrep_local_state_uuid     | c2883338-834d-11e2-0800-03c9c68e41ec |
...
| wsrep_local_state          | 4                                    |
| wsrep_local_state_comment  | Synced                               |
...
| wsrep_cluster_size         | 1                                    |
| wsrep_cluster_status       | Primary                              |
| wsrep_connected            |ON                                   |
...
| wsrep_ready                |ON                                   |
+----------------------------+--------------------------------------+
40 rows in set (0.01 sec)
该输出显示集群已成功自举


修改root密码,以及删除空用户
UPDATE mysql.user SET password=PASSWORD("Passw0rd")where user='root';
delete from mysql.user whereuser='';
FLUSH PRIVILEGES;


为了使xtrabackup成功建立快照,需要给新用户建立适当的权限。
mysql@percona1> CREATE USER'sstuser'@'localhost' IDENTIFIED BY 's3cret';
mysql@percona1> GRANT RELOAD,LOCK TABLES, REPLICATION CLIENT ON *.* TO 'sstuser'@'localhost';
mysql@percona1> FLUSH PRIVILEGES;
注:MySQL的root账户也可用于建立PerconaXtrabackup的SST,但建议使用不同用户做这一点。

配置第二个节点第二个节点的/etc/my.cnf配置内容如下:

[mysqld]

datadir=/var/lib/mysql
user=mysql

# Path to Galera library
wsrep_provider=/usr/lib64/libgalera_smm.so

# Cluster connection URLcontains IPs of node#1, node#2 and node#3
wsrep_cluster_address=gcomm://192.168.70.71,192.168.70.72,192.168.70.73

# In order for Galera to workcorrectly binlog format should be ROW
binlog_format=ROW

# MyISAM storage engine hasonly experimental support
default_storage_engine=InnoDB

# This changes how InnoDBautoincrement locks are managed and is a requirement for Galera
innodb_autoinc_lock_mode=2

# Node #2 address
wsrep_node_address=192.168.70.72

# Cluster name
wsrep_cluster_name=my_centos_cluster

# SST method
wsrep_sst_method=xtrabackup-v2

#Authentication for SSTmethod
wsrep_sst_auth="sstuser:s3cret"

第二个节点的启动命令
/etc/init.d/mysql start

服务器已经启动后,它会自动接收状态快照传送。因此,第二个节点不会有空root密码了。


这是第二个节点的状态
mysql> show status like 'wsrep%';
+----------------------------+--------------------------------------+
| Variable_name             | Value                               |
+----------------------------+--------------------------------------+
| wsrep_local_state_uuid    | c2883338-834d-11e2-0800-03c9c68e41ec |
...
| wsrep_local_state         | 4                                   |
| wsrep_local_state_comment | Synced                              |
...
| wsrep_cluster_size        | 2                                   |
| wsrep_cluster_status      | Primary                             |
| wsrep_connected           | ON                                  |
...
| wsrep_ready               | ON                                  |
+----------------------------+--------------------------------------+
40 rows in set (0.01 sec)


配置第三个节点第三个节点的/etc/my.cnf配置文件
[mysqld]

datadir=/var/lib/mysql
user=mysql

# Path to Galera library
wsrep_provider=/usr/lib64/libgalera_smm.so

# Cluster connection URLcontains IPs of node#1, node#2 and node#3
wsrep_cluster_address=gcomm://192.168.70.71,192.168.70.72,192.168.70.73

# In order for Galera to workcorrectly binlog format should be ROW
binlog_format=ROW

# MyISAM storage engine hasonly experimental support
default_storage_engine=InnoDB

# This changes how InnoDBautoincrement locks are managed and is a requirement for Galera
innodb_autoinc_lock_mode=2

# Node #3 address
wsrep_node_address=192.168.70.73

# Cluster name
wsrep_cluster_name=my_centos_cluster

# SST method
wsrep_sst_method=xtrabackup-v2

#Authentication for SSTmethod
wsrep_sst_auth="sstuser:s3cret"

然后启动节点
/etc/init.d/mysql start

服务器已经启动后,它会自动接收状态快照传送。

集群状态查看:
mysql> show status like 'wsrep%';
+----------------------------+--------------------------------------+
| Variable_name             | Value                               |
+----------------------------+--------------------------------------+
| wsrep_local_state_uuid    | c2883338-834d-11e2-0800-03c9c68e41ec |
...
| wsrep_local_state         | 4                                   |
| wsrep_local_state_comment | Synced                              |
...
| wsrep_cluster_size        | 3                                   |
| wsrep_cluster_status      | Primary                             |
| wsrep_connected           | ON                                  |
...
| wsrep_ready               | ON                                  |
+----------------------------+--------------------------------------+
40 rows in set (0.01 sec)
该输出证实了第三个节点加入集群。

测试复制
在节点2上创建数据库
mysql@percona2> CREATE DATABASE percona;
Query OK, 1row affected(0.01 sec)

在节点3上创建表
mysql@percona3> USE percona;
Database changed

mysql@percona3> CREATE TABLE example (node_id INT PRIMARY KEY, node_name VARCHAR(30));
Query OK, 0rows affected(0.05 sec)

在节点1上插入数据
mysql@percona1> INSERT INTO percona.example VALUES (1, 'percona1');
QueryOK, 1 rowaffected (0.02 sec)

在第二个节点上查看数据
mysql@percona2> SELECT * FROM percona.example;
+---------+-----------+
| node_id | node_name |
+---------+-----------+
|       1 | percona1  |
+---------+-----------+
1 row in set (0.00 sec)

集群搭建完成


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-98265-1-1.html 上篇帖子: keepalived配置了 track_scripty以后不管用 下篇帖子: Xtradb+Haproxy高可用数据库集群(二)haproxy负载均衡篇 数据库
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表